@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.
Files changed (644) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +55 -9
  3. package/android/build.gradle +14 -8
  4. package/ios/VoipCloud.mm +214 -28
  5. package/ios/VoipCloud.xcframework/Info.plist +48 -0
  6. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/activesock.h +598 -0
  7. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/addr_resolv.h +189 -0
  8. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/array.h +95 -0
  9. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/assert.h +84 -0
  10. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/assert.h +36 -0
  11. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_armcc.h +57 -0
  12. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_clang.h +64 -0
  13. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_codew.h +55 -0
  14. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_gcc.h +79 -0
  15. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_gcce.h +54 -0
  16. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_msvc.h +87 -0
  17. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/cc_mwcc.h +55 -0
  18. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/ctype.h +44 -0
  19. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/errno.h +44 -0
  20. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/high_precision.h +87 -0
  21. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/limits.h +66 -0
  22. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_alpha.h +35 -0
  23. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_armv4.h +38 -0
  24. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_auto.h +60 -0
  25. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_auto.h.in +59 -0
  26. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_i386.h +34 -0
  27. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_m68k.h +34 -0
  28. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_powerpc.h +35 -0
  29. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_sparc.h +34 -0
  30. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/m_x86_64.h +35 -0
  31. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/malloc.h +33 -0
  32. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_auto.h +245 -0
  33. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_auto.h.in +244 -0
  34. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_darwinos.h +141 -0
  35. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_linux.h +130 -0
  36. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_palmos.h +118 -0
  37. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_rtems.h +138 -0
  38. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_sunos.h +131 -0
  39. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_symbian.h +166 -0
  40. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_win32.h +148 -0
  41. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_win32_wince.h +145 -0
  42. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_winphone8.h +149 -0
  43. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/os_winuwp.h +149 -0
  44. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/rand.h +55 -0
  45. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/setjmp.h +49 -0
  46. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/size_t.h +31 -0
  47. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/socket.h +223 -0
  48. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/stdarg.h +31 -0
  49. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/stdfileio.h +31 -0
  50. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/string.h +178 -0
  51. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/compat/time.h +41 -0
  52. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/config.h +1537 -0
  53. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/config_site.h +22 -0
  54. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/config_site_sample.h +485 -0
  55. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/config_site_test.h +11 -0
  56. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/ctype.h +174 -0
  57. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/doxygen.h +995 -0
  58. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/errno.h +593 -0
  59. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/except.h +420 -0
  60. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/fifobuf.h +43 -0
  61. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/file_access.h +108 -0
  62. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/file_io.h +183 -0
  63. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/guid.h +119 -0
  64. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/hash.h +253 -0
  65. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/ioqueue.h +955 -0
  66. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/ip_helper.h +152 -0
  67. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/limits.h +57 -0
  68. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/list.h +268 -0
  69. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/list_i.h +120 -0
  70. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/lock.h +453 -0
  71. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/log.h +487 -0
  72. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/math.h +203 -0
  73. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/os.h +1536 -0
  74. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/pool.h +918 -0
  75. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/pool_alt.h +212 -0
  76. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/pool_buf.h +104 -0
  77. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/pool_i.h +131 -0
  78. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/rand.h +65 -0
  79. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/rbtree.h +215 -0
  80. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/sock.h +1566 -0
  81. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/sock_qos.h +429 -0
  82. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/sock_select.h +151 -0
  83. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/ssl_sock.h +1508 -0
  84. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/string.h +963 -0
  85. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/string_i.h +406 -0
  86. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/timer.h +386 -0
  87. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/types.h +594 -0
  88. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj/unicode.h +140 -0
  89. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/file.hpp +187 -0
  90. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/hash.hpp +155 -0
  91. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/list.hpp +351 -0
  92. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/lock.hpp +148 -0
  93. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/os.hpp +869 -0
  94. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/pool.hpp +278 -0
  95. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/proactor.hpp +514 -0
  96. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/scanner.hpp +245 -0
  97. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/sock.hpp +443 -0
  98. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/string.hpp +467 -0
  99. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/timer.hpp +197 -0
  100. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/tree.hpp +128 -0
  101. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pj++/types.hpp +174 -0
  102. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib++.hpp +34 -0
  103. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/base64.h +91 -0
  104. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/cli.h +530 -0
  105. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/cli_console.h +116 -0
  106. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/cli_imp.h +207 -0
  107. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/cli_telnet.h +167 -0
  108. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/config.h +373 -0
  109. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/crc32.h +95 -0
  110. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/dns.h +460 -0
  111. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/dns_server.h +116 -0
  112. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/errno.h +455 -0
  113. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/getopt.h +144 -0
  114. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/hmac_md5.h +108 -0
  115. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/hmac_sha1.h +106 -0
  116. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/http_client.h +493 -0
  117. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/json.h +227 -0
  118. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/md5.h +73 -0
  119. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/pcap.h +195 -0
  120. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/resolver.h +515 -0
  121. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/scanner.h +553 -0
  122. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/scanner_cis_bitwise.h +96 -0
  123. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/scanner_cis_uint.h +83 -0
  124. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/sha1.h +79 -0
  125. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/srv_resolver.h +221 -0
  126. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/string.h +101 -0
  127. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/stun_simple.h +288 -0
  128. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/types.h +94 -0
  129. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util/xml.h +248 -0
  130. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib-util.h +75 -0
  131. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjlib.h +62 -0
  132. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/alaw_ulaw.h +212 -0
  133. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/audiodev.h +761 -0
  134. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/avi.h +201 -0
  135. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/avi_stream.h +195 -0
  136. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/bidirectional.h +66 -0
  137. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/circbuf.h +436 -0
  138. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/clock.h +338 -0
  139. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/codec.h +1192 -0
  140. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/conference.h +599 -0
  141. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/config.h +1713 -0
  142. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/config_auto.h +43 -0
  143. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/config_auto.h.in +42 -0
  144. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/converter.h +386 -0
  145. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/delaybuf.h +175 -0
  146. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/doxygen.h +243 -0
  147. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/echo.h +420 -0
  148. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/echo_port.h +73 -0
  149. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/endpoint.h +389 -0
  150. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/errno.h +693 -0
  151. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/event.h +493 -0
  152. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/format.h +821 -0
  153. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/frame.h +331 -0
  154. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/g711.h +88 -0
  155. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/jbuf.h +484 -0
  156. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/master_port.h +198 -0
  157. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/mem_port.h +241 -0
  158. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/null_port.h +69 -0
  159. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/plc.h +114 -0
  160. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/port.h +565 -0
  161. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/resample.h +199 -0
  162. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/rtcp.h +511 -0
  163. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/rtcp_fb.h +487 -0
  164. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/rtcp_xr.h +477 -0
  165. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/rtp.h +457 -0
  166. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/sdp.h +830 -0
  167. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/sdp_neg.h +822 -0
  168. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/session.h +435 -0
  169. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/signatures.h +217 -0
  170. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/silencedet.h +199 -0
  171. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/sound.h +353 -0
  172. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/sound_port.h +397 -0
  173. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/splitcomb.h +142 -0
  174. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/stereo.h +203 -0
  175. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/stream.h +541 -0
  176. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/stream_common.h +123 -0
  177. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/symbian_sound_aps.h +47 -0
  178. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/tonegen.h +302 -0
  179. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport.h +1069 -0
  180. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport_adapter_sample.h +75 -0
  181. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport_ice.h +458 -0
  182. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport_loop.h +158 -0
  183. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport_srtp.h +579 -0
  184. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/transport_udp.h +161 -0
  185. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/types.h +345 -0
  186. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_codec.h +896 -0
  187. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_codec_util.h +194 -0
  188. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_conf.h +310 -0
  189. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_port.h +269 -0
  190. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_stream.h +514 -0
  191. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/vid_tee.h +141 -0
  192. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/videodev.h +859 -0
  193. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/wav_playlist.h +131 -0
  194. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/wav_port.h +342 -0
  195. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/wave.h +183 -0
  196. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia/wsola.h +218 -0
  197. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-audiodev/audiodev.h +110 -0
  198. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-audiodev/audiodev_imp.h +187 -0
  199. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-audiodev/audiotest.h +115 -0
  200. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-audiodev/config.h +525 -0
  201. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-audiodev/errno.h +227 -0
  202. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/amr_helper.h +1236 -0
  203. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/amr_sdp_match.h +60 -0
  204. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/and_aud_mediacodec.h +131 -0
  205. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/and_vid_mediacodec.h +77 -0
  206. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/audio_codecs.h +97 -0
  207. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/bcg729.h +120 -0
  208. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/config.h +720 -0
  209. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/config_auto.h +104 -0
  210. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/config_auto.h.in +103 -0
  211. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/ffmpeg_vid_codecs.h +66 -0
  212. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/g722.h +103 -0
  213. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/g7221.h +164 -0
  214. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/g7221_sdp_match.h +58 -0
  215. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/gsm.h +86 -0
  216. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/h263_packetizer.h +145 -0
  217. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/h264_packetizer.h +163 -0
  218. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/ilbc.h +118 -0
  219. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/ipp_codecs.h +321 -0
  220. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/l16.h +83 -0
  221. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/opencore_amr.h +145 -0
  222. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/openh264.h +68 -0
  223. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/opus.h +160 -0
  224. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/passthrough.h +276 -0
  225. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/silk.h +126 -0
  226. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/speex.h +149 -0
  227. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/types.h +145 -0
  228. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/vid_toolbox.h +70 -0
  229. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/vpx.h +68 -0
  230. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec/vpx_packetizer.h +123 -0
  231. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-codec.h +47 -0
  232. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/avi_dev.h +139 -0
  233. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/config.h +326 -0
  234. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/errno.h +158 -0
  235. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/opengl_dev.h +52 -0
  236. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/videodev.h +119 -0
  237. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia-videodev/videodev_imp.h +229 -0
  238. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia.h +81 -0
  239. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia_audiodev.h +32 -0
  240. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjmedia_videodev.h +30 -0
  241. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/config.h +596 -0
  242. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/errno.h +225 -0
  243. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/ice_session.h +1122 -0
  244. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/ice_strans.h +1112 -0
  245. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/nat_detect.h +233 -0
  246. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_auth.h +456 -0
  247. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_config.h +135 -0
  248. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_msg.h +1856 -0
  249. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_session.h +763 -0
  250. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_sock.h +496 -0
  251. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/stun_transaction.h +291 -0
  252. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/turn_session.h +968 -0
  253. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/turn_sock.h +673 -0
  254. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/types.h +75 -0
  255. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath/upnp.h +147 -0
  256. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjnath.h +46 -0
  257. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/print_util.h +166 -0
  258. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_auth.h +637 -0
  259. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_auth_aka.h +212 -0
  260. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_auth_msg.h +269 -0
  261. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_auth_parser.h +74 -0
  262. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_autoconf.h +39 -0
  263. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_autoconf.h.in +38 -0
  264. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_config.h +1545 -0
  265. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_dialog.h +935 -0
  266. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_endpoint.h +715 -0
  267. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_errno.h +544 -0
  268. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_event.h +230 -0
  269. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_module.h +221 -0
  270. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_msg.h +2134 -0
  271. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_multipart.h +276 -0
  272. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_parser.h +465 -0
  273. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_private.h +31 -0
  274. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_resolve.h +347 -0
  275. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_tel_uri.h +83 -0
  276. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transaction.h +542 -0
  277. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transport.h +1672 -0
  278. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transport_loop.h +146 -0
  279. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transport_tcp.h +300 -0
  280. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transport_tls.h +642 -0
  281. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_transport_udp.h +389 -0
  282. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_types.h +265 -0
  283. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_ua_layer.h +159 -0
  284. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_uri.h +470 -0
  285. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip/sip_util.h +888 -0
  286. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/errno.h +117 -0
  287. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/evsub.h +561 -0
  288. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/evsub_msg.h +119 -0
  289. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/iscomposing.h +137 -0
  290. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/mwi.h +211 -0
  291. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/pidf.h +177 -0
  292. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/presence.h +416 -0
  293. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/publish.h +350 -0
  294. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/rpid.h +150 -0
  295. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/types.h +30 -0
  296. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-simple/xpidf.h +137 -0
  297. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_100rel.h +244 -0
  298. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_inv.h +1224 -0
  299. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_regc.h +497 -0
  300. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_replaces.h +303 -0
  301. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_timer.h +274 -0
  302. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip-ua/sip_xfer.h +207 -0
  303. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip.h +61 -0
  304. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip_auth.h +37 -0
  305. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip_simple.h +45 -0
  306. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsip_ua.h +31 -0
  307. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua-lib/pjsua.h +8899 -0
  308. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua-lib/pjsua_internal.h +989 -0
  309. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua.h +1 -0
  310. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/account.hpp +2123 -0
  311. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/call.hpp +2253 -0
  312. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/config.hpp +72 -0
  313. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/doxygen.hpp +48 -0
  314. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/endpoint.hpp +2160 -0
  315. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/json.hpp +115 -0
  316. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/media.hpp +2748 -0
  317. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/persistent.hpp +715 -0
  318. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/presence.hpp +368 -0
  319. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/siptypes.hpp +1013 -0
  320. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2/types.hpp +283 -0
  321. package/ios/VoipCloud.xcframework/ios-arm64/Headers/pjsua2.hpp +28 -0
  322. package/ios/VoipCloud.xcframework/ios-arm64/libVoipCloud.a +0 -0
  323. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/activesock.h +598 -0
  324. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/addr_resolv.h +189 -0
  325. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/array.h +95 -0
  326. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/assert.h +84 -0
  327. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/assert.h +36 -0
  328. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_armcc.h +57 -0
  329. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_clang.h +64 -0
  330. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_codew.h +55 -0
  331. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_gcc.h +79 -0
  332. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_gcce.h +54 -0
  333. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_msvc.h +87 -0
  334. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/cc_mwcc.h +55 -0
  335. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/ctype.h +44 -0
  336. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/errno.h +44 -0
  337. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/high_precision.h +87 -0
  338. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/limits.h +66 -0
  339. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_alpha.h +35 -0
  340. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_armv4.h +38 -0
  341. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_auto.h +60 -0
  342. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_auto.h.in +59 -0
  343. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_i386.h +34 -0
  344. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_m68k.h +34 -0
  345. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_powerpc.h +35 -0
  346. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_sparc.h +34 -0
  347. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/m_x86_64.h +35 -0
  348. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/malloc.h +33 -0
  349. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_auto.h +245 -0
  350. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_auto.h.in +244 -0
  351. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_darwinos.h +141 -0
  352. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_linux.h +130 -0
  353. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_palmos.h +118 -0
  354. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_rtems.h +138 -0
  355. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_sunos.h +131 -0
  356. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_symbian.h +166 -0
  357. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_win32.h +148 -0
  358. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_win32_wince.h +145 -0
  359. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_winphone8.h +149 -0
  360. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/os_winuwp.h +149 -0
  361. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/rand.h +55 -0
  362. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/setjmp.h +49 -0
  363. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/size_t.h +31 -0
  364. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/socket.h +223 -0
  365. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/stdarg.h +31 -0
  366. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/stdfileio.h +31 -0
  367. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/string.h +178 -0
  368. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/compat/time.h +41 -0
  369. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/config.h +1537 -0
  370. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/config_site.h +22 -0
  371. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/config_site_sample.h +485 -0
  372. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/config_site_test.h +11 -0
  373. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/ctype.h +174 -0
  374. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/doxygen.h +995 -0
  375. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/errno.h +593 -0
  376. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/except.h +420 -0
  377. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/fifobuf.h +43 -0
  378. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/file_access.h +108 -0
  379. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/file_io.h +183 -0
  380. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/guid.h +119 -0
  381. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/hash.h +253 -0
  382. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/ioqueue.h +955 -0
  383. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/ip_helper.h +152 -0
  384. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/limits.h +57 -0
  385. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/list.h +268 -0
  386. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/list_i.h +120 -0
  387. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/lock.h +453 -0
  388. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/log.h +487 -0
  389. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/math.h +203 -0
  390. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/os.h +1536 -0
  391. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/pool.h +918 -0
  392. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/pool_alt.h +212 -0
  393. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/pool_buf.h +104 -0
  394. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/pool_i.h +131 -0
  395. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/rand.h +65 -0
  396. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/rbtree.h +215 -0
  397. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/sock.h +1566 -0
  398. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/sock_qos.h +429 -0
  399. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/sock_select.h +151 -0
  400. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/ssl_sock.h +1508 -0
  401. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/string.h +963 -0
  402. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/string_i.h +406 -0
  403. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/timer.h +386 -0
  404. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/types.h +594 -0
  405. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj/unicode.h +140 -0
  406. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/file.hpp +187 -0
  407. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/hash.hpp +155 -0
  408. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/list.hpp +351 -0
  409. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/lock.hpp +148 -0
  410. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/os.hpp +869 -0
  411. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/pool.hpp +278 -0
  412. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/proactor.hpp +514 -0
  413. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/scanner.hpp +245 -0
  414. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/sock.hpp +443 -0
  415. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/string.hpp +467 -0
  416. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/timer.hpp +197 -0
  417. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/tree.hpp +128 -0
  418. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pj++/types.hpp +174 -0
  419. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib++.hpp +34 -0
  420. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/base64.h +91 -0
  421. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/cli.h +530 -0
  422. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/cli_console.h +116 -0
  423. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/cli_imp.h +207 -0
  424. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/cli_telnet.h +167 -0
  425. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/config.h +373 -0
  426. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/crc32.h +95 -0
  427. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/dns.h +460 -0
  428. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/dns_server.h +116 -0
  429. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/errno.h +455 -0
  430. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/getopt.h +144 -0
  431. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/hmac_md5.h +108 -0
  432. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/hmac_sha1.h +106 -0
  433. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/http_client.h +493 -0
  434. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/json.h +227 -0
  435. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/md5.h +73 -0
  436. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/pcap.h +195 -0
  437. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/resolver.h +515 -0
  438. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/scanner.h +553 -0
  439. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/scanner_cis_bitwise.h +96 -0
  440. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/scanner_cis_uint.h +83 -0
  441. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/sha1.h +79 -0
  442. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/srv_resolver.h +221 -0
  443. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/string.h +101 -0
  444. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/stun_simple.h +288 -0
  445. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/types.h +94 -0
  446. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util/xml.h +248 -0
  447. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib-util.h +75 -0
  448. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjlib.h +62 -0
  449. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/alaw_ulaw.h +212 -0
  450. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/audiodev.h +761 -0
  451. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/avi.h +201 -0
  452. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/avi_stream.h +195 -0
  453. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/bidirectional.h +66 -0
  454. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/circbuf.h +436 -0
  455. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/clock.h +338 -0
  456. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/codec.h +1192 -0
  457. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/conference.h +599 -0
  458. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/config.h +1713 -0
  459. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/config_auto.h +43 -0
  460. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/config_auto.h.in +42 -0
  461. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/converter.h +386 -0
  462. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/delaybuf.h +175 -0
  463. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/doxygen.h +243 -0
  464. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/echo.h +420 -0
  465. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/echo_port.h +73 -0
  466. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/endpoint.h +389 -0
  467. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/errno.h +693 -0
  468. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/event.h +493 -0
  469. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/format.h +821 -0
  470. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/frame.h +331 -0
  471. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/g711.h +88 -0
  472. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/jbuf.h +484 -0
  473. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/master_port.h +198 -0
  474. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/mem_port.h +241 -0
  475. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/null_port.h +69 -0
  476. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/plc.h +114 -0
  477. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/port.h +565 -0
  478. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/resample.h +199 -0
  479. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/rtcp.h +511 -0
  480. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/rtcp_fb.h +487 -0
  481. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/rtcp_xr.h +477 -0
  482. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/rtp.h +457 -0
  483. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/sdp.h +830 -0
  484. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/sdp_neg.h +822 -0
  485. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/session.h +435 -0
  486. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/signatures.h +217 -0
  487. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/silencedet.h +199 -0
  488. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/sound.h +353 -0
  489. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/sound_port.h +397 -0
  490. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/splitcomb.h +142 -0
  491. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/stereo.h +203 -0
  492. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/stream.h +541 -0
  493. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/stream_common.h +123 -0
  494. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/symbian_sound_aps.h +47 -0
  495. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/tonegen.h +302 -0
  496. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport.h +1069 -0
  497. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport_adapter_sample.h +75 -0
  498. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport_ice.h +458 -0
  499. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport_loop.h +158 -0
  500. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport_srtp.h +579 -0
  501. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/transport_udp.h +161 -0
  502. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/types.h +345 -0
  503. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_codec.h +896 -0
  504. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_codec_util.h +194 -0
  505. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_conf.h +310 -0
  506. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_port.h +269 -0
  507. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_stream.h +514 -0
  508. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/vid_tee.h +141 -0
  509. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/videodev.h +859 -0
  510. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/wav_playlist.h +131 -0
  511. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/wav_port.h +342 -0
  512. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/wave.h +183 -0
  513. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia/wsola.h +218 -0
  514. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-audiodev/audiodev.h +110 -0
  515. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-audiodev/audiodev_imp.h +187 -0
  516. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-audiodev/audiotest.h +115 -0
  517. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-audiodev/config.h +525 -0
  518. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-audiodev/errno.h +227 -0
  519. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/amr_helper.h +1236 -0
  520. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/amr_sdp_match.h +60 -0
  521. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/and_aud_mediacodec.h +131 -0
  522. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/and_vid_mediacodec.h +77 -0
  523. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/audio_codecs.h +97 -0
  524. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/bcg729.h +120 -0
  525. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/config.h +720 -0
  526. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/config_auto.h +104 -0
  527. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/config_auto.h.in +103 -0
  528. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/ffmpeg_vid_codecs.h +66 -0
  529. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/g722.h +103 -0
  530. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/g7221.h +164 -0
  531. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/g7221_sdp_match.h +58 -0
  532. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/gsm.h +86 -0
  533. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/h263_packetizer.h +145 -0
  534. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/h264_packetizer.h +163 -0
  535. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/ilbc.h +118 -0
  536. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/ipp_codecs.h +321 -0
  537. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/l16.h +83 -0
  538. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/opencore_amr.h +145 -0
  539. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/openh264.h +68 -0
  540. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/opus.h +160 -0
  541. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/passthrough.h +276 -0
  542. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/silk.h +126 -0
  543. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/speex.h +149 -0
  544. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/types.h +145 -0
  545. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/vid_toolbox.h +70 -0
  546. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/vpx.h +68 -0
  547. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec/vpx_packetizer.h +123 -0
  548. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-codec.h +47 -0
  549. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/avi_dev.h +139 -0
  550. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/config.h +326 -0
  551. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/errno.h +158 -0
  552. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/opengl_dev.h +52 -0
  553. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/videodev.h +119 -0
  554. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia-videodev/videodev_imp.h +229 -0
  555. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia.h +81 -0
  556. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia_audiodev.h +32 -0
  557. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjmedia_videodev.h +30 -0
  558. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/config.h +596 -0
  559. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/errno.h +225 -0
  560. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/ice_session.h +1122 -0
  561. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/ice_strans.h +1112 -0
  562. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/nat_detect.h +233 -0
  563. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_auth.h +456 -0
  564. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_config.h +135 -0
  565. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_msg.h +1856 -0
  566. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_session.h +763 -0
  567. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_sock.h +496 -0
  568. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/stun_transaction.h +291 -0
  569. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/turn_session.h +968 -0
  570. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/turn_sock.h +673 -0
  571. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/types.h +75 -0
  572. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath/upnp.h +147 -0
  573. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjnath.h +46 -0
  574. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/print_util.h +166 -0
  575. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_auth.h +637 -0
  576. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_auth_aka.h +212 -0
  577. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_auth_msg.h +269 -0
  578. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_auth_parser.h +74 -0
  579. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_autoconf.h +39 -0
  580. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_autoconf.h.in +38 -0
  581. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_config.h +1545 -0
  582. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_dialog.h +935 -0
  583. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_endpoint.h +715 -0
  584. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_errno.h +544 -0
  585. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_event.h +230 -0
  586. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_module.h +221 -0
  587. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_msg.h +2134 -0
  588. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_multipart.h +276 -0
  589. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_parser.h +465 -0
  590. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_private.h +31 -0
  591. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_resolve.h +347 -0
  592. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_tel_uri.h +83 -0
  593. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transaction.h +542 -0
  594. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transport.h +1672 -0
  595. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transport_loop.h +146 -0
  596. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transport_tcp.h +300 -0
  597. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transport_tls.h +642 -0
  598. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_transport_udp.h +389 -0
  599. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_types.h +265 -0
  600. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_ua_layer.h +159 -0
  601. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_uri.h +470 -0
  602. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip/sip_util.h +888 -0
  603. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/errno.h +117 -0
  604. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/evsub.h +561 -0
  605. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/evsub_msg.h +119 -0
  606. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/iscomposing.h +137 -0
  607. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/mwi.h +211 -0
  608. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/pidf.h +177 -0
  609. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/presence.h +416 -0
  610. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/publish.h +350 -0
  611. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/rpid.h +150 -0
  612. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/types.h +30 -0
  613. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-simple/xpidf.h +137 -0
  614. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_100rel.h +244 -0
  615. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_inv.h +1224 -0
  616. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_regc.h +497 -0
  617. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_replaces.h +303 -0
  618. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_timer.h +274 -0
  619. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip-ua/sip_xfer.h +207 -0
  620. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip.h +61 -0
  621. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip_auth.h +37 -0
  622. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip_simple.h +45 -0
  623. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsip_ua.h +31 -0
  624. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua-lib/pjsua.h +8899 -0
  625. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua-lib/pjsua_internal.h +989 -0
  626. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua.h +1 -0
  627. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/account.hpp +2123 -0
  628. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/call.hpp +2253 -0
  629. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/config.hpp +72 -0
  630. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/doxygen.hpp +48 -0
  631. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/endpoint.hpp +2160 -0
  632. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/json.hpp +115 -0
  633. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/media.hpp +2748 -0
  634. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/persistent.hpp +715 -0
  635. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/presence.hpp +368 -0
  636. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/siptypes.hpp +1013 -0
  637. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2/types.hpp +283 -0
  638. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/Headers/pjsua2.hpp +28 -0
  639. package/ios/VoipCloud.xcframework/ios-arm64_x86_64-simulator/libVoipCloud.a +0 -0
  640. package/ios/VoipCloudEngine.h +62 -0
  641. package/ios/VoipCloudEngine.mm +571 -0
  642. package/package.json +4 -3
  643. package/react-native-voipcloud.podspec +27 -1
  644. 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 &param) 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 &param) 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 &param) 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 &param) 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 &param);
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 &param);
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__ */