@voipsdk/react-native-voipcloud 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +55 -9
- package/android/build.gradle +14 -8
- package/ios/VoipCloud.mm +214 -28
- package/ios/VoipCloud.xcframework/Info.plist +48 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/activesock.h +598 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/addr_resolv.h +189 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/array.h +95 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/assert.h +84 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/assert.h +36 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_armcc.h +57 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_clang.h +64 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_codew.h +55 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_gcc.h +79 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_gcce.h +54 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_msvc.h +87 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_mwcc.h +55 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/ctype.h +44 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/errno.h +44 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/high_precision.h +87 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/limits.h +66 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_alpha.h +35 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_armv4.h +38 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_auto.h +60 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_auto.h.in +59 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_i386.h +34 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_m68k.h +34 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_powerpc.h +35 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_sparc.h +34 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_x86_64.h +35 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/malloc.h +33 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_auto.h +245 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_auto.h.in +244 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_darwinos.h +141 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_linux.h +130 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_palmos.h +118 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_rtems.h +138 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_sunos.h +131 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_symbian.h +166 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_win32.h +148 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_win32_wince.h +145 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_winphone8.h +149 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_winuwp.h +149 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/rand.h +55 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/setjmp.h +49 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/size_t.h +31 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/socket.h +223 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/stdarg.h +31 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/stdfileio.h +31 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/string.h +178 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/time.h +41 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/config.h +1537 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/config_site.h +22 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/config_site_sample.h +485 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/config_site_test.h +11 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/ctype.h +174 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/doxygen.h +995 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/errno.h +593 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/except.h +420 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/fifobuf.h +43 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/file_access.h +108 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/file_io.h +183 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/guid.h +119 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/hash.h +253 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/ioqueue.h +955 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/ip_helper.h +152 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/limits.h +57 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/list.h +268 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/list_i.h +120 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/lock.h +453 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/log.h +487 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/math.h +203 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/os.h +1536 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/pool.h +918 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/pool_alt.h +212 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/pool_buf.h +104 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/pool_i.h +131 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/rand.h +65 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/rbtree.h +215 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/sock.h +1566 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/sock_qos.h +429 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/sock_select.h +151 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/ssl_sock.h +1508 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/string.h +963 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/string_i.h +406 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/timer.h +386 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/types.h +594 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/unicode.h +140 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/file.hpp +187 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/hash.hpp +155 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/list.hpp +351 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/lock.hpp +148 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/os.hpp +869 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/pool.hpp +278 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/proactor.hpp +514 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/scanner.hpp +245 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/sock.hpp +443 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/string.hpp +467 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/timer.hpp +197 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/tree.hpp +128 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/types.hpp +174 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib++.hpp +34 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/base64.h +91 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/cli.h +530 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/cli_console.h +116 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/cli_imp.h +207 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/cli_telnet.h +167 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/config.h +373 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/crc32.h +95 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/dns.h +460 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/dns_server.h +116 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/errno.h +455 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/getopt.h +144 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/hmac_md5.h +108 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/hmac_sha1.h +106 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/http_client.h +493 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/json.h +227 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/md5.h +73 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/pcap.h +195 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/resolver.h +515 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/scanner.h +553 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/scanner_cis_bitwise.h +96 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/scanner_cis_uint.h +83 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/sha1.h +79 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/srv_resolver.h +221 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/string.h +101 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/stun_simple.h +288 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/types.h +94 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/xml.h +248 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util.h +75 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib.h +62 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/alaw_ulaw.h +212 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/audiodev.h +761 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/avi.h +201 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/avi_stream.h +195 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/bidirectional.h +66 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/circbuf.h +436 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/clock.h +338 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/codec.h +1192 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/conference.h +599 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/config.h +1713 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/config_auto.h +43 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/config_auto.h.in +42 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/converter.h +386 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/delaybuf.h +175 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/doxygen.h +243 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/echo.h +420 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/echo_port.h +73 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/endpoint.h +389 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/errno.h +693 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/event.h +493 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/format.h +821 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/frame.h +331 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/g711.h +88 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/jbuf.h +484 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/master_port.h +198 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/mem_port.h +241 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/null_port.h +69 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/plc.h +114 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/port.h +565 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/resample.h +199 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/rtcp.h +511 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/rtcp_fb.h +487 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/rtcp_xr.h +477 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/rtp.h +457 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/sdp.h +830 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/sdp_neg.h +822 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/session.h +435 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/signatures.h +217 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/silencedet.h +199 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/sound.h +353 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/sound_port.h +397 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/splitcomb.h +142 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/stereo.h +203 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/stream.h +541 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/stream_common.h +123 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/symbian_sound_aps.h +47 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/tonegen.h +302 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport.h +1069 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport_adapter_sample.h +75 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport_ice.h +458 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport_loop.h +158 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport_srtp.h +579 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport_udp.h +161 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/types.h +345 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_codec.h +896 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_codec_util.h +194 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_conf.h +310 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_port.h +269 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_stream.h +514 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_tee.h +141 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/videodev.h +859 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/wav_playlist.h +131 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/wav_port.h +342 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/wave.h +183 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/wsola.h +218 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-audiodev/audiodev.h +110 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-audiodev/audiodev_imp.h +187 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-audiodev/audiotest.h +115 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-audiodev/config.h +525 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-audiodev/errno.h +227 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/amr_helper.h +1236 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/amr_sdp_match.h +60 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/and_aud_mediacodec.h +131 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/and_vid_mediacodec.h +77 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/audio_codecs.h +97 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/bcg729.h +120 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/config.h +720 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/config_auto.h +104 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/config_auto.h.in +103 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/ffmpeg_vid_codecs.h +66 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/g722.h +103 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/g7221.h +164 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/g7221_sdp_match.h +58 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/gsm.h +86 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/h263_packetizer.h +145 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/h264_packetizer.h +163 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/ilbc.h +118 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/ipp_codecs.h +321 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/l16.h +83 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/opencore_amr.h +145 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/openh264.h +68 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/opus.h +160 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/passthrough.h +276 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/silk.h +126 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/speex.h +149 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/types.h +145 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/vid_toolbox.h +70 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/vpx.h +68 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/vpx_packetizer.h +123 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec.h +47 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/avi_dev.h +139 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/config.h +326 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/errno.h +158 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/opengl_dev.h +52 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/videodev.h +119 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/videodev_imp.h +229 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia.h +81 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia_audiodev.h +32 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia_videodev.h +30 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/config.h +596 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/errno.h +225 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/ice_session.h +1122 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/ice_strans.h +1112 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/nat_detect.h +233 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_auth.h +456 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_config.h +135 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_msg.h +1856 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_session.h +763 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_sock.h +496 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_transaction.h +291 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/turn_session.h +968 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/turn_sock.h +673 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/types.h +75 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/upnp.h +147 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath.h +46 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/print_util.h +166 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_auth.h +637 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_auth_aka.h +212 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_auth_msg.h +269 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_auth_parser.h +74 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_autoconf.h +39 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_autoconf.h.in +38 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_config.h +1545 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_dialog.h +935 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_endpoint.h +715 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_errno.h +544 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_event.h +230 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_module.h +221 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_msg.h +2134 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_multipart.h +276 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_parser.h +465 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_private.h +31 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_resolve.h +347 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_tel_uri.h +83 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transaction.h +542 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transport.h +1672 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transport_loop.h +146 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transport_tcp.h +300 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transport_tls.h +642 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transport_udp.h +389 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_types.h +265 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_ua_layer.h +159 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_uri.h +470 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_util.h +888 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/errno.h +117 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/evsub.h +561 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/evsub_msg.h +119 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/iscomposing.h +137 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/mwi.h +211 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/pidf.h +177 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/presence.h +416 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/publish.h +350 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/rpid.h +150 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/types.h +30 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/xpidf.h +137 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_100rel.h +244 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_inv.h +1224 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_regc.h +497 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_replaces.h +303 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_timer.h +274 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_xfer.h +207 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip.h +61 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip_auth.h +37 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip_simple.h +45 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip_ua.h +31 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua-lib/pjsua.h +8899 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua-lib/pjsua_internal.h +989 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua.h +1 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/account.hpp +2123 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/call.hpp +2253 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/config.hpp +72 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/doxygen.hpp +48 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/endpoint.hpp +2160 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/json.hpp +115 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/media.hpp +2748 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/persistent.hpp +715 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/presence.hpp +368 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/siptypes.hpp +1013 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/types.hpp +283 -0
- package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2.hpp +28 -0
- package/ios/VoipCloud.xcframework/ios-arm64/libVoipCloud.a +0 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/activesock.h +598 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/addr_resolv.h +189 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/array.h +95 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/assert.h +84 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/assert.h +36 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_armcc.h +57 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_clang.h +64 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_codew.h +55 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_gcc.h +79 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_gcce.h +54 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_msvc.h +87 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_mwcc.h +55 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/ctype.h +44 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/errno.h +44 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/high_precision.h +87 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/limits.h +66 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_alpha.h +35 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_armv4.h +38 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_auto.h +60 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_auto.h.in +59 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_i386.h +34 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_m68k.h +34 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_powerpc.h +35 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_sparc.h +34 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_x86_64.h +35 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/malloc.h +33 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_auto.h +245 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_auto.h.in +244 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_darwinos.h +141 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_linux.h +130 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_palmos.h +118 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_rtems.h +138 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_sunos.h +131 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_symbian.h +166 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_win32.h +148 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_win32_wince.h +145 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_winphone8.h +149 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_winuwp.h +149 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/rand.h +55 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/setjmp.h +49 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/size_t.h +31 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/socket.h +223 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/stdarg.h +31 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/stdfileio.h +31 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/string.h +178 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/time.h +41 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/config.h +1537 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/config_site.h +22 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/config_site_sample.h +485 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/config_site_test.h +11 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/ctype.h +174 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/doxygen.h +995 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/errno.h +593 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/except.h +420 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/fifobuf.h +43 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/file_access.h +108 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/file_io.h +183 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/guid.h +119 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/hash.h +253 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/ioqueue.h +955 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/ip_helper.h +152 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/limits.h +57 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/list.h +268 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/list_i.h +120 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/lock.h +453 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/log.h +487 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/math.h +203 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/os.h +1536 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/pool.h +918 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/pool_alt.h +212 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/pool_buf.h +104 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/pool_i.h +131 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/rand.h +65 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/rbtree.h +215 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/sock.h +1566 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/sock_qos.h +429 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/sock_select.h +151 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/ssl_sock.h +1508 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/string.h +963 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/string_i.h +406 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/timer.h +386 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/types.h +594 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/unicode.h +140 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/file.hpp +187 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/hash.hpp +155 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/list.hpp +351 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/lock.hpp +148 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/os.hpp +869 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/pool.hpp +278 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/proactor.hpp +514 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/scanner.hpp +245 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/sock.hpp +443 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/string.hpp +467 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/timer.hpp +197 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/tree.hpp +128 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/types.hpp +174 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib++.hpp +34 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/base64.h +91 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/cli.h +530 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/cli_console.h +116 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/cli_imp.h +207 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/cli_telnet.h +167 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/config.h +373 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/crc32.h +95 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/dns.h +460 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/dns_server.h +116 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/errno.h +455 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/getopt.h +144 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/hmac_md5.h +108 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/hmac_sha1.h +106 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/http_client.h +493 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/json.h +227 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/md5.h +73 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/pcap.h +195 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/resolver.h +515 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/scanner.h +553 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/scanner_cis_bitwise.h +96 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/scanner_cis_uint.h +83 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/sha1.h +79 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/srv_resolver.h +221 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/string.h +101 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/stun_simple.h +288 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/types.h +94 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/xml.h +248 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util.h +75 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib.h +62 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/alaw_ulaw.h +212 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/audiodev.h +761 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/avi.h +201 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/avi_stream.h +195 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/bidirectional.h +66 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/circbuf.h +436 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/clock.h +338 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/codec.h +1192 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/conference.h +599 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/config.h +1713 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/config_auto.h +43 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/config_auto.h.in +42 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/converter.h +386 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/delaybuf.h +175 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/doxygen.h +243 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/echo.h +420 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/echo_port.h +73 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/endpoint.h +389 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/errno.h +693 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/event.h +493 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/format.h +821 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/frame.h +331 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/g711.h +88 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/jbuf.h +484 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/master_port.h +198 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/mem_port.h +241 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/null_port.h +69 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/plc.h +114 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/port.h +565 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/resample.h +199 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/rtcp.h +511 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/rtcp_fb.h +487 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/rtcp_xr.h +477 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/rtp.h +457 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/sdp.h +830 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/sdp_neg.h +822 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/session.h +435 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/signatures.h +217 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/silencedet.h +199 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/sound.h +353 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/sound_port.h +397 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/splitcomb.h +142 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/stereo.h +203 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/stream.h +541 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/stream_common.h +123 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/symbian_sound_aps.h +47 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/tonegen.h +302 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport.h +1069 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport_adapter_sample.h +75 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport_ice.h +458 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport_loop.h +158 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport_srtp.h +579 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport_udp.h +161 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/types.h +345 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_codec.h +896 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_codec_util.h +194 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_conf.h +310 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_port.h +269 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_stream.h +514 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_tee.h +141 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/videodev.h +859 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/wav_playlist.h +131 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/wav_port.h +342 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/wave.h +183 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/wsola.h +218 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-audiodev/audiodev.h +110 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-audiodev/audiodev_imp.h +187 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-audiodev/audiotest.h +115 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-audiodev/config.h +525 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-audiodev/errno.h +227 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/amr_helper.h +1236 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/amr_sdp_match.h +60 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/and_aud_mediacodec.h +131 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/and_vid_mediacodec.h +77 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/audio_codecs.h +97 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/bcg729.h +120 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/config.h +720 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/config_auto.h +104 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/config_auto.h.in +103 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/ffmpeg_vid_codecs.h +66 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/g722.h +103 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/g7221.h +164 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/g7221_sdp_match.h +58 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/gsm.h +86 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/h263_packetizer.h +145 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/h264_packetizer.h +163 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/ilbc.h +118 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/ipp_codecs.h +321 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/l16.h +83 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/opencore_amr.h +145 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/openh264.h +68 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/opus.h +160 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/passthrough.h +276 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/silk.h +126 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/speex.h +149 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/types.h +145 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/vid_toolbox.h +70 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/vpx.h +68 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/vpx_packetizer.h +123 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec.h +47 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/avi_dev.h +139 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/config.h +326 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/errno.h +158 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/opengl_dev.h +52 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/videodev.h +119 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/videodev_imp.h +229 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia.h +81 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia_audiodev.h +32 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia_videodev.h +30 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/config.h +596 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/errno.h +225 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/ice_session.h +1122 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/ice_strans.h +1112 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/nat_detect.h +233 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_auth.h +456 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_config.h +135 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_msg.h +1856 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_session.h +763 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_sock.h +496 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_transaction.h +291 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/turn_session.h +968 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/turn_sock.h +673 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/types.h +75 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/upnp.h +147 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath.h +46 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/print_util.h +166 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_auth.h +637 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_auth_aka.h +212 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_auth_msg.h +269 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_auth_parser.h +74 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_autoconf.h +39 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_autoconf.h.in +38 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_config.h +1545 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_dialog.h +935 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_endpoint.h +715 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_errno.h +544 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_event.h +230 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_module.h +221 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_msg.h +2134 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_multipart.h +276 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_parser.h +465 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_private.h +31 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_resolve.h +347 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_tel_uri.h +83 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transaction.h +542 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transport.h +1672 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transport_loop.h +146 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transport_tcp.h +300 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transport_tls.h +642 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transport_udp.h +389 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_types.h +265 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_ua_layer.h +159 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_uri.h +470 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_util.h +888 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/errno.h +117 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/evsub.h +561 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/evsub_msg.h +119 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/iscomposing.h +137 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/mwi.h +211 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/pidf.h +177 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/presence.h +416 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/publish.h +350 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/rpid.h +150 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/types.h +30 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/xpidf.h +137 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_100rel.h +244 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_inv.h +1224 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_regc.h +497 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_replaces.h +303 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_timer.h +274 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_xfer.h +207 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip.h +61 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip_auth.h +37 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip_simple.h +45 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip_ua.h +31 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua-lib/pjsua.h +8899 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua-lib/pjsua_internal.h +989 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua.h +1 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/account.hpp +2123 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/call.hpp +2253 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/config.hpp +72 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/doxygen.hpp +48 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/endpoint.hpp +2160 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/json.hpp +115 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/media.hpp +2748 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/persistent.hpp +715 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/presence.hpp +368 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/siptypes.hpp +1013 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/types.hpp +283 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2.hpp +28 -0
- package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/libVoipCloud.a +0 -0
- package/ios/VoipCloudEngine.h +62 -0
- package/ios/VoipCloudEngine.mm +571 -0
- package/package.json +4 -3
- package/react-native-voipcloud.podspec +27 -1
- package/react-native.config.js +22 -0
|
@@ -0,0 +1,2748 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
|
|
3
|
+
*
|
|
4
|
+
* This program is free software; you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation; either version 2 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* This program is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with this program; if not, write to the Free Software
|
|
16
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
#ifndef __PJSUA2_MEDIA_HPP__
|
|
20
|
+
#define __PJSUA2_MEDIA_HPP__
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @file pjsua2/media.hpp
|
|
24
|
+
* @brief PJSUA2 media operations
|
|
25
|
+
*/
|
|
26
|
+
#include <pjsua-lib/pjsua.h>
|
|
27
|
+
#include <pjsua2/types.hpp>
|
|
28
|
+
|
|
29
|
+
/** PJSUA2 API is inside pj namespace */
|
|
30
|
+
namespace pj
|
|
31
|
+
{
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @defgroup PJSUA2_MED Media
|
|
35
|
+
* @ingroup PJSUA2_Ref
|
|
36
|
+
* @{
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
using std::string;
|
|
40
|
+
using std::vector;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* This structure contains all the information needed to completely describe
|
|
44
|
+
* a media.
|
|
45
|
+
*/
|
|
46
|
+
struct MediaFormat
|
|
47
|
+
{
|
|
48
|
+
/**
|
|
49
|
+
* The format id that specifies the audio sample or video pixel format.
|
|
50
|
+
* Some well known formats ids are declared in pjmedia_format_id
|
|
51
|
+
* enumeration.
|
|
52
|
+
*
|
|
53
|
+
* @see pjmedia_format_id
|
|
54
|
+
*/
|
|
55
|
+
pj_uint32_t id;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The top-most type of the media, as an information.
|
|
59
|
+
*/
|
|
60
|
+
pjmedia_type type;
|
|
61
|
+
|
|
62
|
+
public:
|
|
63
|
+
/**
|
|
64
|
+
* Default constructor
|
|
65
|
+
*/
|
|
66
|
+
MediaFormat() : id(0), type(PJMEDIA_TYPE_NONE)
|
|
67
|
+
{}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* This structure describe detail information about an audio media.
|
|
72
|
+
*/
|
|
73
|
+
struct MediaFormatAudio : public MediaFormat
|
|
74
|
+
{
|
|
75
|
+
unsigned clockRate; /**< Audio clock rate in samples or Hz. */
|
|
76
|
+
unsigned channelCount; /**< Number of channels. */
|
|
77
|
+
unsigned frameTimeUsec; /**< Frame interval, in microseconds. */
|
|
78
|
+
unsigned bitsPerSample; /**< Number of bits per sample. */
|
|
79
|
+
pj_uint32_t avgBps; /**< Average bitrate */
|
|
80
|
+
pj_uint32_t maxBps; /**< Maximum bitrate */
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Construct from pjmedia_format.
|
|
84
|
+
*/
|
|
85
|
+
void fromPj(const pjmedia_format &format);
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Export to pjmedia_format.
|
|
89
|
+
*/
|
|
90
|
+
pjmedia_format toPj() const;
|
|
91
|
+
|
|
92
|
+
public:
|
|
93
|
+
/**
|
|
94
|
+
* Default constructor
|
|
95
|
+
*/
|
|
96
|
+
MediaFormatAudio() : clockRate(0), channelCount(0), frameTimeUsec(0),
|
|
97
|
+
bitsPerSample(0), avgBps(0), maxBps(0)
|
|
98
|
+
{}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* This structure describe detail information about an video media.
|
|
103
|
+
*/
|
|
104
|
+
struct MediaFormatVideo : public MediaFormat
|
|
105
|
+
{
|
|
106
|
+
unsigned width; /**< Video width. */
|
|
107
|
+
unsigned height; /**< Video height. */
|
|
108
|
+
int fpsNum; /**< Frames per second numerator. */
|
|
109
|
+
int fpsDenum; /**< Frames per second denumerator. */
|
|
110
|
+
pj_uint32_t avgBps; /**< Average bitrate. */
|
|
111
|
+
pj_uint32_t maxBps; /**< Maximum bitrate. */
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Construct from pjmedia_format.
|
|
115
|
+
*/
|
|
116
|
+
void fromPj(const pjmedia_format &format);
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Export to pjmedia_format.
|
|
120
|
+
*/
|
|
121
|
+
pjmedia_format toPj() const;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
/** Array of MediaFormatAudio */
|
|
125
|
+
typedef std::vector<MediaFormatAudio> MediaFormatAudioVector;
|
|
126
|
+
|
|
127
|
+
/** Array of MediaFormatVideo */
|
|
128
|
+
typedef std::vector<MediaFormatVideo> MediaFormatVideoVector;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* This structure descibes information about a particular media port that
|
|
132
|
+
* has been registered into the conference bridge.
|
|
133
|
+
*/
|
|
134
|
+
struct ConfPortInfo
|
|
135
|
+
{
|
|
136
|
+
/**
|
|
137
|
+
* Conference port number.
|
|
138
|
+
*/
|
|
139
|
+
int portId;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Port name.
|
|
143
|
+
*/
|
|
144
|
+
string name;
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Media audio format information
|
|
148
|
+
*/
|
|
149
|
+
MediaFormatAudio format;
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Tx level adjustment. Value 1.0 means no adjustment, value 0 means
|
|
153
|
+
* the port is muted, value 2.0 means the level is amplified two times.
|
|
154
|
+
*/
|
|
155
|
+
float txLevelAdj;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Rx level adjustment. Value 1.0 means no adjustment, value 0 means
|
|
159
|
+
* the port is muted, value 2.0 means the level is amplified two times.
|
|
160
|
+
*/
|
|
161
|
+
float rxLevelAdj;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Array of listeners (in other words, ports where this port is
|
|
165
|
+
* transmitting to).
|
|
166
|
+
*/
|
|
167
|
+
IntVector listeners;
|
|
168
|
+
|
|
169
|
+
public:
|
|
170
|
+
/**
|
|
171
|
+
* Construct from pjsua_conf_port_info.
|
|
172
|
+
*/
|
|
173
|
+
void fromPj(const pjsua_conf_port_info &port_info);
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Media port, corresponds to pjmedia_port
|
|
178
|
+
*/
|
|
179
|
+
typedef void *MediaPort;
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Media.
|
|
183
|
+
*/
|
|
184
|
+
class Media
|
|
185
|
+
{
|
|
186
|
+
public:
|
|
187
|
+
/**
|
|
188
|
+
* Virtual destructor.
|
|
189
|
+
*/
|
|
190
|
+
virtual ~Media();
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Get type of the media.
|
|
194
|
+
*
|
|
195
|
+
* @return The media type.
|
|
196
|
+
*/
|
|
197
|
+
pjmedia_type getType() const;
|
|
198
|
+
|
|
199
|
+
protected:
|
|
200
|
+
/**
|
|
201
|
+
* Constructor.
|
|
202
|
+
*/
|
|
203
|
+
Media(pjmedia_type med_type);
|
|
204
|
+
|
|
205
|
+
private:
|
|
206
|
+
/**
|
|
207
|
+
* Media type.
|
|
208
|
+
*/
|
|
209
|
+
pjmedia_type type;
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Parameters for AudioMedia::startTransmit2() method.
|
|
214
|
+
*/
|
|
215
|
+
struct AudioMediaTransmitParam
|
|
216
|
+
{
|
|
217
|
+
/**
|
|
218
|
+
* Signal level adjustment. Value 1.0 means no level adjustment,
|
|
219
|
+
* while value 0 means to mute the port.
|
|
220
|
+
*
|
|
221
|
+
* Default: 1.0
|
|
222
|
+
*/
|
|
223
|
+
float level;
|
|
224
|
+
|
|
225
|
+
public:
|
|
226
|
+
/**
|
|
227
|
+
* Default constructor
|
|
228
|
+
*/
|
|
229
|
+
AudioMediaTransmitParam();
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Audio Media. This is a lite wrapper class for audio conference bridge port,
|
|
234
|
+
* i.e: this class only maintains one data member, conference slot ID, and
|
|
235
|
+
* the methods are simply proxies for conference bridge operations.
|
|
236
|
+
*
|
|
237
|
+
* Application can create a derived class and use registerMediaPort2()/
|
|
238
|
+
* unregisterMediaPort() to register/unregister a media port to/from the
|
|
239
|
+
* conference bridge.
|
|
240
|
+
*
|
|
241
|
+
* The library will not keep a list of AudioMedia instances, so any
|
|
242
|
+
* AudioMedia (descendant) instances instantiated by application must be
|
|
243
|
+
* maintained and destroyed by the application itself.
|
|
244
|
+
*
|
|
245
|
+
* Note that any PJSUA2 APIs that return AudioMedia instance(s) such as
|
|
246
|
+
* Endpoint::mediaEnumPorts2() or Call::getAudioMedia() will just return
|
|
247
|
+
* generated copy. All AudioMedia methods should work normally on this
|
|
248
|
+
* generated copy instance.
|
|
249
|
+
*/
|
|
250
|
+
class AudioMedia : public Media
|
|
251
|
+
{
|
|
252
|
+
public:
|
|
253
|
+
/**
|
|
254
|
+
* Get information about the specified conference port.
|
|
255
|
+
*/
|
|
256
|
+
ConfPortInfo getPortInfo() const PJSUA2_THROW(Error);
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Get port Id.
|
|
260
|
+
*/
|
|
261
|
+
int getPortId() const;
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Get information from specific port id.
|
|
265
|
+
*/
|
|
266
|
+
static ConfPortInfo getPortInfoFromId(int port_id) PJSUA2_THROW(Error);
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Establish unidirectional media flow to sink. This media port
|
|
270
|
+
* will act as a source, and it may transmit to multiple destinations/sink.
|
|
271
|
+
* And if multiple sources are transmitting to the same sink, the media
|
|
272
|
+
* will be mixed together. Source and sink may refer to the same Media,
|
|
273
|
+
* effectively looping the media.
|
|
274
|
+
*
|
|
275
|
+
* If bidirectional media flow is desired, application needs to call
|
|
276
|
+
* this method twice, with the second one called from the opposite source
|
|
277
|
+
* media.
|
|
278
|
+
*
|
|
279
|
+
* @param sink The destination Media.
|
|
280
|
+
*/
|
|
281
|
+
void startTransmit(const AudioMedia &sink) const PJSUA2_THROW(Error);
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Establish unidirectional media flow to sink. This media port
|
|
285
|
+
* will act as a source, and it may transmit to multiple destinations/sink.
|
|
286
|
+
* And if multiple sources are transmitting to the same sink, the media
|
|
287
|
+
* will be mixed together. Source and sink may refer to the same Media,
|
|
288
|
+
* effectively looping the media.
|
|
289
|
+
*
|
|
290
|
+
* Signal level from this source to the sink can be adjusted by making
|
|
291
|
+
* it louder or quieter via the parameter param. The level adjustment
|
|
292
|
+
* will apply to a specific connection only (i.e. only for signal
|
|
293
|
+
* from this source to the sink), as compared to
|
|
294
|
+
* adjustTxLevel()/adjustRxLevel() which applies to all signals from/to
|
|
295
|
+
* this media port. The signal adjustment
|
|
296
|
+
* will be cumulative, in this following order:
|
|
297
|
+
* signal from this source will be adjusted with the level specified
|
|
298
|
+
* in adjustTxLevel(), then with the level specified via this API,
|
|
299
|
+
* and finally with the level specified to the sink's adjustRxLevel().
|
|
300
|
+
*
|
|
301
|
+
* If bidirectional media flow is desired, application needs to call
|
|
302
|
+
* this method twice, with the second one called from the opposite source
|
|
303
|
+
* media.
|
|
304
|
+
*
|
|
305
|
+
* @param sink The destination Media.
|
|
306
|
+
* @param param The parameter.
|
|
307
|
+
*/
|
|
308
|
+
void startTransmit2(const AudioMedia &sink,
|
|
309
|
+
const AudioMediaTransmitParam ¶m) const
|
|
310
|
+
PJSUA2_THROW(Error);
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Stop media flow to destination/sink port.
|
|
314
|
+
*
|
|
315
|
+
* @param sink The destination media.
|
|
316
|
+
*
|
|
317
|
+
*/
|
|
318
|
+
void stopTransmit(const AudioMedia &sink) const PJSUA2_THROW(Error);
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Adjust the signal level to be transmitted from the bridge to this
|
|
322
|
+
* media port by making it louder or quieter.
|
|
323
|
+
*
|
|
324
|
+
* @param level Signal level adjustment. Value 1.0 means no
|
|
325
|
+
* level adjustment, while value 0 means to mute
|
|
326
|
+
* the port.
|
|
327
|
+
*/
|
|
328
|
+
void adjustRxLevel(float level) PJSUA2_THROW(Error);
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Adjust the signal level to be received from this media port (to
|
|
332
|
+
* the bridge) by making it louder or quieter.
|
|
333
|
+
*
|
|
334
|
+
* @param level Signal level adjustment. Value 1.0 means no
|
|
335
|
+
* level adjustment, while value 0 means to mute
|
|
336
|
+
* the port.
|
|
337
|
+
*/
|
|
338
|
+
void adjustTxLevel(float level) PJSUA2_THROW(Error);
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Get the last received signal level.
|
|
342
|
+
*
|
|
343
|
+
* @return Signal level in percent.
|
|
344
|
+
*/
|
|
345
|
+
unsigned getRxLevel() const PJSUA2_THROW(Error);
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Get the last transmitted signal level.
|
|
349
|
+
*
|
|
350
|
+
* @return Signal level in percent.
|
|
351
|
+
*/
|
|
352
|
+
unsigned getTxLevel() const PJSUA2_THROW(Error);
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Warning: deprecated and will be removed in future release.
|
|
356
|
+
*
|
|
357
|
+
* Typecast from base class Media. This is useful for application written
|
|
358
|
+
* in language that does not support downcasting such as Python.
|
|
359
|
+
*
|
|
360
|
+
* @param media The object to be downcasted
|
|
361
|
+
*
|
|
362
|
+
* @return The object as AudioMedia instance
|
|
363
|
+
*/
|
|
364
|
+
static AudioMedia* typecastFromMedia(Media *media);
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Default Constructor.
|
|
368
|
+
*
|
|
369
|
+
* Normally application will not create AudioMedia object directly,
|
|
370
|
+
* but it instantiates an AudioMedia derived class. This is set as public
|
|
371
|
+
* because some STL vector implementations require it.
|
|
372
|
+
*/
|
|
373
|
+
AudioMedia();
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Virtual Destructor.
|
|
377
|
+
*/
|
|
378
|
+
virtual ~AudioMedia();
|
|
379
|
+
|
|
380
|
+
protected:
|
|
381
|
+
/**
|
|
382
|
+
* Conference port Id.
|
|
383
|
+
*/
|
|
384
|
+
int id;
|
|
385
|
+
|
|
386
|
+
protected:
|
|
387
|
+
/**
|
|
388
|
+
* Warning: deprecated and will be removed in future release, use
|
|
389
|
+
* registerMediaPort2() instead.
|
|
390
|
+
*
|
|
391
|
+
* This method needs to be called by descendants of this class to register
|
|
392
|
+
* the media port created to the conference bridge and Endpoint's
|
|
393
|
+
* media list.
|
|
394
|
+
*
|
|
395
|
+
* param port The media port to be registered to the conference bridge.
|
|
396
|
+
*
|
|
397
|
+
*/
|
|
398
|
+
void registerMediaPort(MediaPort port) PJSUA2_THROW(Error);
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* This method needs to be called by descendants of this class to register
|
|
402
|
+
* the media port created to the conference bridge and Endpoint's
|
|
403
|
+
* media list.
|
|
404
|
+
*
|
|
405
|
+
* param port The media port to be registered to the conference bridge.
|
|
406
|
+
* param pool The memory pool.
|
|
407
|
+
*
|
|
408
|
+
*/
|
|
409
|
+
void registerMediaPort2(MediaPort port, pj_pool_t *pool)
|
|
410
|
+
PJSUA2_THROW(Error);
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* This method needs to be called by descendants of this class to remove
|
|
414
|
+
* the media port from the conference bridge and Endpoint's media list.
|
|
415
|
+
* Descendant should only call this method if it has registered the media
|
|
416
|
+
* with the previous call to registerMediaPort().
|
|
417
|
+
*/
|
|
418
|
+
void unregisterMediaPort() PJSUA2_THROW(Error);
|
|
419
|
+
|
|
420
|
+
private:
|
|
421
|
+
/* Memory pool for deprecated registerMediaPort() */
|
|
422
|
+
pj_caching_pool mediaCachingPool;
|
|
423
|
+
pj_pool_t *mediaPool;
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Warning: deprecated, use AudioMediaVector2 instead.
|
|
428
|
+
*
|
|
429
|
+
* Array of Audio Media.
|
|
430
|
+
*/
|
|
431
|
+
typedef std::vector<AudioMedia*> AudioMediaVector;
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
/** Array of Audio Media */
|
|
435
|
+
typedef std::vector<AudioMedia> AudioMediaVector2;
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* This structure describes a media frame.
|
|
439
|
+
*/
|
|
440
|
+
struct MediaFrame
|
|
441
|
+
{
|
|
442
|
+
pjmedia_frame_type type; /**< Frame type. */
|
|
443
|
+
ByteVector buf; /**< Frame buffer content. */
|
|
444
|
+
unsigned size; /**< Frame size in bytes. */
|
|
445
|
+
|
|
446
|
+
public:
|
|
447
|
+
/**
|
|
448
|
+
* Default constructor
|
|
449
|
+
*/
|
|
450
|
+
MediaFrame()
|
|
451
|
+
: type(PJMEDIA_FRAME_TYPE_NONE),
|
|
452
|
+
size(0)
|
|
453
|
+
{}
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Audio Media Port.
|
|
458
|
+
*/
|
|
459
|
+
class AudioMediaPort : public AudioMedia
|
|
460
|
+
{
|
|
461
|
+
public:
|
|
462
|
+
/**
|
|
463
|
+
* Constructor.
|
|
464
|
+
*/
|
|
465
|
+
AudioMediaPort();
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Destructor. This will unregister the audio media port from the
|
|
469
|
+
* conference bridge.
|
|
470
|
+
*/
|
|
471
|
+
virtual ~AudioMediaPort();
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Create an audio media port and register it to the conference bridge.
|
|
475
|
+
*
|
|
476
|
+
* @param name The port name.
|
|
477
|
+
* @param fmt The audio format.
|
|
478
|
+
*/
|
|
479
|
+
void createPort(const string &name, MediaFormatAudio &fmt)
|
|
480
|
+
PJSUA2_THROW(Error);
|
|
481
|
+
|
|
482
|
+
/*
|
|
483
|
+
* Callbacks
|
|
484
|
+
*/
|
|
485
|
+
/**
|
|
486
|
+
* This callback is called to request a frame from this port. On input,
|
|
487
|
+
* frame.size indicates the capacity of the frame buffer and frame.buf
|
|
488
|
+
* will initially be an empty vector. Application can then set the frame
|
|
489
|
+
* type and fill the vector.
|
|
490
|
+
*
|
|
491
|
+
* @param frame The frame.
|
|
492
|
+
*/
|
|
493
|
+
virtual void onFrameRequested(MediaFrame &frame)
|
|
494
|
+
{ PJ_UNUSED_ARG(frame); }
|
|
495
|
+
|
|
496
|
+
/**
|
|
497
|
+
* This callback is called when this port receives a frame. The frame
|
|
498
|
+
* content will be provided in frame.buf vector, and the frame size
|
|
499
|
+
* can be found in either frame.size or the vector's size (both
|
|
500
|
+
* have the same value).
|
|
501
|
+
*
|
|
502
|
+
* @param frame The frame.
|
|
503
|
+
*/
|
|
504
|
+
virtual void onFrameReceived(MediaFrame &frame)
|
|
505
|
+
{ PJ_UNUSED_ARG(frame); }
|
|
506
|
+
|
|
507
|
+
private:
|
|
508
|
+
pj_pool_t *pool;
|
|
509
|
+
pjmedia_port port;
|
|
510
|
+
};
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* This structure contains additional info about AudioMediaPlayer.
|
|
514
|
+
*/
|
|
515
|
+
struct AudioMediaPlayerInfo
|
|
516
|
+
{
|
|
517
|
+
/**
|
|
518
|
+
* Format ID of the payload.
|
|
519
|
+
*/
|
|
520
|
+
pjmedia_format_id formatId;
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* The number of bits per sample of the file payload. For example,
|
|
524
|
+
* the value is 16 for PCM WAV and 8 for Alaw/Ulas WAV files.
|
|
525
|
+
*/
|
|
526
|
+
unsigned payloadBitsPerSample;
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* The WAV payload size in bytes.
|
|
530
|
+
*/
|
|
531
|
+
pj_uint32_t sizeBytes;
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* The WAV payload size in samples.
|
|
535
|
+
*/
|
|
536
|
+
pj_uint32_t sizeSamples;
|
|
537
|
+
|
|
538
|
+
public:
|
|
539
|
+
/**
|
|
540
|
+
* Default constructor
|
|
541
|
+
*/
|
|
542
|
+
AudioMediaPlayerInfo()
|
|
543
|
+
: formatId(PJMEDIA_FORMAT_L16),
|
|
544
|
+
payloadBitsPerSample(0),
|
|
545
|
+
sizeBytes(0),
|
|
546
|
+
sizeSamples(0)
|
|
547
|
+
{}
|
|
548
|
+
};
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* Audio Media Player.
|
|
552
|
+
*/
|
|
553
|
+
class AudioMediaPlayer : public AudioMedia
|
|
554
|
+
{
|
|
555
|
+
public:
|
|
556
|
+
/**
|
|
557
|
+
* Constructor.
|
|
558
|
+
*/
|
|
559
|
+
AudioMediaPlayer();
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* Create a file player, and automatically add this
|
|
563
|
+
* player to the conference bridge.
|
|
564
|
+
*
|
|
565
|
+
* @param file_name The filename to be played. Currently only
|
|
566
|
+
* WAV files are supported, and the WAV file MUST be
|
|
567
|
+
* formatted as 16bit PCM mono/single channel (any
|
|
568
|
+
* clock rate is supported).
|
|
569
|
+
* @param options Optional option flag. Application may specify
|
|
570
|
+
* PJMEDIA_FILE_NO_LOOP to prevent playback loop.
|
|
571
|
+
*/
|
|
572
|
+
void createPlayer(const string &file_name,
|
|
573
|
+
unsigned options=0) PJSUA2_THROW(Error);
|
|
574
|
+
|
|
575
|
+
/**
|
|
576
|
+
* Create a file playlist media port, and automatically add the port
|
|
577
|
+
* to the conference bridge.
|
|
578
|
+
*
|
|
579
|
+
* @param file_names Array of file names to be added to the play list.
|
|
580
|
+
* Note that the files must have the same clock rate,
|
|
581
|
+
* number of channels, and number of bits per sample.
|
|
582
|
+
* @param label Optional label to be set for the media port.
|
|
583
|
+
* @param options Optional option flag. Application may specify
|
|
584
|
+
* PJMEDIA_FILE_NO_LOOP to prevent looping.
|
|
585
|
+
*/
|
|
586
|
+
void createPlaylist(const StringVector &file_names,
|
|
587
|
+
const string &label="",
|
|
588
|
+
unsigned options=0) PJSUA2_THROW(Error);
|
|
589
|
+
|
|
590
|
+
/**
|
|
591
|
+
* Get additional info about the player. This operation is only valid
|
|
592
|
+
* for player. For playlist, Error will be thrown.
|
|
593
|
+
*
|
|
594
|
+
* @return the info.
|
|
595
|
+
*/
|
|
596
|
+
AudioMediaPlayerInfo getInfo() const PJSUA2_THROW(Error);
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* Get current playback position in samples. This operation is not valid
|
|
600
|
+
* for playlist.
|
|
601
|
+
*
|
|
602
|
+
* @return Current playback position, in samples.
|
|
603
|
+
*/
|
|
604
|
+
pj_uint32_t getPos() const PJSUA2_THROW(Error);
|
|
605
|
+
|
|
606
|
+
/**
|
|
607
|
+
* Set playback position in samples. This operation is not valid for
|
|
608
|
+
* playlist.
|
|
609
|
+
*
|
|
610
|
+
* @param samples The desired playback position, in samples.
|
|
611
|
+
*/
|
|
612
|
+
void setPos(pj_uint32_t samples) PJSUA2_THROW(Error);
|
|
613
|
+
|
|
614
|
+
/**
|
|
615
|
+
* Warning: deprecated and will be removed in future release.
|
|
616
|
+
*
|
|
617
|
+
* Typecast from base class AudioMedia. This is useful for application
|
|
618
|
+
* written in language that does not support downcasting such as Python.
|
|
619
|
+
*
|
|
620
|
+
* @param media The object to be downcasted
|
|
621
|
+
*
|
|
622
|
+
* @return The object as AudioMediaPlayer instance
|
|
623
|
+
*/
|
|
624
|
+
static AudioMediaPlayer* typecastFromAudioMedia(AudioMedia *media);
|
|
625
|
+
|
|
626
|
+
/**
|
|
627
|
+
* Destructor. This will unregister the player port from the conference
|
|
628
|
+
* bridge.
|
|
629
|
+
*/
|
|
630
|
+
virtual ~AudioMediaPlayer();
|
|
631
|
+
|
|
632
|
+
public:
|
|
633
|
+
/*
|
|
634
|
+
* Callbacks
|
|
635
|
+
*/
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
/* Unfortunately for pjsua2, a hard deprecation is inevitable. */
|
|
639
|
+
#if 0 // !DEPRECATED_FOR_TICKET_2251
|
|
640
|
+
/**
|
|
641
|
+
* Register a callback to be called when the file player reading has
|
|
642
|
+
* reached the end of file, or when the file reading has reached the
|
|
643
|
+
* end of file of the last file for a playlist. If the file or playlist
|
|
644
|
+
* is set to play repeatedly, then the callback will be called multiple
|
|
645
|
+
* times.
|
|
646
|
+
*
|
|
647
|
+
* @return If the callback returns false, the playback
|
|
648
|
+
* will stop. Note that if application destroys
|
|
649
|
+
* the player in the callback, it must return
|
|
650
|
+
* false here.
|
|
651
|
+
*/
|
|
652
|
+
virtual bool onEof()
|
|
653
|
+
{ return true; }
|
|
654
|
+
#endif
|
|
655
|
+
|
|
656
|
+
/**
|
|
657
|
+
* Register a callback to be called when the file player reading has
|
|
658
|
+
* reached the end of file, or when the file reading has reached the
|
|
659
|
+
* end of file of the last file for a playlist. If the file or playlist
|
|
660
|
+
* is set to play repeatedly, then the callback will be called multiple
|
|
661
|
+
* times.
|
|
662
|
+
*
|
|
663
|
+
* If application wishes to stop the playback, it can stop the media
|
|
664
|
+
* transmission in the callback, and only after all transmissions have
|
|
665
|
+
* been stopped, could the application safely destroy the player.
|
|
666
|
+
*/
|
|
667
|
+
virtual void onEof2()
|
|
668
|
+
{ }
|
|
669
|
+
|
|
670
|
+
private:
|
|
671
|
+
/**
|
|
672
|
+
* Player Id.
|
|
673
|
+
*/
|
|
674
|
+
int playerId;
|
|
675
|
+
|
|
676
|
+
/**
|
|
677
|
+
* Low level PJMEDIA callback
|
|
678
|
+
*/
|
|
679
|
+
static void eof_cb(pjmedia_port *port,
|
|
680
|
+
void *usr_data);
|
|
681
|
+
};
|
|
682
|
+
|
|
683
|
+
/**
|
|
684
|
+
* Audio Media Recorder.
|
|
685
|
+
*/
|
|
686
|
+
class AudioMediaRecorder : public AudioMedia
|
|
687
|
+
{
|
|
688
|
+
public:
|
|
689
|
+
/**
|
|
690
|
+
* Constructor.
|
|
691
|
+
*/
|
|
692
|
+
AudioMediaRecorder();
|
|
693
|
+
|
|
694
|
+
/**
|
|
695
|
+
* Create a file recorder, and automatically connect this recorder to
|
|
696
|
+
* the conference bridge. The recorder currently supports recording WAV
|
|
697
|
+
* file. The type of the recorder to use is determined by the extension of
|
|
698
|
+
* the file (e.g. ".wav").
|
|
699
|
+
*
|
|
700
|
+
* @param file_name Output file name. The function will determine the
|
|
701
|
+
* default format to be used based on the file extension.
|
|
702
|
+
* Currently ".wav" is supported on all platforms.
|
|
703
|
+
* @param enc_type Optionally specify the type of encoder to be used to
|
|
704
|
+
* compress the media, if the file can support different
|
|
705
|
+
* encodings. This value must be zero for now.
|
|
706
|
+
* @param max_size Maximum file size. Specify zero or -1 to remove size
|
|
707
|
+
* limitation. This value must be zero or -1 for now.
|
|
708
|
+
* @param options Optional options, which can be used to specify the
|
|
709
|
+
* recording file format. Supported options are
|
|
710
|
+
* PJMEDIA_FILE_WRITE_PCM, PJMEDIA_FILE_WRITE_ALAW,
|
|
711
|
+
* and PJMEDIA_FILE_WRITE_ULAW. Default is zero or
|
|
712
|
+
* PJMEDIA_FILE_WRITE_PCM.
|
|
713
|
+
*/
|
|
714
|
+
void createRecorder(const string &file_name,
|
|
715
|
+
unsigned enc_type=0,
|
|
716
|
+
long max_size=0,
|
|
717
|
+
unsigned options=0) PJSUA2_THROW(Error);
|
|
718
|
+
|
|
719
|
+
/**
|
|
720
|
+
* Warning: deprecated and will be removed in future release.
|
|
721
|
+
*
|
|
722
|
+
* Typecast from base class AudioMedia. This is useful for application
|
|
723
|
+
* written in language that does not support downcasting such as Python.
|
|
724
|
+
*
|
|
725
|
+
* @param media The object to be downcasted
|
|
726
|
+
*
|
|
727
|
+
* @return The object as AudioMediaRecorder instance
|
|
728
|
+
*/
|
|
729
|
+
static AudioMediaRecorder* typecastFromAudioMedia(AudioMedia *media);
|
|
730
|
+
|
|
731
|
+
/**
|
|
732
|
+
* Destructor. This will unregister the recorder port from the conference
|
|
733
|
+
* bridge.
|
|
734
|
+
*/
|
|
735
|
+
virtual ~AudioMediaRecorder();
|
|
736
|
+
|
|
737
|
+
private:
|
|
738
|
+
/**
|
|
739
|
+
* Recorder Id.
|
|
740
|
+
*/
|
|
741
|
+
int recorderId;
|
|
742
|
+
};
|
|
743
|
+
|
|
744
|
+
/**
|
|
745
|
+
* Tone descriptor (abstraction for pjmedia_tone_desc)
|
|
746
|
+
*/
|
|
747
|
+
class ToneDesc : public pjmedia_tone_desc
|
|
748
|
+
{
|
|
749
|
+
public:
|
|
750
|
+
ToneDesc()
|
|
751
|
+
{
|
|
752
|
+
pj_bzero(this, sizeof(*this));
|
|
753
|
+
}
|
|
754
|
+
~ToneDesc() {}
|
|
755
|
+
};
|
|
756
|
+
|
|
757
|
+
/**
|
|
758
|
+
* Array of tone descriptor.
|
|
759
|
+
*/
|
|
760
|
+
typedef std::vector<ToneDesc> ToneDescVector;
|
|
761
|
+
|
|
762
|
+
/**
|
|
763
|
+
* Tone digit (abstraction for pjmedia_tone_digit)
|
|
764
|
+
*/
|
|
765
|
+
class ToneDigit : public pjmedia_tone_digit
|
|
766
|
+
{
|
|
767
|
+
public:
|
|
768
|
+
ToneDigit()
|
|
769
|
+
{
|
|
770
|
+
pj_bzero(this, sizeof(*this));
|
|
771
|
+
}
|
|
772
|
+
~ToneDigit() {}
|
|
773
|
+
};
|
|
774
|
+
|
|
775
|
+
/**
|
|
776
|
+
* Array of tone digits.
|
|
777
|
+
*/
|
|
778
|
+
typedef std::vector<ToneDigit> ToneDigitVector;
|
|
779
|
+
|
|
780
|
+
/**
|
|
781
|
+
* A digit in tone digit map
|
|
782
|
+
*/
|
|
783
|
+
struct ToneDigitMapDigit
|
|
784
|
+
{
|
|
785
|
+
public:
|
|
786
|
+
string digit; /**< the digit */
|
|
787
|
+
int freq1; /**< first frequency */
|
|
788
|
+
int freq2; /**< second frequency */
|
|
789
|
+
};
|
|
790
|
+
|
|
791
|
+
/**
|
|
792
|
+
* Tone digit map
|
|
793
|
+
*/
|
|
794
|
+
typedef std::vector<ToneDigitMapDigit> ToneDigitMapVector;
|
|
795
|
+
|
|
796
|
+
/**
|
|
797
|
+
* Tone generator.
|
|
798
|
+
*/
|
|
799
|
+
class ToneGenerator : public AudioMedia
|
|
800
|
+
{
|
|
801
|
+
public:
|
|
802
|
+
/**
|
|
803
|
+
* Constructor.
|
|
804
|
+
*/
|
|
805
|
+
ToneGenerator();
|
|
806
|
+
|
|
807
|
+
/**
|
|
808
|
+
* Destructor. This will unregister the tone generator port from the
|
|
809
|
+
* conference bridge.
|
|
810
|
+
*/
|
|
811
|
+
~ToneGenerator();
|
|
812
|
+
|
|
813
|
+
/**
|
|
814
|
+
* Create tone generator and register the port to the conference bridge.
|
|
815
|
+
*/
|
|
816
|
+
void createToneGenerator(unsigned clock_rate = 16000,
|
|
817
|
+
unsigned channel_count = 1) PJSUA2_THROW(Error);
|
|
818
|
+
|
|
819
|
+
/**
|
|
820
|
+
* Check if the tone generator is still busy producing some tones.
|
|
821
|
+
* @return Non-zero if busy.
|
|
822
|
+
*/
|
|
823
|
+
bool isBusy() const;
|
|
824
|
+
|
|
825
|
+
/**
|
|
826
|
+
* Instruct the tone generator to stop current processing.
|
|
827
|
+
*/
|
|
828
|
+
void stop() PJSUA2_THROW(Error);
|
|
829
|
+
|
|
830
|
+
/**
|
|
831
|
+
* Rewind the playback. This will start the playback to the first
|
|
832
|
+
* tone in the playback list.
|
|
833
|
+
*/
|
|
834
|
+
void rewind() PJSUA2_THROW(Error);
|
|
835
|
+
|
|
836
|
+
/**
|
|
837
|
+
* Instruct the tone generator to play single or dual frequency tones
|
|
838
|
+
* with the specified duration. The new tones will be appended to
|
|
839
|
+
* currently playing tones, unless stop() is called before calling this
|
|
840
|
+
* function. The playback will begin as soon as the tone generator is
|
|
841
|
+
* connected to other media.
|
|
842
|
+
*
|
|
843
|
+
* @param tones Array of tones to be played.
|
|
844
|
+
* @param loop Play the tone in a loop.
|
|
845
|
+
*/
|
|
846
|
+
void play(const ToneDescVector &tones,
|
|
847
|
+
bool loop=false) PJSUA2_THROW(Error);
|
|
848
|
+
|
|
849
|
+
/**
|
|
850
|
+
* Instruct the tone generator to play multiple MF digits with each of
|
|
851
|
+
* the digits having individual ON/OFF duration. Each of the digit in the
|
|
852
|
+
* digit array must have the corresponding descriptor in the digit map.
|
|
853
|
+
* The new tones will be appended to currently playing tones, unless
|
|
854
|
+
* stop() is called before calling this function. The playback will begin
|
|
855
|
+
* as soon as the tone generator is connected to a sink media.
|
|
856
|
+
*
|
|
857
|
+
* @param digits Array of MF digits.
|
|
858
|
+
* @param loop Play the tone in a loop.
|
|
859
|
+
*/
|
|
860
|
+
void playDigits(const ToneDigitVector &digits,
|
|
861
|
+
bool loop=false) PJSUA2_THROW(Error);
|
|
862
|
+
|
|
863
|
+
/**
|
|
864
|
+
* Get the digit-map currently used by this tone generator.
|
|
865
|
+
*
|
|
866
|
+
* @return The digitmap currently used by the tone generator
|
|
867
|
+
*/
|
|
868
|
+
ToneDigitMapVector getDigitMap() const PJSUA2_THROW(Error);
|
|
869
|
+
|
|
870
|
+
/**
|
|
871
|
+
* Set digit map to be used by the tone generator.
|
|
872
|
+
*
|
|
873
|
+
* @param digit_map Digitmap to be used by the tone generator.
|
|
874
|
+
*/
|
|
875
|
+
void setDigitMap(const ToneDigitMapVector &digit_map) PJSUA2_THROW(Error);
|
|
876
|
+
|
|
877
|
+
private:
|
|
878
|
+
pj_pool_t *pool;
|
|
879
|
+
pjmedia_port *tonegen;
|
|
880
|
+
pjmedia_tone_digit_map digitMap;
|
|
881
|
+
};
|
|
882
|
+
|
|
883
|
+
|
|
884
|
+
/*************************************************************************
|
|
885
|
+
* Sound device management
|
|
886
|
+
*/
|
|
887
|
+
|
|
888
|
+
/**
|
|
889
|
+
* Audio device information structure.
|
|
890
|
+
*/
|
|
891
|
+
struct AudioDevInfo
|
|
892
|
+
{
|
|
893
|
+
/**
|
|
894
|
+
* The device ID
|
|
895
|
+
*/
|
|
896
|
+
pjmedia_aud_dev_index id;
|
|
897
|
+
|
|
898
|
+
/**
|
|
899
|
+
* The device name
|
|
900
|
+
*/
|
|
901
|
+
string name;
|
|
902
|
+
|
|
903
|
+
/**
|
|
904
|
+
* Maximum number of input channels supported by this device. If the
|
|
905
|
+
* value is zero, the device does not support input operation (i.e.
|
|
906
|
+
* it is a playback only device).
|
|
907
|
+
*/
|
|
908
|
+
unsigned inputCount;
|
|
909
|
+
|
|
910
|
+
/**
|
|
911
|
+
* Maximum number of output channels supported by this device. If the
|
|
912
|
+
* value is zero, the device does not support output operation (i.e.
|
|
913
|
+
* it is an input only device).
|
|
914
|
+
*/
|
|
915
|
+
unsigned outputCount;
|
|
916
|
+
|
|
917
|
+
/**
|
|
918
|
+
* Default sampling rate.
|
|
919
|
+
*/
|
|
920
|
+
unsigned defaultSamplesPerSec;
|
|
921
|
+
|
|
922
|
+
/**
|
|
923
|
+
* The underlying driver name
|
|
924
|
+
*/
|
|
925
|
+
string driver;
|
|
926
|
+
|
|
927
|
+
/**
|
|
928
|
+
* Device capabilities, as bitmask combination of pjmedia_aud_dev_cap.
|
|
929
|
+
*/
|
|
930
|
+
unsigned caps;
|
|
931
|
+
|
|
932
|
+
/**
|
|
933
|
+
* Supported audio device routes, as bitmask combination of
|
|
934
|
+
* pjmedia_aud_dev_route. The value may be zero if the device
|
|
935
|
+
* does not support audio routing.
|
|
936
|
+
*/
|
|
937
|
+
unsigned routes;
|
|
938
|
+
|
|
939
|
+
/**
|
|
940
|
+
* Array of supported extended audio formats
|
|
941
|
+
*/
|
|
942
|
+
MediaFormatAudioVector extFmt;
|
|
943
|
+
|
|
944
|
+
/**
|
|
945
|
+
* Construct from pjmedia_aud_dev_info.
|
|
946
|
+
*/
|
|
947
|
+
void fromPj(const pjmedia_aud_dev_info &dev_info);
|
|
948
|
+
|
|
949
|
+
/**
|
|
950
|
+
* Destructor.
|
|
951
|
+
*/
|
|
952
|
+
~AudioDevInfo();
|
|
953
|
+
};
|
|
954
|
+
|
|
955
|
+
/**
|
|
956
|
+
* Warning: deprecated, use AudioDevInfoVector2 instead.
|
|
957
|
+
*
|
|
958
|
+
* Array of audio device info.
|
|
959
|
+
*/
|
|
960
|
+
typedef std::vector<AudioDevInfo*> AudioDevInfoVector;
|
|
961
|
+
|
|
962
|
+
/** Array of audio device info */
|
|
963
|
+
typedef std::vector<AudioDevInfo> AudioDevInfoVector2;
|
|
964
|
+
|
|
965
|
+
/**
|
|
966
|
+
* Audio device manager.
|
|
967
|
+
*/
|
|
968
|
+
class AudDevManager
|
|
969
|
+
{
|
|
970
|
+
public:
|
|
971
|
+
/**
|
|
972
|
+
* Get currently active capture sound devices. If sound devices has not been
|
|
973
|
+
* created, it is possible that the function returns -1 as device IDs.
|
|
974
|
+
*
|
|
975
|
+
* @return Device ID of the capture device.
|
|
976
|
+
*/
|
|
977
|
+
int getCaptureDev() const PJSUA2_THROW(Error);
|
|
978
|
+
|
|
979
|
+
/**
|
|
980
|
+
* Get the AudioMedia of the capture audio device.
|
|
981
|
+
*
|
|
982
|
+
* @return Audio media for the capture device.
|
|
983
|
+
*/
|
|
984
|
+
AudioMedia &getCaptureDevMedia() PJSUA2_THROW(Error);
|
|
985
|
+
|
|
986
|
+
/**
|
|
987
|
+
* Get currently active playback sound devices. If sound devices has not
|
|
988
|
+
* been created, it is possible that the function returns -1 as device IDs.
|
|
989
|
+
*
|
|
990
|
+
* @return Device ID of the playback device.
|
|
991
|
+
*/
|
|
992
|
+
int getPlaybackDev() const PJSUA2_THROW(Error);
|
|
993
|
+
|
|
994
|
+
/**
|
|
995
|
+
* Get the AudioMedia of the speaker/playback audio device.
|
|
996
|
+
*
|
|
997
|
+
* @return Audio media for the speaker/playback device.
|
|
998
|
+
*/
|
|
999
|
+
AudioMedia &getPlaybackDevMedia() PJSUA2_THROW(Error);
|
|
1000
|
+
|
|
1001
|
+
/**
|
|
1002
|
+
* Select or change capture sound device. Application may call this
|
|
1003
|
+
* function at any time to replace current sound device. Calling this
|
|
1004
|
+
* method will not change the state of the sound device (opened/closed).
|
|
1005
|
+
*
|
|
1006
|
+
* @param capture_dev Device ID of the capture device.
|
|
1007
|
+
*/
|
|
1008
|
+
void setCaptureDev(int capture_dev) const PJSUA2_THROW(Error);
|
|
1009
|
+
|
|
1010
|
+
/**
|
|
1011
|
+
* Select or change playback sound device. Application may call this
|
|
1012
|
+
* function at any time to replace current sound device. Calling this
|
|
1013
|
+
* method will not change the state of the sound device (opened/closed).
|
|
1014
|
+
*
|
|
1015
|
+
* @param playback_dev Device ID of the playback device.
|
|
1016
|
+
*/
|
|
1017
|
+
void setPlaybackDev(int playback_dev) const PJSUA2_THROW(Error);
|
|
1018
|
+
|
|
1019
|
+
#if !DEPRECATED_FOR_TICKET_2232
|
|
1020
|
+
/**
|
|
1021
|
+
* Warning: deprecated, use enumDev2 instead. This function is not
|
|
1022
|
+
* safe in multithreaded environment.
|
|
1023
|
+
*
|
|
1024
|
+
* Enum all audio devices installed in the system. This function is not
|
|
1025
|
+
* safe in multithreaded environment.
|
|
1026
|
+
*
|
|
1027
|
+
* @return The list of audio device info.
|
|
1028
|
+
*/
|
|
1029
|
+
const AudioDevInfoVector &enumDev() PJSUA2_THROW(Error);
|
|
1030
|
+
#endif
|
|
1031
|
+
|
|
1032
|
+
/**
|
|
1033
|
+
* Enum all audio devices installed in the system.
|
|
1034
|
+
*
|
|
1035
|
+
* @return The list of audio device info.
|
|
1036
|
+
*/
|
|
1037
|
+
AudioDevInfoVector2 enumDev2() const PJSUA2_THROW(Error);
|
|
1038
|
+
|
|
1039
|
+
/**
|
|
1040
|
+
* Set pjsua to use null sound device. The null sound device only provides
|
|
1041
|
+
* the timing needed by the conference bridge, and will not interract with
|
|
1042
|
+
* any hardware.
|
|
1043
|
+
*
|
|
1044
|
+
*/
|
|
1045
|
+
void setNullDev() PJSUA2_THROW(Error);
|
|
1046
|
+
|
|
1047
|
+
/**
|
|
1048
|
+
* Disconnect the main conference bridge from any sound devices, and let
|
|
1049
|
+
* application connect the bridge to it's own sound device/master port.
|
|
1050
|
+
*
|
|
1051
|
+
* @return The port interface of the conference bridge,
|
|
1052
|
+
* so that application can connect this to it's
|
|
1053
|
+
* own sound device or master port.
|
|
1054
|
+
*/
|
|
1055
|
+
MediaPort *setNoDev();
|
|
1056
|
+
|
|
1057
|
+
/**
|
|
1058
|
+
* Set sound device mode.
|
|
1059
|
+
*
|
|
1060
|
+
* Note that this method will open the sound device, using current
|
|
1061
|
+
* active IDs set via setCaptureDev() or setPlaybackDev(), if the flag
|
|
1062
|
+
* PJSUA_SND_DEV_NO_IMMEDIATE_OPEN is not specified.
|
|
1063
|
+
*
|
|
1064
|
+
* @param mode The sound device mode, as bitmask combination
|
|
1065
|
+
* of #pjsua_snd_dev_mode
|
|
1066
|
+
*
|
|
1067
|
+
*/
|
|
1068
|
+
void setSndDevMode(unsigned mode) const PJSUA2_THROW(Error);
|
|
1069
|
+
|
|
1070
|
+
/**
|
|
1071
|
+
* Change the echo cancellation settings.
|
|
1072
|
+
*
|
|
1073
|
+
* The behavior of this function depends on whether the sound device is
|
|
1074
|
+
* currently active, and if it is, whether device or software AEC is
|
|
1075
|
+
* being used.
|
|
1076
|
+
*
|
|
1077
|
+
* If the sound device is currently active, and if the device supports AEC,
|
|
1078
|
+
* this function will forward the change request to the device and it will
|
|
1079
|
+
* be up to the device on whether support the request. If software AEC is
|
|
1080
|
+
* being used (the software EC will be used if the device does not support
|
|
1081
|
+
* AEC), this function will change the software EC settings. In all cases,
|
|
1082
|
+
* the setting will be saved for future opening of the sound device.
|
|
1083
|
+
*
|
|
1084
|
+
* If the sound device is not currently active, this will only change the
|
|
1085
|
+
* default AEC settings and the setting will be applied next time the
|
|
1086
|
+
* sound device is opened.
|
|
1087
|
+
*
|
|
1088
|
+
* @param tail_msec The tail length, in miliseconds. Set to zero to
|
|
1089
|
+
* disable AEC.
|
|
1090
|
+
* @param options Options to be passed to pjmedia_echo_create().
|
|
1091
|
+
* Normally the value should be zero.
|
|
1092
|
+
*
|
|
1093
|
+
*/
|
|
1094
|
+
void setEcOptions(unsigned tail_msec, unsigned options) PJSUA2_THROW(Error);
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* Get current echo canceller tail length.
|
|
1098
|
+
*
|
|
1099
|
+
* @return The EC tail length in milliseconds,
|
|
1100
|
+
* If AEC is disabled, the value will be zero.
|
|
1101
|
+
*/
|
|
1102
|
+
unsigned getEcTail() const PJSUA2_THROW(Error);
|
|
1103
|
+
|
|
1104
|
+
/**
|
|
1105
|
+
* Check whether the sound device is currently active. The sound device
|
|
1106
|
+
* may be inactive if the application has set the auto close feature to
|
|
1107
|
+
* non-zero (the sndAutoCloseTime setting in MediaConfig), or
|
|
1108
|
+
* if null sound device or no sound device has been configured via the
|
|
1109
|
+
* setNoDev() function.
|
|
1110
|
+
*/
|
|
1111
|
+
bool sndIsActive() const;
|
|
1112
|
+
|
|
1113
|
+
/**
|
|
1114
|
+
* Refresh the list of sound devices installed in the system. This method
|
|
1115
|
+
* will only refresh the list of audio device so all active audio streams
|
|
1116
|
+
* will be unaffected. After refreshing the device list, application MUST
|
|
1117
|
+
* make sure to update all index references to audio devices before calling
|
|
1118
|
+
* any method that accepts audio device index as its parameter.
|
|
1119
|
+
*
|
|
1120
|
+
*/
|
|
1121
|
+
void refreshDevs() PJSUA2_THROW(Error);
|
|
1122
|
+
|
|
1123
|
+
/**
|
|
1124
|
+
* Get the number of sound devices installed in the system.
|
|
1125
|
+
*
|
|
1126
|
+
* @return The number of sound devices installed in the
|
|
1127
|
+
* system.
|
|
1128
|
+
*
|
|
1129
|
+
*/
|
|
1130
|
+
unsigned getDevCount() const;
|
|
1131
|
+
|
|
1132
|
+
/**
|
|
1133
|
+
* Get device information.
|
|
1134
|
+
*
|
|
1135
|
+
* @param id The audio device ID.
|
|
1136
|
+
*
|
|
1137
|
+
* @return The device information which will be filled in
|
|
1138
|
+
* by this method once it returns successfully.
|
|
1139
|
+
*/
|
|
1140
|
+
AudioDevInfo getDevInfo(int id) const PJSUA2_THROW(Error);
|
|
1141
|
+
|
|
1142
|
+
/**
|
|
1143
|
+
* Lookup device index based on the driver and device name.
|
|
1144
|
+
*
|
|
1145
|
+
* @param drv_name The driver name.
|
|
1146
|
+
* @param dev_name The device name.
|
|
1147
|
+
*
|
|
1148
|
+
* @return The device ID. If the device is not found,
|
|
1149
|
+
* Error will be thrown.
|
|
1150
|
+
*/
|
|
1151
|
+
int lookupDev(const string &drv_name,
|
|
1152
|
+
const string &dev_name) const PJSUA2_THROW(Error);
|
|
1153
|
+
|
|
1154
|
+
/**
|
|
1155
|
+
* Get string info for the specified capability.
|
|
1156
|
+
*
|
|
1157
|
+
* @param cap The capability ID.
|
|
1158
|
+
*
|
|
1159
|
+
* @return Capability name.
|
|
1160
|
+
*/
|
|
1161
|
+
string capName(pjmedia_aud_dev_cap cap) const;
|
|
1162
|
+
|
|
1163
|
+
/**
|
|
1164
|
+
* This will configure audio format capability (other than PCM) to the
|
|
1165
|
+
* sound device being used. If sound device is currently active, the method
|
|
1166
|
+
* will forward the setting to the sound device instance to be applied
|
|
1167
|
+
* immediately, if it supports it.
|
|
1168
|
+
*
|
|
1169
|
+
* This method is only valid if the device has
|
|
1170
|
+
* PJMEDIA_AUD_DEV_CAP_EXT_FORMAT capability in AudioDevInfo.caps flags,
|
|
1171
|
+
* otherwise Error will be thrown.
|
|
1172
|
+
*
|
|
1173
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
1174
|
+
* to any devices, even when application has changed the sound device to be
|
|
1175
|
+
* used.
|
|
1176
|
+
*
|
|
1177
|
+
* @param format The audio format.
|
|
1178
|
+
* @param keep Specify whether the setting is to be kept for
|
|
1179
|
+
* future use.
|
|
1180
|
+
*
|
|
1181
|
+
*/
|
|
1182
|
+
void setExtFormat(const MediaFormatAudio &format, bool keep=true)
|
|
1183
|
+
PJSUA2_THROW(Error);
|
|
1184
|
+
|
|
1185
|
+
/**
|
|
1186
|
+
* Get the audio format capability (other than PCM) of the sound device
|
|
1187
|
+
* being used. If sound device is currently active, the method will forward
|
|
1188
|
+
* the request to the sound device. If sound device is currently inactive,
|
|
1189
|
+
* and if application had previously set the setting and mark the setting
|
|
1190
|
+
* as kept, then that setting will be returned. Otherwise, this method
|
|
1191
|
+
* will raise error.
|
|
1192
|
+
*
|
|
1193
|
+
* This method is only valid if the device has
|
|
1194
|
+
* PJMEDIA_AUD_DEV_CAP_EXT_FORMAT capability in AudioDevInfo.caps flags,
|
|
1195
|
+
* otherwise Error will be thrown.
|
|
1196
|
+
*
|
|
1197
|
+
* @return The audio format.
|
|
1198
|
+
*
|
|
1199
|
+
*/
|
|
1200
|
+
MediaFormatAudio getExtFormat() const PJSUA2_THROW(Error);
|
|
1201
|
+
|
|
1202
|
+
/**
|
|
1203
|
+
* This will configure audio input latency control or query capability to
|
|
1204
|
+
* the sound device being used. If sound device is currently active,
|
|
1205
|
+
* the method will forward the setting to the sound device instance to be
|
|
1206
|
+
* applied immediately, if it supports it.
|
|
1207
|
+
*
|
|
1208
|
+
* This method is only valid if the device has
|
|
1209
|
+
* PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY capability in AudioDevInfo.caps flags,
|
|
1210
|
+
* otherwise Error will be thrown.
|
|
1211
|
+
*
|
|
1212
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
1213
|
+
* to any devices, even when application has changed the sound device to be
|
|
1214
|
+
* used.
|
|
1215
|
+
*
|
|
1216
|
+
* @param latency_msec The input latency.
|
|
1217
|
+
* @param keep Specify whether the setting is to be kept
|
|
1218
|
+
* for future use.
|
|
1219
|
+
*/
|
|
1220
|
+
void
|
|
1221
|
+
setInputLatency(unsigned latency_msec, bool keep=true) PJSUA2_THROW(Error);
|
|
1222
|
+
|
|
1223
|
+
/**
|
|
1224
|
+
* Get the audio input latency control or query capability of the sound
|
|
1225
|
+
* device being used. If sound device is currently active, the method will
|
|
1226
|
+
* forward the request to the sound device. If sound device is currently
|
|
1227
|
+
* inactive, and if application had previously set the setting and mark the
|
|
1228
|
+
* setting as kept, then that setting will be returned. Otherwise, this
|
|
1229
|
+
* method will raise error.
|
|
1230
|
+
*
|
|
1231
|
+
* This method is only valid if the device has
|
|
1232
|
+
* PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY capability in AudioDevInfo.caps flags,
|
|
1233
|
+
* otherwise Error will be thrown.
|
|
1234
|
+
*
|
|
1235
|
+
* @return The audio input latency.
|
|
1236
|
+
*
|
|
1237
|
+
*/
|
|
1238
|
+
unsigned getInputLatency() const PJSUA2_THROW(Error);
|
|
1239
|
+
|
|
1240
|
+
/**
|
|
1241
|
+
* This will configure audio output latency control or query capability to
|
|
1242
|
+
* the sound device being used. If sound device is currently active,
|
|
1243
|
+
* the method will forward the setting to the sound device instance to be
|
|
1244
|
+
* applied immediately, if it supports it.
|
|
1245
|
+
*
|
|
1246
|
+
* This method is only valid if the device has
|
|
1247
|
+
* PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY capability in AudioDevInfo.caps flags,
|
|
1248
|
+
* otherwise Error will be thrown.
|
|
1249
|
+
*
|
|
1250
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
1251
|
+
* to any devices, even when application has changed the sound device to be
|
|
1252
|
+
* used.
|
|
1253
|
+
*
|
|
1254
|
+
* @param latency_msec The output latency.
|
|
1255
|
+
* @param keep Specify whether the setting is to be kept
|
|
1256
|
+
* for future use.
|
|
1257
|
+
*
|
|
1258
|
+
*/
|
|
1259
|
+
void
|
|
1260
|
+
setOutputLatency(unsigned latency_msec, bool keep=true) PJSUA2_THROW(Error);
|
|
1261
|
+
|
|
1262
|
+
/**
|
|
1263
|
+
* Get the audio output latency control or query capability of the sound
|
|
1264
|
+
* device being used. If sound device is currently active, the method will
|
|
1265
|
+
* forward the request to the sound device. If sound device is currently
|
|
1266
|
+
* inactive, and if application had previously set the setting and mark the
|
|
1267
|
+
* setting as kept, then that setting will be returned. Otherwise, this
|
|
1268
|
+
* method will raise error.
|
|
1269
|
+
*
|
|
1270
|
+
* This method is only valid if the device has
|
|
1271
|
+
* PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY capability in AudioDevInfo.caps flags,
|
|
1272
|
+
* otherwise Error will be thrown.
|
|
1273
|
+
*
|
|
1274
|
+
* @return The audio output latency.
|
|
1275
|
+
*
|
|
1276
|
+
*/
|
|
1277
|
+
unsigned getOutputLatency() const PJSUA2_THROW(Error);
|
|
1278
|
+
|
|
1279
|
+
/**
|
|
1280
|
+
* This will configure audio input volume level capability to the
|
|
1281
|
+
* sound device being used.
|
|
1282
|
+
* If sound device is currently active, the method will forward the
|
|
1283
|
+
* setting to the sound device instance to be applied immediately,
|
|
1284
|
+
* if it supports it.
|
|
1285
|
+
*
|
|
1286
|
+
* This method is only valid if the device has
|
|
1287
|
+
* PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING capability in AudioDevInfo.caps
|
|
1288
|
+
* flags, otherwise Error will be thrown.
|
|
1289
|
+
*
|
|
1290
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
1291
|
+
* to any devices, even when application has changed the sound device to be
|
|
1292
|
+
* used.
|
|
1293
|
+
*
|
|
1294
|
+
* @param volume The input volume level, in percent.
|
|
1295
|
+
* @param keep Specify whether the setting is to be kept for
|
|
1296
|
+
* future use.
|
|
1297
|
+
*
|
|
1298
|
+
*/
|
|
1299
|
+
void setInputVolume(unsigned volume, bool keep=true) PJSUA2_THROW(Error);
|
|
1300
|
+
|
|
1301
|
+
/**
|
|
1302
|
+
* Get the audio input volume level capability of the sound device being
|
|
1303
|
+
* used. If sound device is currently active, the method will forward the
|
|
1304
|
+
* request to the sound device. If sound device is currently inactive,
|
|
1305
|
+
* and if application had previously set the setting and mark the setting
|
|
1306
|
+
* as kept, then that setting will be returned. Otherwise, this method
|
|
1307
|
+
* will raise error.
|
|
1308
|
+
*
|
|
1309
|
+
* This method is only valid if the device has
|
|
1310
|
+
* PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING capability in AudioDevInfo.caps
|
|
1311
|
+
* flags, otherwise Error will be thrown. *
|
|
1312
|
+
|
|
1313
|
+
* @return The audio input volume level, in percent.
|
|
1314
|
+
*
|
|
1315
|
+
*/
|
|
1316
|
+
unsigned getInputVolume() const PJSUA2_THROW(Error);
|
|
1317
|
+
|
|
1318
|
+
/**
|
|
1319
|
+
* This will configure audio output volume level capability to the sound
|
|
1320
|
+
* device being used. If sound device is currently active, the method will
|
|
1321
|
+
* forward the setting to the sound device instance to be applied
|
|
1322
|
+
* immediately, if it supports it.
|
|
1323
|
+
*
|
|
1324
|
+
* This method is only valid if the device has
|
|
1325
|
+
* PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING capability in AudioDevInfo.caps
|
|
1326
|
+
* flags, otherwise Error will be thrown.
|
|
1327
|
+
*
|
|
1328
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
1329
|
+
* to any devices, even when application has changed the sound device to be
|
|
1330
|
+
* used.
|
|
1331
|
+
*
|
|
1332
|
+
* @param volume The output volume level, in percent.
|
|
1333
|
+
* @param keep Specify whether the setting is to be kept
|
|
1334
|
+
* for future use.
|
|
1335
|
+
*
|
|
1336
|
+
*/
|
|
1337
|
+
void setOutputVolume(unsigned volume, bool keep=true) PJSUA2_THROW(Error);
|
|
1338
|
+
|
|
1339
|
+
/**
|
|
1340
|
+
* Get the audio output volume level capability of the sound device being
|
|
1341
|
+
* used. If sound device is currently active, the method will forward the
|
|
1342
|
+
* request to the sound device. If sound device is currently inactive,
|
|
1343
|
+
* and if application had previously set the setting and mark the setting
|
|
1344
|
+
* as kept, then that setting will be returned. Otherwise, this method
|
|
1345
|
+
* will raise error.
|
|
1346
|
+
*
|
|
1347
|
+
* This method is only valid if the device has
|
|
1348
|
+
* PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING capability in AudioDevInfo.caps
|
|
1349
|
+
* flags, otherwise Error will be thrown.
|
|
1350
|
+
*
|
|
1351
|
+
* @return The audio output volume level, in percent.
|
|
1352
|
+
*
|
|
1353
|
+
*/
|
|
1354
|
+
unsigned getOutputVolume() const PJSUA2_THROW(Error);
|
|
1355
|
+
|
|
1356
|
+
/**
|
|
1357
|
+
* Get the audio input signal level capability of the sound device being
|
|
1358
|
+
* used. If sound device is currently active, the method will forward the
|
|
1359
|
+
* request to the sound device. If sound device is currently inactive,
|
|
1360
|
+
* and if application had previously set the setting and mark the setting
|
|
1361
|
+
* as kept, then that setting will be returned. Otherwise, this method
|
|
1362
|
+
* will raise error.
|
|
1363
|
+
*
|
|
1364
|
+
* This method is only valid if the device has
|
|
1365
|
+
* PJMEDIA_AUD_DEV_CAP_INPUT_SIGNAL_METER capability in AudioDevInfo.caps
|
|
1366
|
+
* flags, otherwise Error will be thrown.
|
|
1367
|
+
*
|
|
1368
|
+
* @return The audio input signal level, in percent.
|
|
1369
|
+
*
|
|
1370
|
+
*/
|
|
1371
|
+
unsigned getInputSignal() const PJSUA2_THROW(Error);
|
|
1372
|
+
|
|
1373
|
+
/**
|
|
1374
|
+
* Get the audio output signal level capability of the sound device being
|
|
1375
|
+
* used. If sound device is currently active, the method will forward the
|
|
1376
|
+
* request to the sound device. If sound device is currently inactive,
|
|
1377
|
+
* and if application had previously set the setting and mark the setting
|
|
1378
|
+
* as kept, then that setting will be returned. Otherwise, this method
|
|
1379
|
+
* will raise error.
|
|
1380
|
+
*
|
|
1381
|
+
* This method is only valid if the device has
|
|
1382
|
+
* PJMEDIA_AUD_DEV_CAP_OUTPUT_SIGNAL_METER capability in AudioDevInfo.caps
|
|
1383
|
+
* flags, otherwise Error will be thrown.
|
|
1384
|
+
*
|
|
1385
|
+
* @return The audio output signal level, in percent.
|
|
1386
|
+
*
|
|
1387
|
+
*/
|
|
1388
|
+
unsigned getOutputSignal() const PJSUA2_THROW(Error);
|
|
1389
|
+
|
|
1390
|
+
/**
|
|
1391
|
+
* This will configure audio input route capability to the sound device
|
|
1392
|
+
* being used. If sound device is currently active, the method will
|
|
1393
|
+
* forward the setting to the sound device instance to be applied
|
|
1394
|
+
* immediately, if it supports it.
|
|
1395
|
+
*
|
|
1396
|
+
* This method is only valid if the device has
|
|
1397
|
+
* PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE capability in AudioDevInfo.caps
|
|
1398
|
+
* flags, otherwise Error will be thrown.
|
|
1399
|
+
*
|
|
1400
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
1401
|
+
* to any devices, even when application has changed the sound device to be
|
|
1402
|
+
* used.
|
|
1403
|
+
*
|
|
1404
|
+
* @param route The audio input route.
|
|
1405
|
+
* @param keep Specify whether the setting is to be kept
|
|
1406
|
+
* for future use.
|
|
1407
|
+
*
|
|
1408
|
+
*/
|
|
1409
|
+
void setInputRoute(pjmedia_aud_dev_route route, bool keep=true)
|
|
1410
|
+
PJSUA2_THROW(Error);
|
|
1411
|
+
|
|
1412
|
+
/**
|
|
1413
|
+
* Get the audio input route capability of the sound device being used.
|
|
1414
|
+
* If sound device is currently active, the method will forward the
|
|
1415
|
+
* request to the sound device. If sound device is currently inactive,
|
|
1416
|
+
* and if application had previously set the setting and mark the setting
|
|
1417
|
+
* as kept, then that setting will be returned. Otherwise, this method
|
|
1418
|
+
* will raise error.
|
|
1419
|
+
*
|
|
1420
|
+
* This method is only valid if the device has
|
|
1421
|
+
* PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE capability in AudioDevInfo.caps
|
|
1422
|
+
* flags, otherwise Error will be thrown.
|
|
1423
|
+
*
|
|
1424
|
+
* @return The audio input route.
|
|
1425
|
+
*
|
|
1426
|
+
*/
|
|
1427
|
+
pjmedia_aud_dev_route getInputRoute() const PJSUA2_THROW(Error);
|
|
1428
|
+
|
|
1429
|
+
/**
|
|
1430
|
+
* This will configure audio output route capability to the sound device
|
|
1431
|
+
* being used. If sound device is currently active, the method will
|
|
1432
|
+
* forward the setting to the sound device instance to be applied
|
|
1433
|
+
* immediately, if it supports it.
|
|
1434
|
+
*
|
|
1435
|
+
* This method is only valid if the device has
|
|
1436
|
+
* PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE capability in AudioDevInfo.caps
|
|
1437
|
+
* flags, otherwise Error will be thrown.
|
|
1438
|
+
*
|
|
1439
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
1440
|
+
* to any devices, even when application has changed the sound device to be
|
|
1441
|
+
* used.
|
|
1442
|
+
*
|
|
1443
|
+
* @param route The audio output route.
|
|
1444
|
+
* @param keep Specify whether the setting is to be kept
|
|
1445
|
+
* for future use.
|
|
1446
|
+
*
|
|
1447
|
+
*/
|
|
1448
|
+
void setOutputRoute(pjmedia_aud_dev_route route, bool keep=true)
|
|
1449
|
+
PJSUA2_THROW(Error);
|
|
1450
|
+
|
|
1451
|
+
/**
|
|
1452
|
+
* Get the audio output route capability of the sound device being used.
|
|
1453
|
+
* If sound device is currently active, the method will forward the
|
|
1454
|
+
* request to the sound device. If sound device is currently inactive,
|
|
1455
|
+
* and if application had previously set the setting and mark the setting
|
|
1456
|
+
* as kept, then that setting will be returned. Otherwise, this method
|
|
1457
|
+
* will raise error.
|
|
1458
|
+
*
|
|
1459
|
+
* This method is only valid if the device has
|
|
1460
|
+
* PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE capability in AudioDevInfo.caps
|
|
1461
|
+
* flags, otherwise Error will be thrown.
|
|
1462
|
+
*
|
|
1463
|
+
* @return The audio output route.
|
|
1464
|
+
*
|
|
1465
|
+
*/
|
|
1466
|
+
pjmedia_aud_dev_route getOutputRoute() const PJSUA2_THROW(Error);
|
|
1467
|
+
|
|
1468
|
+
/**
|
|
1469
|
+
* This will configure audio voice activity detection capability to
|
|
1470
|
+
* the sound device being used. If sound device is currently active,
|
|
1471
|
+
* the method will forward the setting to the sound device instance
|
|
1472
|
+
* to be applied immediately, if it supports it.
|
|
1473
|
+
*
|
|
1474
|
+
* This method is only valid if the device has PJMEDIA_AUD_DEV_CAP_VAD
|
|
1475
|
+
* capability in AudioDevInfo.caps flags, otherwise Error will be thrown.
|
|
1476
|
+
*
|
|
1477
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
1478
|
+
* to any devices, even when application has changed the sound device to be
|
|
1479
|
+
* used.
|
|
1480
|
+
*
|
|
1481
|
+
* @param enable Enable/disable voice activity detection
|
|
1482
|
+
* feature. Set true to enable.
|
|
1483
|
+
* @param keep Specify whether the setting is to be kept for
|
|
1484
|
+
* future use.
|
|
1485
|
+
*
|
|
1486
|
+
*/
|
|
1487
|
+
void setVad(bool enable, bool keep=true) PJSUA2_THROW(Error);
|
|
1488
|
+
|
|
1489
|
+
/**
|
|
1490
|
+
* Get the audio voice activity detection capability of the sound device
|
|
1491
|
+
* being used. If sound device is currently active, the method will
|
|
1492
|
+
* forward the request to the sound device. If sound device is currently
|
|
1493
|
+
* inactive, and if application had previously set the setting and mark
|
|
1494
|
+
* the setting as kept, then that setting will be returned. Otherwise,
|
|
1495
|
+
* this method will raise error.
|
|
1496
|
+
*
|
|
1497
|
+
* This method is only valid if the device has PJMEDIA_AUD_DEV_CAP_VAD
|
|
1498
|
+
* capability in AudioDevInfo.caps flags, otherwise Error will be thrown.
|
|
1499
|
+
*
|
|
1500
|
+
* @return The audio voice activity detection feature.
|
|
1501
|
+
*
|
|
1502
|
+
*/
|
|
1503
|
+
bool getVad() const PJSUA2_THROW(Error);
|
|
1504
|
+
|
|
1505
|
+
/**
|
|
1506
|
+
* This will configure audio comfort noise generation capability to
|
|
1507
|
+
* the sound device being used. If sound device is currently active,
|
|
1508
|
+
* the method will forward the setting to the sound device instance
|
|
1509
|
+
* to be applied immediately, if it supports it.
|
|
1510
|
+
*
|
|
1511
|
+
* This method is only valid if the device has PJMEDIA_AUD_DEV_CAP_CNG
|
|
1512
|
+
* capability in AudioDevInfo.caps flags, otherwise Error will be thrown.
|
|
1513
|
+
*
|
|
1514
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
1515
|
+
* to any devices, even when application has changed the sound device to be
|
|
1516
|
+
* used.
|
|
1517
|
+
*
|
|
1518
|
+
* @param enable Enable/disable comfort noise generation
|
|
1519
|
+
* feature. Set true to enable.
|
|
1520
|
+
* @param keep Specify whether the setting is to be kept for
|
|
1521
|
+
* future use.
|
|
1522
|
+
*
|
|
1523
|
+
*/
|
|
1524
|
+
void setCng(bool enable, bool keep=true) PJSUA2_THROW(Error);
|
|
1525
|
+
|
|
1526
|
+
/**
|
|
1527
|
+
* Get the audio comfort noise generation capability of the sound device
|
|
1528
|
+
* being used. If sound device is currently active, the method will
|
|
1529
|
+
* forward the request to the sound device. If sound device is currently
|
|
1530
|
+
* inactive, and if application had previously set the setting and mark
|
|
1531
|
+
* the setting as kept, then that setting will be returned. Otherwise,
|
|
1532
|
+
* this method will raise error.
|
|
1533
|
+
*
|
|
1534
|
+
* This method is only valid if the device has PJMEDIA_AUD_DEV_CAP_CNG
|
|
1535
|
+
* capability in AudioDevInfo.caps flags, otherwise Error will be thrown.
|
|
1536
|
+
*
|
|
1537
|
+
* @return The audio comfort noise generation feature.
|
|
1538
|
+
*
|
|
1539
|
+
*/
|
|
1540
|
+
bool getCng() const PJSUA2_THROW(Error);
|
|
1541
|
+
|
|
1542
|
+
/**
|
|
1543
|
+
* This will configure audio packet loss concealment capability to
|
|
1544
|
+
* the sound device being used. If sound device is currently active,
|
|
1545
|
+
* the method will forward the setting to the sound device instance
|
|
1546
|
+
* to be applied immediately, if it supports it.
|
|
1547
|
+
*
|
|
1548
|
+
* This method is only valid if the device has PJMEDIA_AUD_DEV_CAP_PLC
|
|
1549
|
+
* capability in AudioDevInfo.caps flags, otherwise Error will be thrown.
|
|
1550
|
+
*
|
|
1551
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
1552
|
+
* to any devices, even when application has changed the sound device to be
|
|
1553
|
+
* used.
|
|
1554
|
+
*
|
|
1555
|
+
* @param enable Enable/disable packet loss concealment
|
|
1556
|
+
* feature. Set true to enable.
|
|
1557
|
+
* @param keep Specify whether the setting is to be kept for
|
|
1558
|
+
* future use.
|
|
1559
|
+
*
|
|
1560
|
+
*/
|
|
1561
|
+
void setPlc(bool enable, bool keep=true) PJSUA2_THROW(Error);
|
|
1562
|
+
|
|
1563
|
+
/**
|
|
1564
|
+
* Get the audio packet loss concealment capability of the sound device
|
|
1565
|
+
* being used. If sound device is currently active, the method will
|
|
1566
|
+
* forward the request to the sound device. If sound device is currently
|
|
1567
|
+
* inactive, and if application had previously set the setting and mark
|
|
1568
|
+
* the setting as kept, then that setting will be returned. Otherwise,
|
|
1569
|
+
* this method will raise error.
|
|
1570
|
+
*
|
|
1571
|
+
* This method is only valid if the device has PJMEDIA_AUD_DEV_CAP_PLC
|
|
1572
|
+
* capability in AudioDevInfo.caps flags, otherwise Error will be thrown.
|
|
1573
|
+
*
|
|
1574
|
+
* @return The audio packet loss concealment feature.
|
|
1575
|
+
*
|
|
1576
|
+
*/
|
|
1577
|
+
bool getPlc() const PJSUA2_THROW(Error);
|
|
1578
|
+
|
|
1579
|
+
private:
|
|
1580
|
+
#if !DEPRECATED_FOR_TICKET_2232
|
|
1581
|
+
AudioDevInfoVector audioDevList;
|
|
1582
|
+
#endif
|
|
1583
|
+
AudioMedia *devMedia;
|
|
1584
|
+
|
|
1585
|
+
/**
|
|
1586
|
+
* Constructor.
|
|
1587
|
+
*/
|
|
1588
|
+
AudDevManager();
|
|
1589
|
+
|
|
1590
|
+
/**
|
|
1591
|
+
* Destructor.
|
|
1592
|
+
*/
|
|
1593
|
+
~AudDevManager();
|
|
1594
|
+
|
|
1595
|
+
void clearAudioDevList();
|
|
1596
|
+
int getActiveDev(bool is_capture) const PJSUA2_THROW(Error);
|
|
1597
|
+
|
|
1598
|
+
friend class Endpoint;
|
|
1599
|
+
};
|
|
1600
|
+
|
|
1601
|
+
|
|
1602
|
+
/**
|
|
1603
|
+
* Extra audio device. This class allows application to have multiple
|
|
1604
|
+
* sound device instances active concurrently.
|
|
1605
|
+
|
|
1606
|
+
* Application may also use this class to improve media clock. Normally
|
|
1607
|
+
* media clock is driven by sound device in master port, but unfortunately
|
|
1608
|
+
* some sound devices may produce jittery clock. To improve media clock,
|
|
1609
|
+
* application can install Null Sound Device (i.e: using
|
|
1610
|
+
* AudDevManager::setNullDev()), which will act as a master port, and
|
|
1611
|
+
* install the sound device as extra sound device.
|
|
1612
|
+
*
|
|
1613
|
+
* Note that extra sound device will not have auto-close upon idle feature.
|
|
1614
|
+
* Also note that the extra sound device only supports mono channel.
|
|
1615
|
+
*/
|
|
1616
|
+
class ExtraAudioDevice : public AudioMedia
|
|
1617
|
+
{
|
|
1618
|
+
public:
|
|
1619
|
+
/**
|
|
1620
|
+
* Constructor.
|
|
1621
|
+
*
|
|
1622
|
+
* @param playdev Playback device ID.
|
|
1623
|
+
* @param recdev Record device ID.
|
|
1624
|
+
*/
|
|
1625
|
+
ExtraAudioDevice(int playdev, int recdev);
|
|
1626
|
+
|
|
1627
|
+
/**
|
|
1628
|
+
* Destructor.
|
|
1629
|
+
*/
|
|
1630
|
+
virtual ~ExtraAudioDevice();
|
|
1631
|
+
|
|
1632
|
+
/**
|
|
1633
|
+
* Open the audio device using format (e.g.: clock rate, bit per sample,
|
|
1634
|
+
* samples per frame) matched to the conference bridge's format, except
|
|
1635
|
+
* the channel count, which will be set to one (mono channel). This will
|
|
1636
|
+
* also register the audio device port to conference bridge.
|
|
1637
|
+
*/
|
|
1638
|
+
void open();
|
|
1639
|
+
|
|
1640
|
+
/**
|
|
1641
|
+
* Close the audio device and unregister the audio device port from the
|
|
1642
|
+
* conference bridge.
|
|
1643
|
+
*/
|
|
1644
|
+
void close() PJSUA2_THROW(Error);
|
|
1645
|
+
|
|
1646
|
+
/**
|
|
1647
|
+
* Is the extra audio device opened?
|
|
1648
|
+
*
|
|
1649
|
+
* @return 'true' if it is opened.
|
|
1650
|
+
*/
|
|
1651
|
+
bool isOpened();
|
|
1652
|
+
|
|
1653
|
+
protected:
|
|
1654
|
+
int playDev;
|
|
1655
|
+
int recDev;
|
|
1656
|
+
void *ext_snd_dev;
|
|
1657
|
+
};
|
|
1658
|
+
|
|
1659
|
+
|
|
1660
|
+
/*************************************************************************
|
|
1661
|
+
* Video media
|
|
1662
|
+
*/
|
|
1663
|
+
|
|
1664
|
+
/**
|
|
1665
|
+
* Representation of media coordinate.
|
|
1666
|
+
*/
|
|
1667
|
+
struct MediaCoordinate
|
|
1668
|
+
{
|
|
1669
|
+
int x; /**< X position of the coordinate */
|
|
1670
|
+
int y; /**< Y position of the coordinate */
|
|
1671
|
+
};
|
|
1672
|
+
|
|
1673
|
+
/**
|
|
1674
|
+
* Representation of media size.
|
|
1675
|
+
*/
|
|
1676
|
+
struct MediaSize
|
|
1677
|
+
{
|
|
1678
|
+
unsigned w; /**< The width. */
|
|
1679
|
+
unsigned h; /**< The height. */
|
|
1680
|
+
};
|
|
1681
|
+
|
|
1682
|
+
|
|
1683
|
+
/**
|
|
1684
|
+
* This structure descibes information about a particular media port that
|
|
1685
|
+
* has been registered into the conference bridge.
|
|
1686
|
+
*/
|
|
1687
|
+
struct VidConfPortInfo
|
|
1688
|
+
{
|
|
1689
|
+
/**
|
|
1690
|
+
* Conference port number.
|
|
1691
|
+
*/
|
|
1692
|
+
int portId;
|
|
1693
|
+
|
|
1694
|
+
/**
|
|
1695
|
+
* Port name.
|
|
1696
|
+
*/
|
|
1697
|
+
string name;
|
|
1698
|
+
|
|
1699
|
+
/**
|
|
1700
|
+
* Media audio format information
|
|
1701
|
+
*/
|
|
1702
|
+
MediaFormatVideo format;
|
|
1703
|
+
|
|
1704
|
+
/**
|
|
1705
|
+
* Array of listeners (in other words, ports where this port is
|
|
1706
|
+
* transmitting to).
|
|
1707
|
+
*/
|
|
1708
|
+
IntVector listeners;
|
|
1709
|
+
|
|
1710
|
+
/**
|
|
1711
|
+
* Array of listeners (in other words, ports where this port is
|
|
1712
|
+
* listening to).
|
|
1713
|
+
*/
|
|
1714
|
+
IntVector transmitters;
|
|
1715
|
+
|
|
1716
|
+
public:
|
|
1717
|
+
/**
|
|
1718
|
+
* Construct from pjsua_conf_port_info.
|
|
1719
|
+
*/
|
|
1720
|
+
void fromPj(const pjsua_vid_conf_port_info &port_info);
|
|
1721
|
+
};
|
|
1722
|
+
|
|
1723
|
+
/**
|
|
1724
|
+
* Parameters for VideoMedia::startTransmit() method.
|
|
1725
|
+
*/
|
|
1726
|
+
struct VideoMediaTransmitParam
|
|
1727
|
+
{
|
|
1728
|
+
};
|
|
1729
|
+
|
|
1730
|
+
/**
|
|
1731
|
+
* Video Media.
|
|
1732
|
+
*/
|
|
1733
|
+
class VideoMedia : public Media
|
|
1734
|
+
{
|
|
1735
|
+
public:
|
|
1736
|
+
/**
|
|
1737
|
+
* Get information about the specified conference port.
|
|
1738
|
+
*/
|
|
1739
|
+
VidConfPortInfo getPortInfo() const PJSUA2_THROW(Error);
|
|
1740
|
+
|
|
1741
|
+
/**
|
|
1742
|
+
* Get port Id.
|
|
1743
|
+
*/
|
|
1744
|
+
int getPortId() const;
|
|
1745
|
+
|
|
1746
|
+
/**
|
|
1747
|
+
* Get information from specific port id.
|
|
1748
|
+
*/
|
|
1749
|
+
static VidConfPortInfo getPortInfoFromId(int port_id) PJSUA2_THROW(Error);
|
|
1750
|
+
|
|
1751
|
+
/**
|
|
1752
|
+
* Establish unidirectional media flow to sink. This media port
|
|
1753
|
+
* will act as a source, and it may transmit to multiple destinations/sink.
|
|
1754
|
+
* And if multiple sources are transmitting to the same sink, the media
|
|
1755
|
+
* will be mixed together. Source and sink may refer to the same Media,
|
|
1756
|
+
* effectively looping the media.
|
|
1757
|
+
*
|
|
1758
|
+
* If bidirectional media flow is desired, application needs to call
|
|
1759
|
+
* this method twice, with the second one called from the opposite source
|
|
1760
|
+
* media.
|
|
1761
|
+
*
|
|
1762
|
+
* @param sink The destination Media.
|
|
1763
|
+
* @param param The parameter.
|
|
1764
|
+
*/
|
|
1765
|
+
void startTransmit(const VideoMedia &sink,
|
|
1766
|
+
const VideoMediaTransmitParam ¶m) const
|
|
1767
|
+
PJSUA2_THROW(Error);
|
|
1768
|
+
|
|
1769
|
+
/**
|
|
1770
|
+
* Stop media flow to destination/sink port.
|
|
1771
|
+
*
|
|
1772
|
+
* @param sink The destination media.
|
|
1773
|
+
*
|
|
1774
|
+
*/
|
|
1775
|
+
void stopTransmit(const VideoMedia &sink) const PJSUA2_THROW(Error);
|
|
1776
|
+
|
|
1777
|
+
/**
|
|
1778
|
+
* Update or refresh port states from video port info. Some port may
|
|
1779
|
+
* change its port info in the middle of a session, for example when
|
|
1780
|
+
* a video stream decoder learns that incoming video size or frame rate
|
|
1781
|
+
* has changed, video conference needs to be informed to update its
|
|
1782
|
+
* internal states.
|
|
1783
|
+
*
|
|
1784
|
+
*/
|
|
1785
|
+
void update() const PJSUA2_THROW(Error);
|
|
1786
|
+
|
|
1787
|
+
/**
|
|
1788
|
+
* Default Constructor.
|
|
1789
|
+
*
|
|
1790
|
+
* Normally application will not create VideoMedia object directly,
|
|
1791
|
+
* but it instantiates a VideoMedia derived class. This is set as public
|
|
1792
|
+
* because some STL vector implementations require it.
|
|
1793
|
+
*/
|
|
1794
|
+
VideoMedia();
|
|
1795
|
+
|
|
1796
|
+
/**
|
|
1797
|
+
* Virtual Destructor
|
|
1798
|
+
*/
|
|
1799
|
+
virtual ~VideoMedia();
|
|
1800
|
+
|
|
1801
|
+
protected:
|
|
1802
|
+
/**
|
|
1803
|
+
* Conference port Id.
|
|
1804
|
+
*/
|
|
1805
|
+
int id;
|
|
1806
|
+
|
|
1807
|
+
protected:
|
|
1808
|
+
/**
|
|
1809
|
+
* This method needs to be called by descendants of this class to register
|
|
1810
|
+
* the media port created to the conference bridge and Endpoint's
|
|
1811
|
+
* media list.
|
|
1812
|
+
*
|
|
1813
|
+
* param port The media port to be registered to the conference bridge.
|
|
1814
|
+
* param pool The memory pool.
|
|
1815
|
+
*/
|
|
1816
|
+
void registerMediaPort(MediaPort port, pj_pool_t *pool) PJSUA2_THROW(Error);
|
|
1817
|
+
|
|
1818
|
+
/**
|
|
1819
|
+
* This method needs to be called by descendants of this class to remove
|
|
1820
|
+
* the media port from the conference bridge and Endpoint's media list.
|
|
1821
|
+
* Descendant should only call this method if it has registered the media
|
|
1822
|
+
* with the previous call to registerMediaPort().
|
|
1823
|
+
*/
|
|
1824
|
+
void unregisterMediaPort();
|
|
1825
|
+
};
|
|
1826
|
+
|
|
1827
|
+
/** Array of Video Media */
|
|
1828
|
+
typedef std::vector<VideoMedia> VideoMediaVector;
|
|
1829
|
+
|
|
1830
|
+
|
|
1831
|
+
/**
|
|
1832
|
+
* Window handle.
|
|
1833
|
+
*/
|
|
1834
|
+
typedef struct WindowHandle {
|
|
1835
|
+
void *window; /**< Window */
|
|
1836
|
+
void *display; /**< Display */
|
|
1837
|
+
} WindowHandle;
|
|
1838
|
+
|
|
1839
|
+
/**
|
|
1840
|
+
* Video window handle.
|
|
1841
|
+
*/
|
|
1842
|
+
struct VideoWindowHandle
|
|
1843
|
+
{
|
|
1844
|
+
/**
|
|
1845
|
+
* The window handle type.
|
|
1846
|
+
*/
|
|
1847
|
+
pjmedia_vid_dev_hwnd_type type;
|
|
1848
|
+
|
|
1849
|
+
/**
|
|
1850
|
+
* The window handle.
|
|
1851
|
+
*/
|
|
1852
|
+
WindowHandle handle;
|
|
1853
|
+
};
|
|
1854
|
+
|
|
1855
|
+
/**
|
|
1856
|
+
* This structure describes video window info.
|
|
1857
|
+
*/
|
|
1858
|
+
typedef struct VideoWindowInfo
|
|
1859
|
+
{
|
|
1860
|
+
/**
|
|
1861
|
+
* Flag to indicate whether this window is a native window,
|
|
1862
|
+
* such as created by built-in preview device. If this field is
|
|
1863
|
+
* true, only the video window handle field of this
|
|
1864
|
+
* structure is valid.
|
|
1865
|
+
*/
|
|
1866
|
+
bool isNative;
|
|
1867
|
+
|
|
1868
|
+
/**
|
|
1869
|
+
* Video window handle.
|
|
1870
|
+
*/
|
|
1871
|
+
VideoWindowHandle winHandle;
|
|
1872
|
+
|
|
1873
|
+
/**
|
|
1874
|
+
* Renderer device ID.
|
|
1875
|
+
*/
|
|
1876
|
+
int renderDeviceId;
|
|
1877
|
+
|
|
1878
|
+
/**
|
|
1879
|
+
* Window show status. The window is hidden if false.
|
|
1880
|
+
*/
|
|
1881
|
+
bool show;
|
|
1882
|
+
|
|
1883
|
+
/**
|
|
1884
|
+
* Window position.
|
|
1885
|
+
*/
|
|
1886
|
+
MediaCoordinate pos;
|
|
1887
|
+
|
|
1888
|
+
/**
|
|
1889
|
+
* Window size.
|
|
1890
|
+
*/
|
|
1891
|
+
MediaSize size;
|
|
1892
|
+
|
|
1893
|
+
} VideoWindowInfo;
|
|
1894
|
+
|
|
1895
|
+
/**
|
|
1896
|
+
* Video window.
|
|
1897
|
+
*/
|
|
1898
|
+
class VideoWindow
|
|
1899
|
+
{
|
|
1900
|
+
public:
|
|
1901
|
+
/**
|
|
1902
|
+
* Constructor
|
|
1903
|
+
*/
|
|
1904
|
+
VideoWindow(int win_id);
|
|
1905
|
+
|
|
1906
|
+
/**
|
|
1907
|
+
* Get window info.
|
|
1908
|
+
*
|
|
1909
|
+
* @return video window info.
|
|
1910
|
+
*/
|
|
1911
|
+
VideoWindowInfo getInfo() const PJSUA2_THROW(Error);
|
|
1912
|
+
|
|
1913
|
+
/**
|
|
1914
|
+
* Get video media or conference bridge port of the renderer of
|
|
1915
|
+
* this video window.
|
|
1916
|
+
*
|
|
1917
|
+
* @return Video media of this renderer window.
|
|
1918
|
+
*/
|
|
1919
|
+
VideoMedia getVideoMedia() PJSUA2_THROW(Error);
|
|
1920
|
+
|
|
1921
|
+
/**
|
|
1922
|
+
* Show or hide window. This operation is not valid for native windows
|
|
1923
|
+
* (VideoWindowInfo.isNative=true), on which native windowing API
|
|
1924
|
+
* must be used instead.
|
|
1925
|
+
*
|
|
1926
|
+
* @param show Set to true to show the window, false to
|
|
1927
|
+
* hide the window.
|
|
1928
|
+
*
|
|
1929
|
+
*/
|
|
1930
|
+
void Show(bool show) PJSUA2_THROW(Error);
|
|
1931
|
+
|
|
1932
|
+
/**
|
|
1933
|
+
* Set video window position. This operation is not valid for native windows
|
|
1934
|
+
* (VideoWindowInfo.isNative=true), on which native windowing API
|
|
1935
|
+
* must be used instead.
|
|
1936
|
+
*
|
|
1937
|
+
* @param pos The window position.
|
|
1938
|
+
*
|
|
1939
|
+
*/
|
|
1940
|
+
void setPos(const MediaCoordinate &pos) PJSUA2_THROW(Error);
|
|
1941
|
+
|
|
1942
|
+
/**
|
|
1943
|
+
* Resize window. This operation is not valid for native windows
|
|
1944
|
+
* (VideoWindowInfo.isNative=true), on which native windowing API
|
|
1945
|
+
* must be used instead.
|
|
1946
|
+
*
|
|
1947
|
+
* @param size The new window size.
|
|
1948
|
+
*
|
|
1949
|
+
*/
|
|
1950
|
+
void setSize(const MediaSize &size) PJSUA2_THROW(Error);
|
|
1951
|
+
|
|
1952
|
+
/**
|
|
1953
|
+
* Rotate the video window. This function will change the video orientation
|
|
1954
|
+
* and also possibly the video window size (width and height get swapped).
|
|
1955
|
+
* This operation is not valid for native windows (VideoWindowInfo.isNative
|
|
1956
|
+
* =true), on which native windowing API must be used instead.
|
|
1957
|
+
*
|
|
1958
|
+
* @param angle The rotation angle in degrees, must be
|
|
1959
|
+
* multiple of 90.
|
|
1960
|
+
* Specify positive value for clockwise rotation or
|
|
1961
|
+
* negative value for counter-clockwise rotation.
|
|
1962
|
+
*/
|
|
1963
|
+
void rotate(int angle) PJSUA2_THROW(Error);
|
|
1964
|
+
|
|
1965
|
+
/**
|
|
1966
|
+
* Set output window. This operation is valid only when the underlying
|
|
1967
|
+
* video device supports PJMEDIA_VIDEO_DEV_CAP_OUTPUT_WINDOW capability AND
|
|
1968
|
+
* allows the output window to be changed on-the-fly, otherwise Error will
|
|
1969
|
+
* be thrown. Currently it is only supported on Android.
|
|
1970
|
+
*
|
|
1971
|
+
* @param win The new output window.
|
|
1972
|
+
*/
|
|
1973
|
+
void setWindow(const VideoWindowHandle &win) PJSUA2_THROW(Error);
|
|
1974
|
+
|
|
1975
|
+
/**
|
|
1976
|
+
* Set video window full-screen. This operation is valid only when the
|
|
1977
|
+
* underlying video device supports PJMEDIA_VID_DEV_CAP_OUTPUT_FULLSCREEN
|
|
1978
|
+
* capability. Currently it is only supported on SDL backend.
|
|
1979
|
+
*
|
|
1980
|
+
* @param enabled Set to true if full screen is desired, false
|
|
1981
|
+
* otherwise.
|
|
1982
|
+
*/
|
|
1983
|
+
void setFullScreen(bool enabled) PJSUA2_THROW(Error);
|
|
1984
|
+
|
|
1985
|
+
/**
|
|
1986
|
+
* Set video window full-screen. This operation is valid only when the
|
|
1987
|
+
* underlying video device supports PJMEDIA_VID_DEV_CAP_OUTPUT_FULLSCREEN
|
|
1988
|
+
* capability. Currently it is only supported on SDL backend.
|
|
1989
|
+
*
|
|
1990
|
+
* @param mode Fullscreen mode, see
|
|
1991
|
+
* pjmedia_vid_dev_fullscreen_flag.
|
|
1992
|
+
*/
|
|
1993
|
+
void setFullScreen2(pjmedia_vid_dev_fullscreen_flag mode)
|
|
1994
|
+
PJSUA2_THROW(Error);
|
|
1995
|
+
|
|
1996
|
+
private:
|
|
1997
|
+
pjsua_vid_win_id winId;
|
|
1998
|
+
};
|
|
1999
|
+
|
|
2000
|
+
/**
|
|
2001
|
+
* This structure contains parameters for VideoPreview::start()
|
|
2002
|
+
*/
|
|
2003
|
+
struct VideoPreviewOpParam {
|
|
2004
|
+
/**
|
|
2005
|
+
* Device ID for the video renderer to be used for rendering the
|
|
2006
|
+
* capture stream for preview. This parameter is ignored if native
|
|
2007
|
+
* preview is being used.
|
|
2008
|
+
*
|
|
2009
|
+
* Default: PJMEDIA_VID_DEFAULT_RENDER_DEV
|
|
2010
|
+
*/
|
|
2011
|
+
pjmedia_vid_dev_index rendId;
|
|
2012
|
+
|
|
2013
|
+
/**
|
|
2014
|
+
* Show window initially.
|
|
2015
|
+
*
|
|
2016
|
+
* Default: PJ_TRUE.
|
|
2017
|
+
*/
|
|
2018
|
+
bool show;
|
|
2019
|
+
|
|
2020
|
+
/**
|
|
2021
|
+
* Window flags. The value is a bitmask combination of
|
|
2022
|
+
* \a pjmedia_vid_dev_wnd_flag.
|
|
2023
|
+
*
|
|
2024
|
+
* Default: 0.
|
|
2025
|
+
*/
|
|
2026
|
+
unsigned windowFlags;
|
|
2027
|
+
|
|
2028
|
+
/**
|
|
2029
|
+
* Media format video. If left uninitialized, this parameter will not be used and
|
|
2030
|
+
* the capture device will be opened using PJMEDIA wrapper default format,
|
|
2031
|
+
* e.g:
|
|
2032
|
+
* - Android : PJMEDIA_FORMAT_I420 using the first supported size and 15fps
|
|
2033
|
+
* - iOS : PJMEDIA_FORMAT_BGRA using size 352x288 and 15fps
|
|
2034
|
+
* Note that when the preview is already opened, this setting will be ignored.
|
|
2035
|
+
*/
|
|
2036
|
+
MediaFormatVideo format;
|
|
2037
|
+
|
|
2038
|
+
/**
|
|
2039
|
+
* Optional output window to be used to display the video preview.
|
|
2040
|
+
* This parameter will only be used if the video device supports
|
|
2041
|
+
* PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW capability and the capability
|
|
2042
|
+
* is not read-only.
|
|
2043
|
+
*/
|
|
2044
|
+
VideoWindowHandle window;
|
|
2045
|
+
|
|
2046
|
+
public:
|
|
2047
|
+
/**
|
|
2048
|
+
* Default constructor initializes with default values.
|
|
2049
|
+
*/
|
|
2050
|
+
VideoPreviewOpParam();
|
|
2051
|
+
|
|
2052
|
+
/**
|
|
2053
|
+
* Convert from pjsip
|
|
2054
|
+
*/
|
|
2055
|
+
void fromPj(const pjsua_vid_preview_param &prm);
|
|
2056
|
+
|
|
2057
|
+
/**
|
|
2058
|
+
* Convert to pjsip
|
|
2059
|
+
*/
|
|
2060
|
+
pjsua_vid_preview_param toPj() const;
|
|
2061
|
+
};
|
|
2062
|
+
|
|
2063
|
+
/**
|
|
2064
|
+
* Video Preview
|
|
2065
|
+
*/
|
|
2066
|
+
class VideoPreview {
|
|
2067
|
+
public:
|
|
2068
|
+
/**
|
|
2069
|
+
* Constructor
|
|
2070
|
+
*/
|
|
2071
|
+
VideoPreview(int dev_id);
|
|
2072
|
+
|
|
2073
|
+
/**
|
|
2074
|
+
* Determine if the specified video input device has built-in native
|
|
2075
|
+
* preview capability. This is a convenience function that is equal to
|
|
2076
|
+
* querying device's capability for PJMEDIA_VID_DEV_CAP_INPUT_PREVIEW
|
|
2077
|
+
* capability.
|
|
2078
|
+
*
|
|
2079
|
+
* @return true if it has.
|
|
2080
|
+
*/
|
|
2081
|
+
bool hasNative();
|
|
2082
|
+
|
|
2083
|
+
/**
|
|
2084
|
+
* Start video preview window for the specified capture device.
|
|
2085
|
+
*
|
|
2086
|
+
* @param param Video preview parameters.
|
|
2087
|
+
*/
|
|
2088
|
+
void start(const VideoPreviewOpParam ¶m) PJSUA2_THROW(Error);
|
|
2089
|
+
|
|
2090
|
+
/**
|
|
2091
|
+
* Stop video preview.
|
|
2092
|
+
*/
|
|
2093
|
+
void stop() PJSUA2_THROW(Error);
|
|
2094
|
+
|
|
2095
|
+
/**
|
|
2096
|
+
* Get the preview window handle associated with the capture device,if any.
|
|
2097
|
+
*/
|
|
2098
|
+
VideoWindow getVideoWindow();
|
|
2099
|
+
|
|
2100
|
+
/**
|
|
2101
|
+
* Get video media or conference bridge port of the video capture device.
|
|
2102
|
+
*
|
|
2103
|
+
* @return Video media of the video capture device.
|
|
2104
|
+
*/
|
|
2105
|
+
VideoMedia getVideoMedia() PJSUA2_THROW(Error);
|
|
2106
|
+
|
|
2107
|
+
private:
|
|
2108
|
+
pjmedia_vid_dev_index devId;
|
|
2109
|
+
pjsua_vid_win_id winId;
|
|
2110
|
+
void updateDevId();
|
|
2111
|
+
};
|
|
2112
|
+
|
|
2113
|
+
/**
|
|
2114
|
+
* Video device information structure.
|
|
2115
|
+
*/
|
|
2116
|
+
struct VideoDevInfo
|
|
2117
|
+
{
|
|
2118
|
+
/**
|
|
2119
|
+
* The device ID
|
|
2120
|
+
*/
|
|
2121
|
+
pjmedia_vid_dev_index id;
|
|
2122
|
+
|
|
2123
|
+
/**
|
|
2124
|
+
* The device name
|
|
2125
|
+
*/
|
|
2126
|
+
string name;
|
|
2127
|
+
|
|
2128
|
+
/**
|
|
2129
|
+
* The underlying driver name
|
|
2130
|
+
*/
|
|
2131
|
+
string driver;
|
|
2132
|
+
|
|
2133
|
+
/**
|
|
2134
|
+
* The supported direction of the video device, i.e. whether it supports
|
|
2135
|
+
* capture only, render only, or both.
|
|
2136
|
+
*/
|
|
2137
|
+
pjmedia_dir dir;
|
|
2138
|
+
|
|
2139
|
+
/**
|
|
2140
|
+
* Device capabilities, as bitmask combination of #pjmedia_vid_dev_cap
|
|
2141
|
+
*/
|
|
2142
|
+
unsigned caps;
|
|
2143
|
+
|
|
2144
|
+
/**
|
|
2145
|
+
* Array of supported video formats. Some fields in each supported video
|
|
2146
|
+
* format may be set to zero or of "unknown" value, to indicate that the
|
|
2147
|
+
* value is unknown or should be ignored. When these value are not set
|
|
2148
|
+
* to zero, it indicates that the exact format combination is being used.
|
|
2149
|
+
*/
|
|
2150
|
+
MediaFormatVideoVector fmt;
|
|
2151
|
+
|
|
2152
|
+
public:
|
|
2153
|
+
/**
|
|
2154
|
+
* Default constructor
|
|
2155
|
+
*/
|
|
2156
|
+
VideoDevInfo() : id(-1), dir(PJMEDIA_DIR_NONE), caps(0)
|
|
2157
|
+
{}
|
|
2158
|
+
|
|
2159
|
+
/**
|
|
2160
|
+
* Construct from pjmedia_vid_dev_info.
|
|
2161
|
+
*/
|
|
2162
|
+
void fromPj(const pjmedia_vid_dev_info &dev_info);
|
|
2163
|
+
|
|
2164
|
+
/**
|
|
2165
|
+
* Destructor.
|
|
2166
|
+
*/
|
|
2167
|
+
~VideoDevInfo();
|
|
2168
|
+
};
|
|
2169
|
+
|
|
2170
|
+
/**
|
|
2171
|
+
* Warning: deprecated, use VideoDevInfoVector2 instead.
|
|
2172
|
+
*
|
|
2173
|
+
* Array of video device info.
|
|
2174
|
+
*/
|
|
2175
|
+
typedef std::vector<VideoDevInfo*> VideoDevInfoVector;
|
|
2176
|
+
|
|
2177
|
+
/** Array of video device info */
|
|
2178
|
+
typedef std::vector<VideoDevInfo> VideoDevInfoVector2;
|
|
2179
|
+
|
|
2180
|
+
/**
|
|
2181
|
+
* Parameter for switching device with PJMEDIA_VID_DEV_CAP_SWITCH capability.
|
|
2182
|
+
*/
|
|
2183
|
+
struct VideoSwitchParam
|
|
2184
|
+
{
|
|
2185
|
+
/**
|
|
2186
|
+
* Target device ID to switch to. Once the switching is successful, the
|
|
2187
|
+
* video stream will use this device and the old device will be closed.
|
|
2188
|
+
*/
|
|
2189
|
+
pjmedia_vid_dev_index target_id;
|
|
2190
|
+
};
|
|
2191
|
+
|
|
2192
|
+
/**
|
|
2193
|
+
* Video device manager.
|
|
2194
|
+
*/
|
|
2195
|
+
class VidDevManager {
|
|
2196
|
+
public:
|
|
2197
|
+
|
|
2198
|
+
/**
|
|
2199
|
+
* Initialize the video device subsystem. This will register all supported
|
|
2200
|
+
* video device factories to the video device subsystem.
|
|
2201
|
+
*
|
|
2202
|
+
* By default, library will initialize video device subsystem automatically
|
|
2203
|
+
* on library initialization, so application will never need to invoke this
|
|
2204
|
+
* function. However, when PJSUA_DONT_INIT_VID_DEV_SUBSYS is set to
|
|
2205
|
+
* non-zero, application should invoke this function before accessing
|
|
2206
|
+
* video device.
|
|
2207
|
+
*/
|
|
2208
|
+
void initSubsys() PJSUA2_THROW(Error);
|
|
2209
|
+
|
|
2210
|
+
/**
|
|
2211
|
+
* Refresh the list of video devices installed in the system. This function
|
|
2212
|
+
* will only refresh the list of video device so all active video streams
|
|
2213
|
+
* will be unaffected. After refreshing the device list, application MUST
|
|
2214
|
+
* make sure to update all index references to video devices (i.e. all
|
|
2215
|
+
* variables of type pjmedia_vid_dev_index) before calling any function
|
|
2216
|
+
* that accepts video device index as its parameter.
|
|
2217
|
+
*/
|
|
2218
|
+
void refreshDevs() PJSUA2_THROW(Error);
|
|
2219
|
+
|
|
2220
|
+
/**
|
|
2221
|
+
* Get the number of video devices installed in the system.
|
|
2222
|
+
*
|
|
2223
|
+
* @return The number of devices.
|
|
2224
|
+
*/
|
|
2225
|
+
unsigned getDevCount();
|
|
2226
|
+
|
|
2227
|
+
/**
|
|
2228
|
+
* Retrieve the video device info for the specified device index.
|
|
2229
|
+
*
|
|
2230
|
+
* @param dev_id The video device id
|
|
2231
|
+
*
|
|
2232
|
+
* @return The list of video device info
|
|
2233
|
+
*/
|
|
2234
|
+
VideoDevInfo getDevInfo(int dev_id) const PJSUA2_THROW(Error);
|
|
2235
|
+
|
|
2236
|
+
#if !DEPRECATED_FOR_TICKET_2232
|
|
2237
|
+
/**
|
|
2238
|
+
* Warning: deprecated, use enumDev2() instead. This function is not
|
|
2239
|
+
* safe in multithreaded environment.
|
|
2240
|
+
*
|
|
2241
|
+
* Enum all video devices installed in the system.
|
|
2242
|
+
*
|
|
2243
|
+
* @return The list of video device info
|
|
2244
|
+
*/
|
|
2245
|
+
const VideoDevInfoVector &enumDev() PJSUA2_THROW(Error);
|
|
2246
|
+
#endif
|
|
2247
|
+
|
|
2248
|
+
/**
|
|
2249
|
+
* Enum all video devices installed in the system.
|
|
2250
|
+
*
|
|
2251
|
+
* @return The list of video device info
|
|
2252
|
+
*/
|
|
2253
|
+
VideoDevInfoVector2 enumDev2() const PJSUA2_THROW(Error);
|
|
2254
|
+
|
|
2255
|
+
/**
|
|
2256
|
+
* Lookup device index based on the driver and device name.
|
|
2257
|
+
*
|
|
2258
|
+
* @param drv_name The driver name.
|
|
2259
|
+
* @param dev_name The device name.
|
|
2260
|
+
*
|
|
2261
|
+
* @return The device ID. If the device is not found,
|
|
2262
|
+
* Error will be thrown.
|
|
2263
|
+
*/
|
|
2264
|
+
int lookupDev(const string &drv_name,
|
|
2265
|
+
const string &dev_name) const PJSUA2_THROW(Error);
|
|
2266
|
+
|
|
2267
|
+
/**
|
|
2268
|
+
* Get string info for the specified capability.
|
|
2269
|
+
*
|
|
2270
|
+
* @param cap The capability ID.
|
|
2271
|
+
*
|
|
2272
|
+
* @return Capability name.
|
|
2273
|
+
*/
|
|
2274
|
+
string capName(pjmedia_vid_dev_cap cap) const;
|
|
2275
|
+
|
|
2276
|
+
/**
|
|
2277
|
+
* This will configure video format capability to the video device.
|
|
2278
|
+
* If video device is currently active, the method will forward the setting
|
|
2279
|
+
* to the video device instance to be applied immediately, if it
|
|
2280
|
+
* supports it.
|
|
2281
|
+
*
|
|
2282
|
+
* This method is only valid if the device has
|
|
2283
|
+
* PJMEDIA_VID_DEV_CAP_FORMAT capability in VideoDevInfo.caps flags,
|
|
2284
|
+
* otherwise Error will be thrown.
|
|
2285
|
+
*
|
|
2286
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
2287
|
+
* to any devices, even when application has changed the video device to be
|
|
2288
|
+
* used.
|
|
2289
|
+
*
|
|
2290
|
+
* @param dev_id The video device id.
|
|
2291
|
+
* @param format The video format.
|
|
2292
|
+
* @param keep Specify whether the setting is to be kept for
|
|
2293
|
+
* future use.
|
|
2294
|
+
*/
|
|
2295
|
+
void setFormat(int dev_id,
|
|
2296
|
+
const MediaFormatVideo &format,
|
|
2297
|
+
bool keep) PJSUA2_THROW(Error);
|
|
2298
|
+
|
|
2299
|
+
/**
|
|
2300
|
+
* Get the video format capability to the video device.
|
|
2301
|
+
* If video device is currently active, the method will forward the request
|
|
2302
|
+
* to the video device. If video device is currently inactive, and if
|
|
2303
|
+
* application had previously set the setting and mark the setting as kept,
|
|
2304
|
+
* then that setting will be returned. Otherwise, this method will
|
|
2305
|
+
* raise error.
|
|
2306
|
+
*
|
|
2307
|
+
* This method is only valid if the device has
|
|
2308
|
+
* PJMEDIA_VID_DEV_CAP_FORMAT capability in VideoDevInfo.caps flags,
|
|
2309
|
+
* otherwise Error will be thrown.
|
|
2310
|
+
*
|
|
2311
|
+
* @param dev_id The video device id.
|
|
2312
|
+
* @return keep The video format.
|
|
2313
|
+
*/
|
|
2314
|
+
MediaFormatVideo getFormat(int dev_id) const PJSUA2_THROW(Error);
|
|
2315
|
+
|
|
2316
|
+
/**
|
|
2317
|
+
* This will configure video format capability to the video device.
|
|
2318
|
+
* If video device is currently active, the method will forward the setting
|
|
2319
|
+
* to the video device instance to be applied immediately, if it
|
|
2320
|
+
* supports it.
|
|
2321
|
+
*
|
|
2322
|
+
* This method is only valid if the device has
|
|
2323
|
+
* PJMEDIA_VID_DEV_CAP_INPUT_SCALE capability in VideoDevInfo.caps flags,
|
|
2324
|
+
* otherwise Error will be thrown.
|
|
2325
|
+
*
|
|
2326
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
2327
|
+
* to any devices, even when application has changed the video device to be
|
|
2328
|
+
* used.
|
|
2329
|
+
*
|
|
2330
|
+
* @param dev_id The video device id.
|
|
2331
|
+
* @param scale The video scale.
|
|
2332
|
+
* @param keep Specify whether the setting is to be kept for
|
|
2333
|
+
* future use.
|
|
2334
|
+
*/
|
|
2335
|
+
void setInputScale(int dev_id,
|
|
2336
|
+
const MediaSize &scale,
|
|
2337
|
+
bool keep) PJSUA2_THROW(Error);
|
|
2338
|
+
|
|
2339
|
+
/**
|
|
2340
|
+
* Get the video input scale capability to the video device.
|
|
2341
|
+
* If video device is currently active, the method will forward the request
|
|
2342
|
+
* to the video device. If video device is currently inactive, and if
|
|
2343
|
+
* application had previously set the setting and mark the setting as kept,
|
|
2344
|
+
* then that setting will be returned. Otherwise, this method will
|
|
2345
|
+
* raise error.
|
|
2346
|
+
*
|
|
2347
|
+
* This method is only valid if the device has
|
|
2348
|
+
* PJMEDIA_VID_DEV_CAP_FORMAT capability in VideoDevInfo.caps flags,
|
|
2349
|
+
* otherwise Error will be thrown.
|
|
2350
|
+
*
|
|
2351
|
+
* @param dev_id The video device id.
|
|
2352
|
+
* @return keep The video format.
|
|
2353
|
+
*/
|
|
2354
|
+
MediaSize getInputScale(int dev_id) const PJSUA2_THROW(Error);
|
|
2355
|
+
|
|
2356
|
+
/**
|
|
2357
|
+
* This will configure fast switching to another video device.
|
|
2358
|
+
* If video device is currently active, the method will forward the setting
|
|
2359
|
+
* to the video device instance to be applied immediately, if it
|
|
2360
|
+
* supports it.
|
|
2361
|
+
*
|
|
2362
|
+
* This method is only valid if the device has
|
|
2363
|
+
* PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW_FLAGS capability in VideoDevInfo.caps
|
|
2364
|
+
* flags, otherwise Error will be thrown.
|
|
2365
|
+
*
|
|
2366
|
+
* Note that in case the setting is kept for future use, it will be applied
|
|
2367
|
+
* to any devices, even when application has changed the video device to be
|
|
2368
|
+
* used.
|
|
2369
|
+
*
|
|
2370
|
+
* @param dev_id The video device id.
|
|
2371
|
+
* @param flags The video window flag.
|
|
2372
|
+
* @param keep Specify whether the setting is to be kept for
|
|
2373
|
+
* future use.
|
|
2374
|
+
*/
|
|
2375
|
+
void setOutputWindowFlags(int dev_id, int flags, bool keep)
|
|
2376
|
+
PJSUA2_THROW(Error);
|
|
2377
|
+
|
|
2378
|
+
/**
|
|
2379
|
+
* Get the window output flags capability to the video device.
|
|
2380
|
+
* If video device is currently active, the method will forward the request
|
|
2381
|
+
* to the video device. If video device is currently inactive, and if
|
|
2382
|
+
* application had previously set the setting and mark the setting as kept,
|
|
2383
|
+
* then that setting will be returned. Otherwise, this method will
|
|
2384
|
+
* raise error.
|
|
2385
|
+
*
|
|
2386
|
+
* This method is only valid if the device has
|
|
2387
|
+
* PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW_FLAGS capability in VideoDevInfo.caps
|
|
2388
|
+
* flags, otherwise Error will be thrown.
|
|
2389
|
+
*
|
|
2390
|
+
* @param dev_id The video device id.
|
|
2391
|
+
* @return keep The video format.
|
|
2392
|
+
*/
|
|
2393
|
+
int getOutputWindowFlags(int dev_id) PJSUA2_THROW(Error);
|
|
2394
|
+
|
|
2395
|
+
/**
|
|
2396
|
+
* This will configure fast switching to another video device.
|
|
2397
|
+
* If video device is currently active, the method will forward the setting
|
|
2398
|
+
* to the video device instance to be applied immediately, if it
|
|
2399
|
+
* supports it.
|
|
2400
|
+
*
|
|
2401
|
+
* This method is only valid if the device has
|
|
2402
|
+
* PJMEDIA_VID_DEV_CAP_SWITCH capability in VideoDevInfo.caps flags,
|
|
2403
|
+
* otherwise Error will be thrown.
|
|
2404
|
+
*
|
|
2405
|
+
* @param dev_id The video device id.
|
|
2406
|
+
* @param param The video switch param.
|
|
2407
|
+
*/
|
|
2408
|
+
void switchDev(int dev_id,
|
|
2409
|
+
const VideoSwitchParam ¶m) PJSUA2_THROW(Error);
|
|
2410
|
+
|
|
2411
|
+
/**
|
|
2412
|
+
* Check whether the video capture device is currently active, i.e. if
|
|
2413
|
+
* a video preview has been started or there is a video call using
|
|
2414
|
+
* the device.
|
|
2415
|
+
*
|
|
2416
|
+
* @param dev_id The video device id
|
|
2417
|
+
*
|
|
2418
|
+
* @return True if it's active.
|
|
2419
|
+
*/
|
|
2420
|
+
bool isCaptureActive(int dev_id) const;
|
|
2421
|
+
|
|
2422
|
+
/**
|
|
2423
|
+
* This will configure video orientation of the video capture device.
|
|
2424
|
+
* If the device is currently active (i.e. if there is a video call
|
|
2425
|
+
* using the device or a video preview has been started), the method
|
|
2426
|
+
* will forward the setting to the video device instance to be applied
|
|
2427
|
+
* immediately, if it supports it.
|
|
2428
|
+
*
|
|
2429
|
+
* The setting will be saved for future opening of the video device,
|
|
2430
|
+
* if the "keep" argument is set to true. If the video device is
|
|
2431
|
+
* currently inactive, and the "keep" argument is false, this method
|
|
2432
|
+
* will throw Error.
|
|
2433
|
+
*
|
|
2434
|
+
* @param dev_id The video device id
|
|
2435
|
+
* @param orient The video orientation.
|
|
2436
|
+
* @param keep Specify whether the setting is to be kept for
|
|
2437
|
+
* future use.
|
|
2438
|
+
*
|
|
2439
|
+
*/
|
|
2440
|
+
void setCaptureOrient(pjmedia_vid_dev_index dev_id,
|
|
2441
|
+
pjmedia_orient orient,
|
|
2442
|
+
bool keep=true) PJSUA2_THROW(Error);
|
|
2443
|
+
|
|
2444
|
+
private:
|
|
2445
|
+
#if !DEPRECATED_FOR_TICKET_2232
|
|
2446
|
+
VideoDevInfoVector videoDevList;
|
|
2447
|
+
#endif
|
|
2448
|
+
|
|
2449
|
+
void clearVideoDevList();
|
|
2450
|
+
|
|
2451
|
+
/**
|
|
2452
|
+
* Constructor.
|
|
2453
|
+
*/
|
|
2454
|
+
VidDevManager();
|
|
2455
|
+
|
|
2456
|
+
/**
|
|
2457
|
+
* Destructor.
|
|
2458
|
+
*/
|
|
2459
|
+
~VidDevManager();
|
|
2460
|
+
|
|
2461
|
+
friend class Endpoint;
|
|
2462
|
+
};
|
|
2463
|
+
|
|
2464
|
+
|
|
2465
|
+
/*************************************************************************
|
|
2466
|
+
* Codec management
|
|
2467
|
+
*/
|
|
2468
|
+
|
|
2469
|
+
/**
|
|
2470
|
+
* This structure describes codec information.
|
|
2471
|
+
*/
|
|
2472
|
+
struct CodecInfo
|
|
2473
|
+
{
|
|
2474
|
+
/**
|
|
2475
|
+
* Codec unique identification.
|
|
2476
|
+
*/
|
|
2477
|
+
string codecId;
|
|
2478
|
+
|
|
2479
|
+
/**
|
|
2480
|
+
* Codec priority (integer 0-255).
|
|
2481
|
+
*/
|
|
2482
|
+
pj_uint8_t priority;
|
|
2483
|
+
|
|
2484
|
+
/**
|
|
2485
|
+
* Codec description.
|
|
2486
|
+
*/
|
|
2487
|
+
string desc;
|
|
2488
|
+
|
|
2489
|
+
/**
|
|
2490
|
+
* Construct from pjsua_codec_info.
|
|
2491
|
+
*/
|
|
2492
|
+
void fromPj(const pjsua_codec_info &codec_info);
|
|
2493
|
+
};
|
|
2494
|
+
|
|
2495
|
+
/**
|
|
2496
|
+
* Warning: deprecated, use CodecInfoVector2 instead.
|
|
2497
|
+
*
|
|
2498
|
+
* Array of codec info.
|
|
2499
|
+
*/
|
|
2500
|
+
typedef std::vector<CodecInfo*> CodecInfoVector;
|
|
2501
|
+
|
|
2502
|
+
/** Array of codec info */
|
|
2503
|
+
typedef std::vector<CodecInfo> CodecInfoVector2;
|
|
2504
|
+
|
|
2505
|
+
/**
|
|
2506
|
+
* Structure of codec specific parameters which contains name=value pairs.
|
|
2507
|
+
* The codec specific parameters are to be used with SDP according to
|
|
2508
|
+
* the standards (e.g: RFC 3555) in SDP 'a=fmtp' attribute.
|
|
2509
|
+
*/
|
|
2510
|
+
typedef struct CodecFmtp
|
|
2511
|
+
{
|
|
2512
|
+
string name; /**< name */
|
|
2513
|
+
string val; /**< value */
|
|
2514
|
+
} CodecFmtp;
|
|
2515
|
+
|
|
2516
|
+
/** Array of codec fmtp */
|
|
2517
|
+
typedef std::vector<CodecFmtp> CodecFmtpVector;
|
|
2518
|
+
|
|
2519
|
+
/**
|
|
2520
|
+
* Audio codec parameters info.
|
|
2521
|
+
*/
|
|
2522
|
+
struct CodecParamInfo
|
|
2523
|
+
{
|
|
2524
|
+
unsigned clockRate; /**< Sampling rate in Hz */
|
|
2525
|
+
unsigned channelCnt; /**< Channel count. */
|
|
2526
|
+
unsigned avgBps; /**< Average bandwidth in bits/sec */
|
|
2527
|
+
unsigned maxBps; /**< Maximum bandwidth in bits/sec */
|
|
2528
|
+
unsigned maxRxFrameSize; /**< Maximum frame size */
|
|
2529
|
+
unsigned frameLen; /**< Decoder frame ptime in msec. */
|
|
2530
|
+
unsigned frameLenDenum; /**< Decoder frame ptime denum, or
|
|
2531
|
+
zero if ptime is integer. */
|
|
2532
|
+
unsigned encFrameLen; /**< Encoder ptime, or zero if it's
|
|
2533
|
+
equal to decoder ptime. */
|
|
2534
|
+
unsigned encFrameLenDenum; /**< Encoder ptime denum, or zero
|
|
2535
|
+
if ptime is integer. */
|
|
2536
|
+
unsigned pcmBitsPerSample; /**< Bits/sample in the PCM side */
|
|
2537
|
+
unsigned pt; /**< Payload type. */
|
|
2538
|
+
pjmedia_format_id fmtId; /**< Source format, it's format of
|
|
2539
|
+
encoder input and decoder
|
|
2540
|
+
output. */
|
|
2541
|
+
public:
|
|
2542
|
+
/**
|
|
2543
|
+
* Default constructor
|
|
2544
|
+
*/
|
|
2545
|
+
CodecParamInfo()
|
|
2546
|
+
: clockRate(0),
|
|
2547
|
+
channelCnt(0),
|
|
2548
|
+
avgBps(0),
|
|
2549
|
+
maxBps(0),
|
|
2550
|
+
maxRxFrameSize(0),
|
|
2551
|
+
frameLen(0),
|
|
2552
|
+
frameLenDenum(0),
|
|
2553
|
+
encFrameLen(0),
|
|
2554
|
+
encFrameLenDenum(0),
|
|
2555
|
+
pcmBitsPerSample(0),
|
|
2556
|
+
pt(0),
|
|
2557
|
+
fmtId(PJMEDIA_FORMAT_L16)
|
|
2558
|
+
{}
|
|
2559
|
+
};
|
|
2560
|
+
|
|
2561
|
+
/**
|
|
2562
|
+
* Audio codec parameters setting.
|
|
2563
|
+
*/
|
|
2564
|
+
struct CodecParamSetting
|
|
2565
|
+
{
|
|
2566
|
+
unsigned frmPerPkt; /**< Number of frames per packet. */
|
|
2567
|
+
bool vad; /**< Voice Activity Detector. */
|
|
2568
|
+
bool cng; /**< Comfort Noise Generator. */
|
|
2569
|
+
bool penh; /**< Perceptual Enhancement */
|
|
2570
|
+
bool plc; /**< Packet loss concealment */
|
|
2571
|
+
bool reserved; /**< Reserved, must be zero. */
|
|
2572
|
+
CodecFmtpVector encFmtp; /**< Encoder's fmtp params. */
|
|
2573
|
+
CodecFmtpVector decFmtp; /**< Decoder's fmtp params. */
|
|
2574
|
+
unsigned packetLoss; /**< Encoder's expected pkt loss %. */
|
|
2575
|
+
unsigned complexity; /**< Encoder complexity, 0-10(max). */
|
|
2576
|
+
bool cbr; /**< Constant bit rate? */
|
|
2577
|
+
};
|
|
2578
|
+
|
|
2579
|
+
/**
|
|
2580
|
+
* Detailed codec attributes used in configuring an audio codec and in querying
|
|
2581
|
+
* the capability of audio codec factories.
|
|
2582
|
+
*
|
|
2583
|
+
* Please note that codec parameter also contains SDP specific setting,
|
|
2584
|
+
* setting::decFmtp and setting::encFmtp, which may need to be set
|
|
2585
|
+
* appropriately based on the effective setting.
|
|
2586
|
+
* See each codec documentation for more detail.
|
|
2587
|
+
*/
|
|
2588
|
+
struct CodecParam
|
|
2589
|
+
{
|
|
2590
|
+
/** info */
|
|
2591
|
+
struct CodecParamInfo info;
|
|
2592
|
+
/** setting */
|
|
2593
|
+
struct CodecParamSetting setting;
|
|
2594
|
+
|
|
2595
|
+
void fromPj(const pjmedia_codec_param ¶m);
|
|
2596
|
+
|
|
2597
|
+
pjmedia_codec_param toPj() const;
|
|
2598
|
+
};
|
|
2599
|
+
|
|
2600
|
+
/**
|
|
2601
|
+
* Opus codec parameters setting;
|
|
2602
|
+
*/
|
|
2603
|
+
struct CodecOpusConfig
|
|
2604
|
+
{
|
|
2605
|
+
unsigned sample_rate; /**< Sample rate in Hz. */
|
|
2606
|
+
unsigned channel_cnt; /**< Number of channels. */
|
|
2607
|
+
unsigned frm_ptime; /**< Frame time in msec. */
|
|
2608
|
+
unsigned frm_ptime_denum;/**< Frame time denumerator. */
|
|
2609
|
+
unsigned bit_rate; /**< Encoder bit rate in bps. */
|
|
2610
|
+
unsigned packet_loss; /**< Encoder's expected packet loss pct. */
|
|
2611
|
+
unsigned complexity; /**< Encoder complexity, 0-10(10 is highest)*/
|
|
2612
|
+
bool cbr; /**< Constant bit rate? */
|
|
2613
|
+
|
|
2614
|
+
pjmedia_codec_opus_config toPj() const;
|
|
2615
|
+
void fromPj(const pjmedia_codec_opus_config &config);
|
|
2616
|
+
};
|
|
2617
|
+
|
|
2618
|
+
/**
|
|
2619
|
+
* Detailed codec attributes used in configuring a video codec and in querying
|
|
2620
|
+
* the capability of video codec factories.
|
|
2621
|
+
*
|
|
2622
|
+
* Please note that codec parameter also contains SDP specific setting,
|
|
2623
|
+
* #decFmtp and #encFmtp, which may need to be set appropriately based on
|
|
2624
|
+
* the effective setting. See each codec documentation for more detail.
|
|
2625
|
+
*/
|
|
2626
|
+
struct VidCodecParam
|
|
2627
|
+
{
|
|
2628
|
+
pjmedia_dir dir; /**< Direction */
|
|
2629
|
+
pjmedia_vid_packing packing; /**< Packetization strategy. */
|
|
2630
|
+
|
|
2631
|
+
struct
|
|
2632
|
+
MediaFormatVideo encFmt; /**< Encoded format */
|
|
2633
|
+
CodecFmtpVector encFmtp; /**< Encoder fmtp params */
|
|
2634
|
+
unsigned encMtu; /**< MTU or max payload size setting*/
|
|
2635
|
+
|
|
2636
|
+
struct
|
|
2637
|
+
MediaFormatVideo decFmt; /**< Decoded format */
|
|
2638
|
+
CodecFmtpVector decFmtp; /**< Decoder fmtp params */
|
|
2639
|
+
|
|
2640
|
+
bool ignoreFmtp; /**< Ignore fmtp params. If set to
|
|
2641
|
+
true, the codec will apply
|
|
2642
|
+
format settings specified in
|
|
2643
|
+
encFmt and decFmt only. */
|
|
2644
|
+
|
|
2645
|
+
public:
|
|
2646
|
+
/**
|
|
2647
|
+
* Default constructor
|
|
2648
|
+
*/
|
|
2649
|
+
VidCodecParam() : dir(PJMEDIA_DIR_NONE),
|
|
2650
|
+
packing(PJMEDIA_VID_PACKING_UNKNOWN),
|
|
2651
|
+
encMtu(0),
|
|
2652
|
+
ignoreFmtp(false)
|
|
2653
|
+
{}
|
|
2654
|
+
|
|
2655
|
+
void fromPj(const pjmedia_vid_codec_param ¶m);
|
|
2656
|
+
|
|
2657
|
+
pjmedia_vid_codec_param toPj() const;
|
|
2658
|
+
};
|
|
2659
|
+
|
|
2660
|
+
|
|
2661
|
+
/*************************************************************************
|
|
2662
|
+
* Media event
|
|
2663
|
+
*/
|
|
2664
|
+
|
|
2665
|
+
/**
|
|
2666
|
+
* This structure describes a media format changed event.
|
|
2667
|
+
*/
|
|
2668
|
+
struct MediaFmtChangedEvent
|
|
2669
|
+
{
|
|
2670
|
+
unsigned newWidth; /**< The new width. */
|
|
2671
|
+
unsigned newHeight; /**< The new height. */
|
|
2672
|
+
};
|
|
2673
|
+
|
|
2674
|
+
/**
|
|
2675
|
+
* This structure describes an audio device error event.
|
|
2676
|
+
*/
|
|
2677
|
+
struct AudDevErrorEvent
|
|
2678
|
+
{
|
|
2679
|
+
pjmedia_dir dir; /**< The direction. */
|
|
2680
|
+
int id; /**< The audio device ID. */
|
|
2681
|
+
pj_status_t status; /**< The status code. */
|
|
2682
|
+
};
|
|
2683
|
+
|
|
2684
|
+
/**
|
|
2685
|
+
* Media event data.
|
|
2686
|
+
*/
|
|
2687
|
+
typedef union MediaEventData {
|
|
2688
|
+
/**
|
|
2689
|
+
* Media format changed event data.
|
|
2690
|
+
*/
|
|
2691
|
+
MediaFmtChangedEvent fmtChanged;
|
|
2692
|
+
|
|
2693
|
+
/**
|
|
2694
|
+
* Audio device error event data.
|
|
2695
|
+
*/
|
|
2696
|
+
AudDevErrorEvent audDevError;
|
|
2697
|
+
|
|
2698
|
+
/**
|
|
2699
|
+
* Pointer to storage to user event data, if it's outside
|
|
2700
|
+
* this struct
|
|
2701
|
+
*/
|
|
2702
|
+
GenericData ptr;
|
|
2703
|
+
|
|
2704
|
+
} MediaEventData;
|
|
2705
|
+
|
|
2706
|
+
/**
|
|
2707
|
+
* This structure describes a media event. It corresponds to the
|
|
2708
|
+
* pjmedia_event structure.
|
|
2709
|
+
*/
|
|
2710
|
+
struct MediaEvent
|
|
2711
|
+
{
|
|
2712
|
+
/**
|
|
2713
|
+
* The event type.
|
|
2714
|
+
*/
|
|
2715
|
+
pjmedia_event_type type;
|
|
2716
|
+
|
|
2717
|
+
/**
|
|
2718
|
+
* Additional data/parameters about the event. The type of data
|
|
2719
|
+
* will be specific to the event type being reported.
|
|
2720
|
+
*/
|
|
2721
|
+
MediaEventData data;
|
|
2722
|
+
|
|
2723
|
+
/**
|
|
2724
|
+
* Pointer to original pjmedia_event. Only valid when the struct
|
|
2725
|
+
* is converted from PJSIP's pjmedia_event.
|
|
2726
|
+
*/
|
|
2727
|
+
void *pjMediaEvent;
|
|
2728
|
+
|
|
2729
|
+
public:
|
|
2730
|
+
/**
|
|
2731
|
+
* Default constructor
|
|
2732
|
+
*/
|
|
2733
|
+
MediaEvent() : type(PJMEDIA_EVENT_NONE), pjMediaEvent(NULL)
|
|
2734
|
+
{}
|
|
2735
|
+
|
|
2736
|
+
/**
|
|
2737
|
+
* Convert from pjsip
|
|
2738
|
+
*/
|
|
2739
|
+
void fromPj(const pjmedia_event &ev);
|
|
2740
|
+
};
|
|
2741
|
+
|
|
2742
|
+
/**
|
|
2743
|
+
* @} // PJSUA2_MED
|
|
2744
|
+
*/
|
|
2745
|
+
|
|
2746
|
+
} // namespace pj
|
|
2747
|
+
|
|
2748
|
+
#endif /* __PJSUA2_MEDIA_HPP__ */
|