@sbhjt-gr/react-native-webrtc 124.0.3 → 124.0.5

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 (361) hide show
  1. package/.clang-format +11 -11
  2. package/.eslintignore +6 -6
  3. package/.nvmrc +1 -1
  4. package/ISSUE_TEMPLATE.md +40 -40
  5. package/LICENSE +22 -22
  6. package/README.md +103 -103
  7. package/android/build.gradle +37 -37
  8. package/android/consumer-rules.pro +3 -3
  9. package/android/src/main/AndroidManifest.xml +11 -11
  10. package/android/src/main/java/com/oney/WebRTCModule/AbstractVideoCaptureController.java +113 -113
  11. package/android/src/main/java/com/oney/WebRTCModule/CameraCaptureController.java +338 -338
  12. package/android/src/main/java/com/oney/WebRTCModule/CameraEventsHandler.java +49 -49
  13. package/android/src/main/java/com/oney/WebRTCModule/DataChannelWrapper.java +99 -99
  14. package/android/src/main/java/com/oney/WebRTCModule/DataPacketCryptorManager.java +62 -62
  15. package/android/src/main/java/com/oney/WebRTCModule/DisplayUtils.java +16 -16
  16. package/android/src/main/java/com/oney/WebRTCModule/EglUtils.java +66 -66
  17. package/android/src/main/java/com/oney/WebRTCModule/GetUserMediaImpl.java +539 -539
  18. package/android/src/main/java/com/oney/WebRTCModule/LibraryLoader.java +21 -21
  19. package/android/src/main/java/com/oney/WebRTCModule/MediaProjectionNotification.java +70 -70
  20. package/android/src/main/java/com/oney/WebRTCModule/MediaProjectionService.java +82 -82
  21. package/android/src/main/java/com/oney/WebRTCModule/PeerConnectionObserver.java +588 -588
  22. package/android/src/main/java/com/oney/WebRTCModule/RTCCryptoManager.java +493 -493
  23. package/android/src/main/java/com/oney/WebRTCModule/RTCVideoViewManager.java +98 -98
  24. package/android/src/main/java/com/oney/WebRTCModule/ReactBridgeUtil.java +35 -35
  25. package/android/src/main/java/com/oney/WebRTCModule/ScreenCaptureController.java +94 -94
  26. package/android/src/main/java/com/oney/WebRTCModule/SerializeUtils.java +342 -342
  27. package/android/src/main/java/com/oney/WebRTCModule/StringUtils.java +100 -100
  28. package/android/src/main/java/com/oney/WebRTCModule/ThreadUtils.java +41 -41
  29. package/android/src/main/java/com/oney/WebRTCModule/TrackCapturerEventsEmitter.java +34 -34
  30. package/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java +137 -137
  31. package/android/src/main/java/com/oney/WebRTCModule/WebRTCModule.java +1649 -1643
  32. package/android/src/main/java/com/oney/WebRTCModule/WebRTCModuleOptions.java +33 -33
  33. package/android/src/main/java/com/oney/WebRTCModule/WebRTCModulePackage.java +21 -21
  34. package/android/src/main/java/com/oney/WebRTCModule/WebRTCView.java +583 -583
  35. package/android/src/main/java/com/oney/WebRTCModule/palabra/PalabraClient.java +529 -501
  36. package/android/src/main/java/com/oney/WebRTCModule/palabra/PalabraConfig.java +17 -17
  37. package/android/src/main/java/com/oney/WebRTCModule/palabra/PalabraListener.java +7 -7
  38. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/ProcessorProvider.java +38 -38
  39. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoEffectProcessor.java +59 -59
  40. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoFrameProcessor.java +19 -19
  41. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoFrameProcessorFactoryInterface.java +12 -12
  42. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/H264AndSoftwareVideoDecoderFactory.java +73 -73
  43. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/H264AndSoftwareVideoEncoderFactory.java +73 -73
  44. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/SoftwareVideoDecoderFactoryProxy.java +36 -36
  45. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/SoftwareVideoEncoderFactoryProxy.java +36 -36
  46. package/android/src/main/java/org/webrtc/Camera1Helper.java +54 -54
  47. package/android/src/main/java/org/webrtc/Camera2Helper.java +52 -52
  48. package/android/src/main/res/values/strings.xml +5 -5
  49. package/android/src/main/res/values/styles.xml +8 -8
  50. package/ios/RCTWebRTC/CaptureController.h +18 -18
  51. package/ios/RCTWebRTC/CaptureController.m +28 -28
  52. package/ios/RCTWebRTC/CapturerEventsDelegate.h +12 -12
  53. package/ios/RCTWebRTC/DataChannelWrapper.h +27 -27
  54. package/ios/RCTWebRTC/DataChannelWrapper.m +42 -42
  55. package/ios/RCTWebRTC/I420Converter.h +22 -22
  56. package/ios/RCTWebRTC/I420Converter.m +164 -164
  57. package/ios/RCTWebRTC/PIPController.h +24 -24
  58. package/ios/RCTWebRTC/PIPController.m +234 -234
  59. package/ios/RCTWebRTC/PalabraAudioSink.h +13 -13
  60. package/ios/RCTWebRTC/PalabraAudioSink.m +18 -18
  61. package/ios/RCTWebRTC/PalabraClient.h +42 -36
  62. package/ios/RCTWebRTC/PalabraClient.m +680 -644
  63. package/ios/RCTWebRTC/RCTConvert+WebRTC.h +16 -16
  64. package/ios/RCTWebRTC/RCTConvert+WebRTC.m +206 -206
  65. package/ios/RCTWebRTC/RTCMediaStreamTrack+React.h +10 -10
  66. package/ios/RCTWebRTC/RTCMediaStreamTrack+React.m +16 -16
  67. package/ios/RCTWebRTC/RTCVideoViewManager.h +29 -29
  68. package/ios/RCTWebRTC/RTCVideoViewManager.m +411 -411
  69. package/ios/RCTWebRTC/SampleBufferVideoCallView.h +12 -12
  70. package/ios/RCTWebRTC/SampleBufferVideoCallView.m +178 -178
  71. package/ios/RCTWebRTC/ScreenCaptureController.h +20 -20
  72. package/ios/RCTWebRTC/ScreenCaptureController.m +82 -82
  73. package/ios/RCTWebRTC/ScreenCapturePickerViewManager.h +7 -7
  74. package/ios/RCTWebRTC/ScreenCapturePickerViewManager.m +59 -59
  75. package/ios/RCTWebRTC/ScreenCapturer.h +19 -19
  76. package/ios/RCTWebRTC/ScreenCapturer.m +263 -263
  77. package/ios/RCTWebRTC/SerializeUtils.h +28 -28
  78. package/ios/RCTWebRTC/SerializeUtils.m +314 -314
  79. package/ios/RCTWebRTC/SocketConnection.h +13 -13
  80. package/ios/RCTWebRTC/SocketConnection.m +137 -137
  81. package/ios/RCTWebRTC/TrackCapturerEventsEmitter.h +14 -14
  82. package/ios/RCTWebRTC/TrackCapturerEventsEmitter.m +36 -36
  83. package/ios/RCTWebRTC/VideoCaptureController.h +21 -21
  84. package/ios/RCTWebRTC/VideoCaptureController.m +328 -328
  85. package/ios/RCTWebRTC/WLVAudioDevice.h +12 -12
  86. package/ios/RCTWebRTC/WLVAudioDevice.m +137 -137
  87. package/ios/RCTWebRTC/WebRTCModule+Palabra.h +4 -4
  88. package/ios/RCTWebRTC/WebRTCModule+Palabra.m +92 -83
  89. package/ios/RCTWebRTC/WebRTCModule+Permissions.m +75 -75
  90. package/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m +20 -20
  91. package/ios/RCTWebRTC/WebRTCModule+RTCDataChannel.h +14 -14
  92. package/ios/RCTWebRTC/WebRTCModule+RTCDataChannel.m +165 -165
  93. package/ios/RCTWebRTC/WebRTCModule+RTCFrameCryptor.m +611 -611
  94. package/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.h +13 -13
  95. package/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.m +728 -728
  96. package/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.h +24 -24
  97. package/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.m +1004 -1004
  98. package/ios/RCTWebRTC/WebRTCModule+Transceivers.m +267 -267
  99. package/ios/RCTWebRTC/WebRTCModule+VideoTrackAdapter.h +12 -12
  100. package/ios/RCTWebRTC/WebRTCModule+VideoTrackAdapter.m +166 -166
  101. package/ios/RCTWebRTC/WebRTCModule.h +58 -58
  102. package/ios/RCTWebRTC/WebRTCModule.m +169 -169
  103. package/ios/RCTWebRTC/WebRTCModuleOptions.h +24 -24
  104. package/ios/RCTWebRTC/WebRTCModuleOptions.m +31 -31
  105. package/ios/RCTWebRTC/videoEffects/ProcessorProvider.h +9 -9
  106. package/ios/RCTWebRTC/videoEffects/ProcessorProvider.m +23 -23
  107. package/ios/RCTWebRTC/videoEffects/VideoEffectProcessor.h +13 -13
  108. package/ios/RCTWebRTC/videoEffects/VideoEffectProcessor.m +23 -23
  109. package/ios/RCTWebRTC/videoEffects/VideoFrameProcessor.h +8 -8
  110. package/ios/RCTWebRTC.xcodeproj/project.pbxproj +404 -404
  111. package/ios/RCTWebRTC.xcworkspace/contents.xcworkspacedata +10 -10
  112. package/lib/commonjs/Constraints.js.map +1 -1
  113. package/lib/commonjs/EventEmitter.js.map +1 -1
  114. package/lib/commonjs/Logger.js.map +1 -1
  115. package/lib/commonjs/MediaDevices.js +17 -17
  116. package/lib/commonjs/MediaDevices.js.map +1 -1
  117. package/lib/commonjs/MediaStream.js +19 -19
  118. package/lib/commonjs/MediaStream.js.map +1 -1
  119. package/lib/commonjs/MediaStreamError.js.map +1 -1
  120. package/lib/commonjs/MediaStreamErrorEvent.js.map +1 -1
  121. package/lib/commonjs/MediaStreamTrack.js +28 -28
  122. package/lib/commonjs/MediaStreamTrack.js.map +1 -1
  123. package/lib/commonjs/MediaStreamTrackEvent.js +6 -6
  124. package/lib/commonjs/MediaStreamTrackEvent.js.map +1 -1
  125. package/lib/commonjs/MessageEvent.js +7 -7
  126. package/lib/commonjs/MessageEvent.js.map +1 -1
  127. package/lib/commonjs/Permissions.js +28 -28
  128. package/lib/commonjs/Permissions.js.map +1 -1
  129. package/lib/commonjs/RTCAudioSession.js +4 -4
  130. package/lib/commonjs/RTCAudioSession.js.map +1 -1
  131. package/lib/commonjs/RTCDataChannel.js +2 -2
  132. package/lib/commonjs/RTCDataChannel.js.map +1 -1
  133. package/lib/commonjs/RTCDataChannelEvent.js +6 -6
  134. package/lib/commonjs/RTCDataChannelEvent.js.map +1 -1
  135. package/lib/commonjs/RTCDataPacketCryptor.js.map +1 -1
  136. package/lib/commonjs/RTCDataPacketCryptorFactory.js.map +1 -1
  137. package/lib/commonjs/RTCErrorEvent.js +3 -3
  138. package/lib/commonjs/RTCErrorEvent.js.map +1 -1
  139. package/lib/commonjs/RTCFrameCryptor.js +8 -8
  140. package/lib/commonjs/RTCFrameCryptor.js.map +1 -1
  141. package/lib/commonjs/RTCFrameCryptorFactory.js.map +1 -1
  142. package/lib/commonjs/RTCIceCandidate.js.map +1 -1
  143. package/lib/commonjs/RTCIceCandidateEvent.js +7 -7
  144. package/lib/commonjs/RTCIceCandidateEvent.js.map +1 -1
  145. package/lib/commonjs/RTCKeyProvider.js.map +1 -1
  146. package/lib/commonjs/RTCPIPView.js +2 -2
  147. package/lib/commonjs/RTCPIPView.js.map +1 -1
  148. package/lib/commonjs/RTCPIPView.web.js.map +1 -1
  149. package/lib/commonjs/RTCPeerConnection.js +36 -36
  150. package/lib/commonjs/RTCPeerConnection.js.map +1 -1
  151. package/lib/commonjs/RTCRtcpParameters.js.map +1 -1
  152. package/lib/commonjs/RTCRtpCapabilities.js +2 -2
  153. package/lib/commonjs/RTCRtpCapabilities.js.map +1 -1
  154. package/lib/commonjs/RTCRtpCodecCapability.js.map +1 -1
  155. package/lib/commonjs/RTCRtpCodecParameters.js.map +1 -1
  156. package/lib/commonjs/RTCRtpEncodingParameters.js.map +1 -1
  157. package/lib/commonjs/RTCRtpHeaderExtension.js.map +1 -1
  158. package/lib/commonjs/RTCRtpParameters.js.map +1 -1
  159. package/lib/commonjs/RTCRtpReceiveParameters.js.map +1 -1
  160. package/lib/commonjs/RTCRtpReceiver.js +7 -7
  161. package/lib/commonjs/RTCRtpReceiver.js.map +1 -1
  162. package/lib/commonjs/RTCRtpSendParameters.js +3 -3
  163. package/lib/commonjs/RTCRtpSendParameters.js.map +1 -1
  164. package/lib/commonjs/RTCRtpSender.js +7 -7
  165. package/lib/commonjs/RTCRtpSender.js.map +1 -1
  166. package/lib/commonjs/RTCRtpTransceiver.js.map +1 -1
  167. package/lib/commonjs/RTCSessionDescription.js.map +1 -1
  168. package/lib/commonjs/RTCTrackEvent.js +6 -6
  169. package/lib/commonjs/RTCTrackEvent.js.map +1 -1
  170. package/lib/commonjs/RTCUtil.js +28 -28
  171. package/lib/commonjs/RTCUtil.js.map +1 -1
  172. package/lib/commonjs/RTCView.js +5 -5
  173. package/lib/commonjs/RTCView.js.map +1 -1
  174. package/lib/commonjs/RTCView.web.js.map +1 -1
  175. package/lib/commonjs/ScreenCapturePickerView.js.map +1 -1
  176. package/lib/commonjs/ScreenCapturePickerView.web.js.map +1 -1
  177. package/lib/commonjs/getDisplayMedia.js.map +1 -1
  178. package/lib/commonjs/getUserMedia.js.map +1 -1
  179. package/lib/commonjs/index.js.map +1 -1
  180. package/lib/commonjs/index.web.js.map +1 -1
  181. package/lib/commonjs/webStream.js.map +1 -1
  182. package/lib/module/Constraints.js.map +1 -1
  183. package/lib/module/EventEmitter.js.map +1 -1
  184. package/lib/module/Logger.js.map +1 -1
  185. package/lib/module/MediaDevices.js +17 -17
  186. package/lib/module/MediaDevices.js.map +1 -1
  187. package/lib/module/MediaStream.js +19 -19
  188. package/lib/module/MediaStream.js.map +1 -1
  189. package/lib/module/MediaStreamError.js.map +1 -1
  190. package/lib/module/MediaStreamErrorEvent.js.map +1 -1
  191. package/lib/module/MediaStreamTrack.js +28 -28
  192. package/lib/module/MediaStreamTrack.js.map +1 -1
  193. package/lib/module/MediaStreamTrackEvent.js +6 -6
  194. package/lib/module/MediaStreamTrackEvent.js.map +1 -1
  195. package/lib/module/MessageEvent.js +7 -7
  196. package/lib/module/MessageEvent.js.map +1 -1
  197. package/lib/module/Permissions.js +28 -28
  198. package/lib/module/Permissions.js.map +1 -1
  199. package/lib/module/RTCAudioSession.js +4 -4
  200. package/lib/module/RTCAudioSession.js.map +1 -1
  201. package/lib/module/RTCDataChannel.js +2 -2
  202. package/lib/module/RTCDataChannel.js.map +1 -1
  203. package/lib/module/RTCDataChannelEvent.js +6 -6
  204. package/lib/module/RTCDataChannelEvent.js.map +1 -1
  205. package/lib/module/RTCDataPacketCryptor.js.map +1 -1
  206. package/lib/module/RTCDataPacketCryptorFactory.js.map +1 -1
  207. package/lib/module/RTCErrorEvent.js +3 -3
  208. package/lib/module/RTCErrorEvent.js.map +1 -1
  209. package/lib/module/RTCFrameCryptor.js +8 -8
  210. package/lib/module/RTCFrameCryptor.js.map +1 -1
  211. package/lib/module/RTCFrameCryptorFactory.js.map +1 -1
  212. package/lib/module/RTCIceCandidate.js.map +1 -1
  213. package/lib/module/RTCIceCandidateEvent.js +7 -7
  214. package/lib/module/RTCIceCandidateEvent.js.map +1 -1
  215. package/lib/module/RTCKeyProvider.js.map +1 -1
  216. package/lib/module/RTCPIPView.js +2 -2
  217. package/lib/module/RTCPIPView.js.map +1 -1
  218. package/lib/module/RTCPIPView.web.js.map +1 -1
  219. package/lib/module/RTCPeerConnection.js +36 -36
  220. package/lib/module/RTCPeerConnection.js.map +1 -1
  221. package/lib/module/RTCRtcpParameters.js.map +1 -1
  222. package/lib/module/RTCRtpCapabilities.js +2 -2
  223. package/lib/module/RTCRtpCapabilities.js.map +1 -1
  224. package/lib/module/RTCRtpCodecCapability.js.map +1 -1
  225. package/lib/module/RTCRtpCodecParameters.js.map +1 -1
  226. package/lib/module/RTCRtpEncodingParameters.js.map +1 -1
  227. package/lib/module/RTCRtpHeaderExtension.js.map +1 -1
  228. package/lib/module/RTCRtpParameters.js.map +1 -1
  229. package/lib/module/RTCRtpReceiveParameters.js.map +1 -1
  230. package/lib/module/RTCRtpReceiver.js +7 -7
  231. package/lib/module/RTCRtpReceiver.js.map +1 -1
  232. package/lib/module/RTCRtpSendParameters.js +3 -3
  233. package/lib/module/RTCRtpSendParameters.js.map +1 -1
  234. package/lib/module/RTCRtpSender.js +7 -7
  235. package/lib/module/RTCRtpSender.js.map +1 -1
  236. package/lib/module/RTCRtpTransceiver.js.map +1 -1
  237. package/lib/module/RTCSessionDescription.js.map +1 -1
  238. package/lib/module/RTCTrackEvent.js +6 -6
  239. package/lib/module/RTCTrackEvent.js.map +1 -1
  240. package/lib/module/RTCUtil.js +28 -28
  241. package/lib/module/RTCUtil.js.map +1 -1
  242. package/lib/module/RTCView.js +5 -5
  243. package/lib/module/RTCView.js.map +1 -1
  244. package/lib/module/RTCView.web.js.map +1 -1
  245. package/lib/module/ScreenCapturePickerView.js.map +1 -1
  246. package/lib/module/ScreenCapturePickerView.web.js.map +1 -1
  247. package/lib/module/getDisplayMedia.js.map +1 -1
  248. package/lib/module/getUserMedia.js.map +1 -1
  249. package/lib/module/index.js.map +1 -1
  250. package/lib/module/index.web.js.map +1 -1
  251. package/lib/module/webStream.js.map +1 -1
  252. package/lib/typescript/Constraints.d.ts +19 -19
  253. package/lib/typescript/EventEmitter.d.ts +6 -6
  254. package/lib/typescript/Logger.d.ts +13 -13
  255. package/lib/typescript/MediaDevices.d.ts +30 -30
  256. package/lib/typescript/MediaStream.d.ts +48 -48
  257. package/lib/typescript/MediaStreamError.d.ts +6 -6
  258. package/lib/typescript/MediaStreamErrorEvent.d.ts +6 -6
  259. package/lib/typescript/MediaStreamTrack.d.ts +101 -101
  260. package/lib/typescript/MediaStreamTrackEvent.d.ts +19 -19
  261. package/lib/typescript/MessageEvent.d.ts +20 -20
  262. package/lib/typescript/Permissions.d.ts +55 -55
  263. package/lib/typescript/RTCAudioSession.d.ts +10 -10
  264. package/lib/typescript/RTCDataChannel.d.ts +43 -43
  265. package/lib/typescript/RTCDataChannelEvent.d.ts +19 -19
  266. package/lib/typescript/RTCDataPacketCryptor.d.ts +12 -12
  267. package/lib/typescript/RTCDataPacketCryptorFactory.d.ts +6 -6
  268. package/lib/typescript/RTCErrorEvent.d.ts +12 -12
  269. package/lib/typescript/RTCFrameCryptor.d.ts +47 -47
  270. package/lib/typescript/RTCFrameCryptorFactory.d.ts +21 -21
  271. package/lib/typescript/RTCIceCandidate.d.ts +17 -17
  272. package/lib/typescript/RTCIceCandidateEvent.d.ts +20 -20
  273. package/lib/typescript/RTCKeyProvider.d.ts +21 -21
  274. package/lib/typescript/RTCPIPView.d.ts +15 -15
  275. package/lib/typescript/RTCPIPView.web.d.ts +13 -13
  276. package/lib/typescript/RTCPeerConnection.d.ts +117 -117
  277. package/lib/typescript/RTCRtcpParameters.d.ts +10 -10
  278. package/lib/typescript/RTCRtpCapabilities.d.ts +9 -9
  279. package/lib/typescript/RTCRtpCodecCapability.d.ts +7 -7
  280. package/lib/typescript/RTCRtpCodecParameters.d.ts +16 -16
  281. package/lib/typescript/RTCRtpEncodingParameters.d.ts +23 -23
  282. package/lib/typescript/RTCRtpHeaderExtension.d.ts +12 -12
  283. package/lib/typescript/RTCRtpParameters.d.ts +19 -19
  284. package/lib/typescript/RTCRtpReceiveParameters.d.ts +4 -4
  285. package/lib/typescript/RTCRtpReceiver.d.ts +21 -21
  286. package/lib/typescript/RTCRtpSendParameters.d.ts +20 -20
  287. package/lib/typescript/RTCRtpSender.d.ts +22 -22
  288. package/lib/typescript/RTCRtpTransceiver.d.ts +31 -31
  289. package/lib/typescript/RTCSessionDescription.d.ts +12 -12
  290. package/lib/typescript/RTCTrackEvent.d.ts +29 -29
  291. package/lib/typescript/RTCUtil.d.ts +37 -37
  292. package/lib/typescript/RTCView.d.ts +117 -117
  293. package/lib/typescript/RTCView.web.d.ts +25 -25
  294. package/lib/typescript/ScreenCapturePickerView.d.ts +2 -2
  295. package/lib/typescript/ScreenCapturePickerView.web.d.ts +1 -1
  296. package/lib/typescript/getDisplayMedia.d.ts +2 -2
  297. package/lib/typescript/getUserMedia.d.ts +7 -7
  298. package/lib/typescript/index.d.ts +22 -22
  299. package/lib/typescript/index.web.d.ts +101 -101
  300. package/lib/typescript/webStream.d.ts +3 -3
  301. package/livekit-react-native-webrtc.podspec +29 -29
  302. package/macos/RCTWebRTC.xcodeproj/project.pbxproj +324 -324
  303. package/macos/RCTWebRTC.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -7
  304. package/macos/RCTWebRTC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -8
  305. package/metro.config.js +7 -7
  306. package/metro.config.macos.js +14 -14
  307. package/package.json +66 -66
  308. package/react-native.config.js +11 -11
  309. package/src/.eslintrc.cjs +67 -67
  310. package/src/Constraints.ts +20 -20
  311. package/src/EventEmitter.ts +65 -65
  312. package/src/Logger.ts +49 -49
  313. package/src/MediaDevices.ts +53 -53
  314. package/src/MediaStream.ts +161 -161
  315. package/src/MediaStreamError.ts +12 -12
  316. package/src/MediaStreamErrorEvent.ts +11 -11
  317. package/src/MediaStreamTrack.ts +282 -282
  318. package/src/MediaStreamTrackEvent.ts +25 -25
  319. package/src/MessageEvent.ts +26 -26
  320. package/src/Permissions.ts +133 -133
  321. package/src/RTCAudioSession.ts +25 -25
  322. package/src/RTCDataChannel.ts +190 -190
  323. package/src/RTCDataChannelEvent.ts +28 -28
  324. package/src/RTCDataPacketCryptor.ts +90 -90
  325. package/src/RTCDataPacketCryptorFactory.ts +24 -24
  326. package/src/RTCErrorEvent.ts +20 -20
  327. package/src/RTCFrameCryptor.ts +162 -162
  328. package/src/RTCFrameCryptorFactory.ts +101 -101
  329. package/src/RTCIceCandidate.ts +29 -29
  330. package/src/RTCIceCandidateEvent.ts +26 -26
  331. package/src/RTCKeyProvider.ts +117 -117
  332. package/src/RTCPIPView.tsx +46 -46
  333. package/src/RTCPIPView.web.tsx +18 -18
  334. package/src/RTCPeerConnection.ts +935 -935
  335. package/src/RTCRtcpParameters.ts +23 -23
  336. package/src/RTCRtpCapabilities.ts +16 -16
  337. package/src/RTCRtpCodecCapability.ts +12 -12
  338. package/src/RTCRtpCodecParameters.ts +44 -44
  339. package/src/RTCRtpEncodingParameters.ts +90 -90
  340. package/src/RTCRtpHeaderExtension.ts +27 -27
  341. package/src/RTCRtpParameters.ts +37 -37
  342. package/src/RTCRtpReceiveParameters.ts +7 -7
  343. package/src/RTCRtpReceiver.ts +60 -60
  344. package/src/RTCRtpSendParameters.ts +63 -63
  345. package/src/RTCRtpSender.ts +78 -78
  346. package/src/RTCRtpTransceiver.ts +107 -107
  347. package/src/RTCSessionDescription.ts +30 -30
  348. package/src/RTCTrackEvent.ts +42 -42
  349. package/src/RTCUtil.ts +211 -211
  350. package/src/RTCView.ts +122 -122
  351. package/src/RTCView.web.tsx +80 -80
  352. package/src/ScreenCapturePickerView.ts +4 -4
  353. package/src/ScreenCapturePickerView.web.tsx +3 -3
  354. package/src/getDisplayMedia.ts +30 -30
  355. package/src/getUserMedia.ts +136 -136
  356. package/src/index.ts +107 -107
  357. package/src/index.web.ts +191 -191
  358. package/src/webStream.ts +31 -31
  359. package/tools/format.sh +6 -6
  360. package/tools/release.sh +45 -45
  361. package/tsconfig.json +17 -17
package/src/RTCUtil.ts CHANGED
@@ -1,211 +1,211 @@
1
-
2
- const DEFAULT_AUDIO_CONSTRAINTS = {};
3
-
4
- const DEFAULT_VIDEO_CONSTRAINTS = {
5
- facingMode: 'user',
6
- frameRate: 30,
7
- height: 720,
8
- width: 1280
9
- };
10
-
11
- const FACING_MODES = [ 'user', 'environment' ];
12
-
13
- const ASPECT_RATIO = 16 / 9;
14
-
15
- export type RTCOfferOptions = {
16
- iceRestart?:boolean;
17
- offerToReceiveAudio?: boolean;
18
- offerToReceiveVideo?: boolean;
19
- voiceActivityDetection?:boolean
20
- };
21
-
22
- const STANDARD_OFFER_OPTIONS = {
23
- icerestart: 'IceRestart',
24
- offertoreceiveaudio: 'OfferToReceiveAudio',
25
- offertoreceivevideo: 'OfferToReceiveVideo',
26
- voiceactivitydetection: 'VoiceActivityDetection'
27
- };
28
-
29
- const SDP_TYPES = [
30
- 'offer',
31
- 'pranswer',
32
- 'answer',
33
- 'rollback'
34
- ];
35
-
36
- function getDefaultMediaConstraints(mediaType) {
37
- switch (mediaType) {
38
- case 'audio':
39
- return DEFAULT_AUDIO_CONSTRAINTS;
40
- case 'video':
41
- return DEFAULT_VIDEO_CONSTRAINTS;
42
- default:
43
- throw new TypeError(`Invalid media type: ${mediaType}`);
44
- }
45
- }
46
-
47
- function extractString(constraints, prop) {
48
- const value = constraints[prop];
49
- const type = typeof value;
50
-
51
- if (type === 'object') {
52
- for (const v of [ 'exact', 'ideal' ]) {
53
- if (value[v]) {
54
- return value[v];
55
- }
56
- }
57
- } else if (type === 'string') {
58
- return value;
59
- }
60
- }
61
-
62
- function extractNumber(constraints, prop) {
63
- const value = constraints[prop];
64
- const type = typeof value;
65
-
66
- if (type === 'number') {
67
- return Number.parseInt(value);
68
- } else if (type === 'object') {
69
- for (const v of [ 'exact', 'ideal', 'max', 'min' ]) {
70
- if (value[v]) {
71
- return Number.parseInt(value[v]);
72
- }
73
- }
74
- }
75
- }
76
-
77
- function normalizeMediaConstraints(constraints, mediaType) {
78
- switch (mediaType) {
79
- case 'audio':
80
- return constraints;
81
-
82
- case 'video': {
83
- const c = {
84
- deviceId: extractString(constraints, 'deviceId'),
85
- facingMode: extractString(constraints, 'facingMode'),
86
- frameRate: extractNumber(constraints, 'frameRate'),
87
- height: extractNumber(constraints, 'height'),
88
- width: extractNumber(constraints, 'width')
89
- };
90
-
91
- if (!c.deviceId) {
92
- delete c.deviceId;
93
- }
94
-
95
- if (!FACING_MODES.includes(c.facingMode)) {
96
- c.facingMode = DEFAULT_VIDEO_CONSTRAINTS.facingMode;
97
- }
98
-
99
- if (!c.frameRate) {
100
- c.frameRate = DEFAULT_VIDEO_CONSTRAINTS.frameRate;
101
- }
102
-
103
- if (!c.height && !c.width) {
104
- c.height = DEFAULT_VIDEO_CONSTRAINTS.height;
105
- c.width = DEFAULT_VIDEO_CONSTRAINTS.width;
106
- } else if (!c.height && c.width) {
107
- c.height = Math.round(c.width / ASPECT_RATIO);
108
- } else if (!c.width && c.height) {
109
- c.width = Math.round(c.height * ASPECT_RATIO);
110
- }
111
-
112
- return c;
113
- }
114
-
115
- default:
116
- throw new TypeError(`Invalid media type: ${mediaType}`);
117
- }
118
- }
119
-
120
- /**
121
- * Utility for creating short random strings from float point values.
122
- * We take 4 characters from the end after converting to a string.
123
- * Conversion to string gives us some letters as we don't want just numbers.
124
- * Should be suitable to pass for enough randomness.
125
- *
126
- * @return {String} 4 random characters
127
- */
128
- function chr4() {
129
- return Math.random().toString(16).slice(-4);
130
- }
131
-
132
- /**
133
- * Put together a random string in UUIDv4 format {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
134
- *
135
- * @return {String} uuidv4
136
- */
137
- export function uniqueID(): string {
138
- return `${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;
139
- }
140
-
141
- /**
142
- * Utility for deep cloning an object. Object.assign() only does a shallow copy.
143
- *
144
- * @param {Object} obj - object to be cloned
145
- * @return {Object} cloned obj
146
- */
147
- export function deepClone<T>(obj: T): T {
148
- return JSON.parse(JSON.stringify(obj));
149
- }
150
-
151
- /**
152
- * Checks whether an SDP type is valid or not.
153
- *
154
- * @param type SDP type to check.
155
- * @returns Whether the SDP type is valid or not.
156
- */
157
- export function isSdpTypeValid(type: string): boolean {
158
- return SDP_TYPES.includes(type);
159
- }
160
-
161
- /**
162
- * Normalize options passed to createOffer().
163
- *
164
- * @param options - user supplied options
165
- * @return Normalized options
166
- */
167
- export function normalizeOfferOptions(options?: RTCOfferOptions) {
168
- const newOptions: Record<string,string> = {};
169
-
170
- if (typeof options !== 'object') {
171
- return newOptions;
172
- }
173
-
174
- // Convert standard options into WebRTC internal constant names.
175
- // See: https://github.com/jitsi/webrtc/blob/0cd6ce4de669bed94ba47b88cb71b9be0341bb81/sdk/media_constraints.cc#L113
176
- for (const [ key, value ] of Object.entries(options)) {
177
- const newKey = STANDARD_OFFER_OPTIONS[key.toLowerCase()];
178
-
179
- if (newKey) {
180
- newOptions[newKey] = String(Boolean(value));
181
- }
182
- }
183
-
184
- return newOptions;
185
- }
186
-
187
- /**
188
- * Normalize the given constraints in something we can work with.
189
- */
190
- export function normalizeConstraints(constraints) {
191
- const c = deepClone(constraints);
192
-
193
- for (const mediaType of [ 'audio', 'video' ]) {
194
- const mediaTypeConstraints = c[mediaType];
195
- const typeofMediaTypeConstraints = typeof mediaTypeConstraints;
196
-
197
- if (typeofMediaTypeConstraints !== 'undefined') {
198
- if (typeofMediaTypeConstraints === 'boolean') {
199
- if (mediaTypeConstraints) {
200
- c[mediaType] = getDefaultMediaConstraints(mediaType);
201
- }
202
- } else if (typeofMediaTypeConstraints === 'object') {
203
- c[mediaType] = normalizeMediaConstraints(mediaTypeConstraints, mediaType);
204
- } else {
205
- throw new TypeError(`constraints.${mediaType} is neither a boolean nor a dictionary`);
206
- }
207
- }
208
- }
209
-
210
- return c;
211
- }
1
+
2
+ const DEFAULT_AUDIO_CONSTRAINTS = {};
3
+
4
+ const DEFAULT_VIDEO_CONSTRAINTS = {
5
+ facingMode: 'user',
6
+ frameRate: 30,
7
+ height: 720,
8
+ width: 1280
9
+ };
10
+
11
+ const FACING_MODES = [ 'user', 'environment' ];
12
+
13
+ const ASPECT_RATIO = 16 / 9;
14
+
15
+ export type RTCOfferOptions = {
16
+ iceRestart?:boolean;
17
+ offerToReceiveAudio?: boolean;
18
+ offerToReceiveVideo?: boolean;
19
+ voiceActivityDetection?:boolean
20
+ };
21
+
22
+ const STANDARD_OFFER_OPTIONS = {
23
+ icerestart: 'IceRestart',
24
+ offertoreceiveaudio: 'OfferToReceiveAudio',
25
+ offertoreceivevideo: 'OfferToReceiveVideo',
26
+ voiceactivitydetection: 'VoiceActivityDetection'
27
+ };
28
+
29
+ const SDP_TYPES = [
30
+ 'offer',
31
+ 'pranswer',
32
+ 'answer',
33
+ 'rollback'
34
+ ];
35
+
36
+ function getDefaultMediaConstraints(mediaType) {
37
+ switch (mediaType) {
38
+ case 'audio':
39
+ return DEFAULT_AUDIO_CONSTRAINTS;
40
+ case 'video':
41
+ return DEFAULT_VIDEO_CONSTRAINTS;
42
+ default:
43
+ throw new TypeError(`Invalid media type: ${mediaType}`);
44
+ }
45
+ }
46
+
47
+ function extractString(constraints, prop) {
48
+ const value = constraints[prop];
49
+ const type = typeof value;
50
+
51
+ if (type === 'object') {
52
+ for (const v of [ 'exact', 'ideal' ]) {
53
+ if (value[v]) {
54
+ return value[v];
55
+ }
56
+ }
57
+ } else if (type === 'string') {
58
+ return value;
59
+ }
60
+ }
61
+
62
+ function extractNumber(constraints, prop) {
63
+ const value = constraints[prop];
64
+ const type = typeof value;
65
+
66
+ if (type === 'number') {
67
+ return Number.parseInt(value);
68
+ } else if (type === 'object') {
69
+ for (const v of [ 'exact', 'ideal', 'max', 'min' ]) {
70
+ if (value[v]) {
71
+ return Number.parseInt(value[v]);
72
+ }
73
+ }
74
+ }
75
+ }
76
+
77
+ function normalizeMediaConstraints(constraints, mediaType) {
78
+ switch (mediaType) {
79
+ case 'audio':
80
+ return constraints;
81
+
82
+ case 'video': {
83
+ const c = {
84
+ deviceId: extractString(constraints, 'deviceId'),
85
+ facingMode: extractString(constraints, 'facingMode'),
86
+ frameRate: extractNumber(constraints, 'frameRate'),
87
+ height: extractNumber(constraints, 'height'),
88
+ width: extractNumber(constraints, 'width')
89
+ };
90
+
91
+ if (!c.deviceId) {
92
+ delete c.deviceId;
93
+ }
94
+
95
+ if (!FACING_MODES.includes(c.facingMode)) {
96
+ c.facingMode = DEFAULT_VIDEO_CONSTRAINTS.facingMode;
97
+ }
98
+
99
+ if (!c.frameRate) {
100
+ c.frameRate = DEFAULT_VIDEO_CONSTRAINTS.frameRate;
101
+ }
102
+
103
+ if (!c.height && !c.width) {
104
+ c.height = DEFAULT_VIDEO_CONSTRAINTS.height;
105
+ c.width = DEFAULT_VIDEO_CONSTRAINTS.width;
106
+ } else if (!c.height && c.width) {
107
+ c.height = Math.round(c.width / ASPECT_RATIO);
108
+ } else if (!c.width && c.height) {
109
+ c.width = Math.round(c.height * ASPECT_RATIO);
110
+ }
111
+
112
+ return c;
113
+ }
114
+
115
+ default:
116
+ throw new TypeError(`Invalid media type: ${mediaType}`);
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Utility for creating short random strings from float point values.
122
+ * We take 4 characters from the end after converting to a string.
123
+ * Conversion to string gives us some letters as we don't want just numbers.
124
+ * Should be suitable to pass for enough randomness.
125
+ *
126
+ * @return {String} 4 random characters
127
+ */
128
+ function chr4() {
129
+ return Math.random().toString(16).slice(-4);
130
+ }
131
+
132
+ /**
133
+ * Put together a random string in UUIDv4 format {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
134
+ *
135
+ * @return {String} uuidv4
136
+ */
137
+ export function uniqueID(): string {
138
+ return `${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;
139
+ }
140
+
141
+ /**
142
+ * Utility for deep cloning an object. Object.assign() only does a shallow copy.
143
+ *
144
+ * @param {Object} obj - object to be cloned
145
+ * @return {Object} cloned obj
146
+ */
147
+ export function deepClone<T>(obj: T): T {
148
+ return JSON.parse(JSON.stringify(obj));
149
+ }
150
+
151
+ /**
152
+ * Checks whether an SDP type is valid or not.
153
+ *
154
+ * @param type SDP type to check.
155
+ * @returns Whether the SDP type is valid or not.
156
+ */
157
+ export function isSdpTypeValid(type: string): boolean {
158
+ return SDP_TYPES.includes(type);
159
+ }
160
+
161
+ /**
162
+ * Normalize options passed to createOffer().
163
+ *
164
+ * @param options - user supplied options
165
+ * @return Normalized options
166
+ */
167
+ export function normalizeOfferOptions(options?: RTCOfferOptions) {
168
+ const newOptions: Record<string,string> = {};
169
+
170
+ if (typeof options !== 'object') {
171
+ return newOptions;
172
+ }
173
+
174
+ // Convert standard options into WebRTC internal constant names.
175
+ // See: https://github.com/jitsi/webrtc/blob/0cd6ce4de669bed94ba47b88cb71b9be0341bb81/sdk/media_constraints.cc#L113
176
+ for (const [ key, value ] of Object.entries(options)) {
177
+ const newKey = STANDARD_OFFER_OPTIONS[key.toLowerCase()];
178
+
179
+ if (newKey) {
180
+ newOptions[newKey] = String(Boolean(value));
181
+ }
182
+ }
183
+
184
+ return newOptions;
185
+ }
186
+
187
+ /**
188
+ * Normalize the given constraints in something we can work with.
189
+ */
190
+ export function normalizeConstraints(constraints) {
191
+ const c = deepClone(constraints);
192
+
193
+ for (const mediaType of [ 'audio', 'video' ]) {
194
+ const mediaTypeConstraints = c[mediaType];
195
+ const typeofMediaTypeConstraints = typeof mediaTypeConstraints;
196
+
197
+ if (typeofMediaTypeConstraints !== 'undefined') {
198
+ if (typeofMediaTypeConstraints === 'boolean') {
199
+ if (mediaTypeConstraints) {
200
+ c[mediaType] = getDefaultMediaConstraints(mediaType);
201
+ }
202
+ } else if (typeofMediaTypeConstraints === 'object') {
203
+ c[mediaType] = normalizeMediaConstraints(mediaTypeConstraints, mediaType);
204
+ } else {
205
+ throw new TypeError(`constraints.${mediaType} is neither a boolean nor a dictionary`);
206
+ }
207
+ }
208
+ }
209
+
210
+ return c;
211
+ }
package/src/RTCView.ts CHANGED
@@ -1,122 +1,122 @@
1
- import { requireNativeComponent, ViewProps } from 'react-native';
2
-
3
- /**
4
- * Native prop validation was removed from RN in:
5
- * https://github.com/facebook/react-native/commit/8dc3ba0444c94d9bbb66295b5af885bff9b9cd34
6
- *
7
- * So we list them here for documentation purposes.
8
- */
9
- export interface RTCVideoViewProps extends ViewProps {
10
- /**
11
- * Indicates whether the video specified by {@link #streamURL} should be
12
- * mirrored during rendering. Commonly, applications choose to mirror the
13
- * user-facing camera.
14
- *
15
- * mirror: boolean
16
- */
17
- mirror?: boolean;
18
-
19
- /**
20
- * In the fashion of
21
- * https://www.w3.org/TR/html5/embedded-content-0.html#dom-video-videowidth
22
- * and https://www.w3.org/TR/html5/rendering.html#video-object-fit,
23
- * resembles the CSS style object-fit.
24
- *
25
- * objectFit: 'contain' | 'cover'
26
- *
27
- * Defaults to 'cover'.
28
- */
29
- objectFit?: 'contain' | 'cover';
30
-
31
- /**
32
- * URL / id of the stream that should be rendered.
33
- *
34
- * streamURL: string
35
- */
36
- streamURL?: string;
37
- /**
38
- * Similarly to the CSS property z-index, specifies the z-order of this
39
- * RTCView in the stacking space of all RTCViews. When RTCViews overlap,
40
- * zOrder determines which one covers the other. An RTCView with a larger
41
- * zOrder generally covers an RTCView with a lower one.
42
- *
43
- * Non-overlapping RTCViews may safely share a z-order (because one does not
44
- * have to cover the other).
45
- *
46
- * The support for zOrder is platform-dependent and/or
47
- * implementation-specific. Thus, specifying a value for zOrder is to be
48
- * thought of as giving a hint rather than as imposing a requirement. For
49
- * example, video renderers such as RTCView are commonly implemented using
50
- * OpenGL and OpenGL views may have different numbers of layers in their
51
- * stacking space. Android has three: a layer bellow the window (aka
52
- * default), a layer bellow the window again but above the previous layer
53
- * (aka media overlay), and above the window. Consequently, it is advisable
54
- * to limit the number of utilized layers in the stacking space to the
55
- * minimum sufficient for the desired display. For example, a video call
56
- * application usually needs a maximum of two zOrder values: 0 for the
57
- * remote video(s) which appear in the background, and 1 for the local
58
- * video(s) which appear above the remote video(s).
59
- *
60
- * zOrder: number
61
- */
62
- zOrder?: number;
63
-
64
-
65
- /**
66
- * Picture in picture options for this view. Disabled if not supplied.
67
- *
68
- * Note: this should only be generally only used with remote video tracks,
69
- * as the local camera may stop while in the background.
70
- *
71
- * iOS only. Requires iOS 15.0 or above, and the PIP background mode capability.
72
- */
73
- iosPIP?: RTCIOSPIPOptions;
74
-
75
- /**
76
- * Callback function that is called when the dimensions of the video change.
77
- *
78
- * @param {Object} event - The event object containing the new dimensions.
79
- * @param {Object} event.nativeEvent - The native event data.
80
- * @param {number} event.nativeEvent.width - The width of the video.
81
- * @param {number} event.nativeEvent.height - The height of the video.
82
- */
83
- onDimensionsChange?: (event: { nativeEvent: { width: number; height: number } }) => void;
84
- }
85
-
86
- export interface RTCIOSPIPOptions {
87
-
88
- /**
89
- * Whether PIP can be launched from this view.
90
- *
91
- * Defaults to true.
92
- */
93
- enabled?: boolean;
94
-
95
- /**
96
- * The preferred size of the PIP window.
97
- */
98
- preferredSize?: {
99
- width: number;
100
- height: number;
101
- },
102
-
103
- /**
104
- * Indicates whether Picture in Picture starts automatically
105
- * when the controller embeds its content inline and the app
106
- * transitions to the background.
107
- *
108
- * Defaults to true.
109
- *
110
- * See: AVPictureInPictureController.canStartPictureInPictureAutomaticallyFromInline
111
- */
112
- startAutomatically?: boolean;
113
-
114
- /**
115
- * Indicates whether Picture in Picture should stop automatically
116
- * when the app returns to the foreground.
117
- *
118
- * Defaults to true.
119
- */
120
- stopAutomatically?: boolean;
121
- }
122
- export default requireNativeComponent<RTCVideoViewProps>('RTCVideoView');
1
+ import { requireNativeComponent, ViewProps } from 'react-native';
2
+
3
+ /**
4
+ * Native prop validation was removed from RN in:
5
+ * https://github.com/facebook/react-native/commit/8dc3ba0444c94d9bbb66295b5af885bff9b9cd34
6
+ *
7
+ * So we list them here for documentation purposes.
8
+ */
9
+ export interface RTCVideoViewProps extends ViewProps {
10
+ /**
11
+ * Indicates whether the video specified by {@link #streamURL} should be
12
+ * mirrored during rendering. Commonly, applications choose to mirror the
13
+ * user-facing camera.
14
+ *
15
+ * mirror: boolean
16
+ */
17
+ mirror?: boolean;
18
+
19
+ /**
20
+ * In the fashion of
21
+ * https://www.w3.org/TR/html5/embedded-content-0.html#dom-video-videowidth
22
+ * and https://www.w3.org/TR/html5/rendering.html#video-object-fit,
23
+ * resembles the CSS style object-fit.
24
+ *
25
+ * objectFit: 'contain' | 'cover'
26
+ *
27
+ * Defaults to 'cover'.
28
+ */
29
+ objectFit?: 'contain' | 'cover';
30
+
31
+ /**
32
+ * URL / id of the stream that should be rendered.
33
+ *
34
+ * streamURL: string
35
+ */
36
+ streamURL?: string;
37
+ /**
38
+ * Similarly to the CSS property z-index, specifies the z-order of this
39
+ * RTCView in the stacking space of all RTCViews. When RTCViews overlap,
40
+ * zOrder determines which one covers the other. An RTCView with a larger
41
+ * zOrder generally covers an RTCView with a lower one.
42
+ *
43
+ * Non-overlapping RTCViews may safely share a z-order (because one does not
44
+ * have to cover the other).
45
+ *
46
+ * The support for zOrder is platform-dependent and/or
47
+ * implementation-specific. Thus, specifying a value for zOrder is to be
48
+ * thought of as giving a hint rather than as imposing a requirement. For
49
+ * example, video renderers such as RTCView are commonly implemented using
50
+ * OpenGL and OpenGL views may have different numbers of layers in their
51
+ * stacking space. Android has three: a layer bellow the window (aka
52
+ * default), a layer bellow the window again but above the previous layer
53
+ * (aka media overlay), and above the window. Consequently, it is advisable
54
+ * to limit the number of utilized layers in the stacking space to the
55
+ * minimum sufficient for the desired display. For example, a video call
56
+ * application usually needs a maximum of two zOrder values: 0 for the
57
+ * remote video(s) which appear in the background, and 1 for the local
58
+ * video(s) which appear above the remote video(s).
59
+ *
60
+ * zOrder: number
61
+ */
62
+ zOrder?: number;
63
+
64
+
65
+ /**
66
+ * Picture in picture options for this view. Disabled if not supplied.
67
+ *
68
+ * Note: this should only be generally only used with remote video tracks,
69
+ * as the local camera may stop while in the background.
70
+ *
71
+ * iOS only. Requires iOS 15.0 or above, and the PIP background mode capability.
72
+ */
73
+ iosPIP?: RTCIOSPIPOptions;
74
+
75
+ /**
76
+ * Callback function that is called when the dimensions of the video change.
77
+ *
78
+ * @param {Object} event - The event object containing the new dimensions.
79
+ * @param {Object} event.nativeEvent - The native event data.
80
+ * @param {number} event.nativeEvent.width - The width of the video.
81
+ * @param {number} event.nativeEvent.height - The height of the video.
82
+ */
83
+ onDimensionsChange?: (event: { nativeEvent: { width: number; height: number } }) => void;
84
+ }
85
+
86
+ export interface RTCIOSPIPOptions {
87
+
88
+ /**
89
+ * Whether PIP can be launched from this view.
90
+ *
91
+ * Defaults to true.
92
+ */
93
+ enabled?: boolean;
94
+
95
+ /**
96
+ * The preferred size of the PIP window.
97
+ */
98
+ preferredSize?: {
99
+ width: number;
100
+ height: number;
101
+ },
102
+
103
+ /**
104
+ * Indicates whether Picture in Picture starts automatically
105
+ * when the controller embeds its content inline and the app
106
+ * transitions to the background.
107
+ *
108
+ * Defaults to true.
109
+ *
110
+ * See: AVPictureInPictureController.canStartPictureInPictureAutomaticallyFromInline
111
+ */
112
+ startAutomatically?: boolean;
113
+
114
+ /**
115
+ * Indicates whether Picture in Picture should stop automatically
116
+ * when the app returns to the foreground.
117
+ *
118
+ * Defaults to true.
119
+ */
120
+ stopAutomatically?: boolean;
121
+ }
122
+ export default requireNativeComponent<RTCVideoViewProps>('RTCVideoView');