@sbhjt-gr/react-native-webrtc 124.0.2 → 124.0.4

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 (363) 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 -464
  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 -584
  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 +146 -41
  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 +23 -0
  179. package/lib/commonjs/getUserMedia.js.map +1 -1
  180. package/lib/commonjs/index.js.map +1 -1
  181. package/lib/commonjs/index.web.js.map +1 -1
  182. package/lib/commonjs/webStream.js.map +1 -1
  183. package/lib/module/Constraints.js.map +1 -1
  184. package/lib/module/EventEmitter.js.map +1 -1
  185. package/lib/module/Logger.js.map +1 -1
  186. package/lib/module/MediaDevices.js +17 -17
  187. package/lib/module/MediaDevices.js.map +1 -1
  188. package/lib/module/MediaStream.js +19 -19
  189. package/lib/module/MediaStream.js.map +1 -1
  190. package/lib/module/MediaStreamError.js.map +1 -1
  191. package/lib/module/MediaStreamErrorEvent.js.map +1 -1
  192. package/lib/module/MediaStreamTrack.js +28 -28
  193. package/lib/module/MediaStreamTrack.js.map +1 -1
  194. package/lib/module/MediaStreamTrackEvent.js +6 -6
  195. package/lib/module/MediaStreamTrackEvent.js.map +1 -1
  196. package/lib/module/MessageEvent.js +7 -7
  197. package/lib/module/MessageEvent.js.map +1 -1
  198. package/lib/module/Permissions.js +28 -28
  199. package/lib/module/Permissions.js.map +1 -1
  200. package/lib/module/RTCAudioSession.js +4 -4
  201. package/lib/module/RTCAudioSession.js.map +1 -1
  202. package/lib/module/RTCDataChannel.js +2 -2
  203. package/lib/module/RTCDataChannel.js.map +1 -1
  204. package/lib/module/RTCDataChannelEvent.js +6 -6
  205. package/lib/module/RTCDataChannelEvent.js.map +1 -1
  206. package/lib/module/RTCDataPacketCryptor.js.map +1 -1
  207. package/lib/module/RTCDataPacketCryptorFactory.js.map +1 -1
  208. package/lib/module/RTCErrorEvent.js +3 -3
  209. package/lib/module/RTCErrorEvent.js.map +1 -1
  210. package/lib/module/RTCFrameCryptor.js +8 -8
  211. package/lib/module/RTCFrameCryptor.js.map +1 -1
  212. package/lib/module/RTCFrameCryptorFactory.js.map +1 -1
  213. package/lib/module/RTCIceCandidate.js.map +1 -1
  214. package/lib/module/RTCIceCandidateEvent.js +7 -7
  215. package/lib/module/RTCIceCandidateEvent.js.map +1 -1
  216. package/lib/module/RTCKeyProvider.js.map +1 -1
  217. package/lib/module/RTCPIPView.js +2 -2
  218. package/lib/module/RTCPIPView.js.map +1 -1
  219. package/lib/module/RTCPIPView.web.js.map +1 -1
  220. package/lib/module/RTCPeerConnection.js +146 -41
  221. package/lib/module/RTCPeerConnection.js.map +1 -1
  222. package/lib/module/RTCRtcpParameters.js.map +1 -1
  223. package/lib/module/RTCRtpCapabilities.js +2 -2
  224. package/lib/module/RTCRtpCapabilities.js.map +1 -1
  225. package/lib/module/RTCRtpCodecCapability.js.map +1 -1
  226. package/lib/module/RTCRtpCodecParameters.js.map +1 -1
  227. package/lib/module/RTCRtpEncodingParameters.js.map +1 -1
  228. package/lib/module/RTCRtpHeaderExtension.js.map +1 -1
  229. package/lib/module/RTCRtpParameters.js.map +1 -1
  230. package/lib/module/RTCRtpReceiveParameters.js.map +1 -1
  231. package/lib/module/RTCRtpReceiver.js +7 -7
  232. package/lib/module/RTCRtpReceiver.js.map +1 -1
  233. package/lib/module/RTCRtpSendParameters.js +3 -3
  234. package/lib/module/RTCRtpSendParameters.js.map +1 -1
  235. package/lib/module/RTCRtpSender.js +7 -7
  236. package/lib/module/RTCRtpSender.js.map +1 -1
  237. package/lib/module/RTCRtpTransceiver.js.map +1 -1
  238. package/lib/module/RTCSessionDescription.js.map +1 -1
  239. package/lib/module/RTCTrackEvent.js +6 -6
  240. package/lib/module/RTCTrackEvent.js.map +1 -1
  241. package/lib/module/RTCUtil.js +28 -28
  242. package/lib/module/RTCUtil.js.map +1 -1
  243. package/lib/module/RTCView.js +5 -5
  244. package/lib/module/RTCView.js.map +1 -1
  245. package/lib/module/RTCView.web.js.map +1 -1
  246. package/lib/module/ScreenCapturePickerView.js.map +1 -1
  247. package/lib/module/ScreenCapturePickerView.web.js.map +1 -1
  248. package/lib/module/getDisplayMedia.js.map +1 -1
  249. package/lib/module/getUserMedia.js +23 -0
  250. package/lib/module/getUserMedia.js.map +1 -1
  251. package/lib/module/index.js.map +1 -1
  252. package/lib/module/index.web.js.map +1 -1
  253. package/lib/module/webStream.js.map +1 -1
  254. package/lib/typescript/Constraints.d.ts +19 -19
  255. package/lib/typescript/EventEmitter.d.ts +6 -6
  256. package/lib/typescript/Logger.d.ts +13 -13
  257. package/lib/typescript/MediaDevices.d.ts +30 -30
  258. package/lib/typescript/MediaStream.d.ts +48 -48
  259. package/lib/typescript/MediaStreamError.d.ts +6 -6
  260. package/lib/typescript/MediaStreamErrorEvent.d.ts +6 -6
  261. package/lib/typescript/MediaStreamTrack.d.ts +101 -101
  262. package/lib/typescript/MediaStreamTrackEvent.d.ts +19 -19
  263. package/lib/typescript/MessageEvent.d.ts +20 -20
  264. package/lib/typescript/Permissions.d.ts +55 -55
  265. package/lib/typescript/RTCAudioSession.d.ts +10 -10
  266. package/lib/typescript/RTCDataChannel.d.ts +43 -43
  267. package/lib/typescript/RTCDataChannelEvent.d.ts +19 -19
  268. package/lib/typescript/RTCDataPacketCryptor.d.ts +12 -12
  269. package/lib/typescript/RTCDataPacketCryptorFactory.d.ts +6 -6
  270. package/lib/typescript/RTCErrorEvent.d.ts +12 -12
  271. package/lib/typescript/RTCFrameCryptor.d.ts +47 -47
  272. package/lib/typescript/RTCFrameCryptorFactory.d.ts +21 -21
  273. package/lib/typescript/RTCIceCandidate.d.ts +17 -17
  274. package/lib/typescript/RTCIceCandidateEvent.d.ts +20 -20
  275. package/lib/typescript/RTCKeyProvider.d.ts +21 -21
  276. package/lib/typescript/RTCPIPView.d.ts +15 -15
  277. package/lib/typescript/RTCPIPView.web.d.ts +13 -13
  278. package/lib/typescript/RTCPeerConnection.d.ts +117 -117
  279. package/lib/typescript/RTCRtcpParameters.d.ts +10 -10
  280. package/lib/typescript/RTCRtpCapabilities.d.ts +9 -9
  281. package/lib/typescript/RTCRtpCodecCapability.d.ts +7 -7
  282. package/lib/typescript/RTCRtpCodecParameters.d.ts +16 -16
  283. package/lib/typescript/RTCRtpEncodingParameters.d.ts +23 -23
  284. package/lib/typescript/RTCRtpHeaderExtension.d.ts +12 -12
  285. package/lib/typescript/RTCRtpParameters.d.ts +19 -19
  286. package/lib/typescript/RTCRtpReceiveParameters.d.ts +4 -4
  287. package/lib/typescript/RTCRtpReceiver.d.ts +21 -21
  288. package/lib/typescript/RTCRtpSendParameters.d.ts +20 -20
  289. package/lib/typescript/RTCRtpSender.d.ts +22 -22
  290. package/lib/typescript/RTCRtpTransceiver.d.ts +31 -31
  291. package/lib/typescript/RTCSessionDescription.d.ts +12 -12
  292. package/lib/typescript/RTCTrackEvent.d.ts +29 -29
  293. package/lib/typescript/RTCUtil.d.ts +37 -37
  294. package/lib/typescript/RTCView.d.ts +117 -117
  295. package/lib/typescript/RTCView.web.d.ts +25 -25
  296. package/lib/typescript/ScreenCapturePickerView.d.ts +2 -2
  297. package/lib/typescript/ScreenCapturePickerView.web.d.ts +1 -1
  298. package/lib/typescript/getDisplayMedia.d.ts +2 -2
  299. package/lib/typescript/getUserMedia.d.ts +7 -7
  300. package/lib/typescript/index.d.ts +22 -22
  301. package/lib/typescript/index.web.d.ts +101 -101
  302. package/lib/typescript/webStream.d.ts +3 -3
  303. package/livekit-react-native-webrtc.podspec +29 -29
  304. package/macos/RCTWebRTC.xcodeproj/project.pbxproj +324 -324
  305. package/macos/RCTWebRTC.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -7
  306. package/macos/RCTWebRTC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -8
  307. package/metro.config.js +7 -7
  308. package/metro.config.macos.js +14 -14
  309. package/package.json +66 -66
  310. package/react-native.config.js +11 -11
  311. package/src/.eslintrc.cjs +67 -67
  312. package/src/Constraints.ts +20 -20
  313. package/src/EventEmitter.ts +65 -65
  314. package/src/Logger.ts +49 -49
  315. package/src/MediaDevices.ts +53 -53
  316. package/src/MediaStream.ts +161 -161
  317. package/src/MediaStreamError.ts +12 -12
  318. package/src/MediaStreamErrorEvent.ts +11 -11
  319. package/src/MediaStreamTrack.ts +282 -282
  320. package/src/MediaStreamTrackEvent.ts +25 -25
  321. package/src/MessageEvent.ts +26 -26
  322. package/src/Permissions.ts +133 -133
  323. package/src/RTCAudioSession.ts +25 -25
  324. package/src/RTCDataChannel.ts +190 -190
  325. package/src/RTCDataChannelEvent.ts +28 -28
  326. package/src/RTCDataPacketCryptor.ts +90 -90
  327. package/src/RTCDataPacketCryptorFactory.ts +24 -24
  328. package/src/RTCErrorEvent.ts +20 -20
  329. package/src/RTCFrameCryptor.ts +162 -162
  330. package/src/RTCFrameCryptorFactory.ts +101 -101
  331. package/src/RTCIceCandidate.ts +29 -29
  332. package/src/RTCIceCandidateEvent.ts +26 -26
  333. package/src/RTCKeyProvider.ts +117 -117
  334. package/src/RTCPIPView.tsx +46 -46
  335. package/src/RTCPIPView.web.tsx +18 -18
  336. package/src/RTCPeerConnection.ts +935 -832
  337. package/src/RTCRtcpParameters.ts +23 -23
  338. package/src/RTCRtpCapabilities.ts +16 -16
  339. package/src/RTCRtpCodecCapability.ts +12 -12
  340. package/src/RTCRtpCodecParameters.ts +44 -44
  341. package/src/RTCRtpEncodingParameters.ts +90 -90
  342. package/src/RTCRtpHeaderExtension.ts +27 -27
  343. package/src/RTCRtpParameters.ts +37 -37
  344. package/src/RTCRtpReceiveParameters.ts +7 -7
  345. package/src/RTCRtpReceiver.ts +60 -60
  346. package/src/RTCRtpSendParameters.ts +63 -63
  347. package/src/RTCRtpSender.ts +78 -78
  348. package/src/RTCRtpTransceiver.ts +107 -107
  349. package/src/RTCSessionDescription.ts +30 -30
  350. package/src/RTCTrackEvent.ts +42 -42
  351. package/src/RTCUtil.ts +211 -211
  352. package/src/RTCView.ts +122 -122
  353. package/src/RTCView.web.tsx +80 -80
  354. package/src/ScreenCapturePickerView.ts +4 -4
  355. package/src/ScreenCapturePickerView.web.tsx +3 -3
  356. package/src/getDisplayMedia.ts +30 -30
  357. package/src/getUserMedia.ts +136 -111
  358. package/src/index.ts +107 -107
  359. package/src/index.web.ts +191 -191
  360. package/src/webStream.ts +31 -31
  361. package/tools/format.sh +6 -6
  362. package/tools/release.sh +45 -45
  363. package/tsconfig.json +17 -17
@@ -70,12 +70,24 @@ export default class RTCPeerConnection extends EventTarget {
70
70
  log.debug(`${this._pcId} ctor`);
71
71
  }
72
72
  async createOffer(options) {
73
+ var _sdpInfo$sdp$length, _sdpInfo$sdp;
74
+ const _t0 = Date.now();
75
+ console.log(`[RNWebRTC] pc:${this._pcId} create_offer_start`, {
76
+ signalingState: this.signalingState,
77
+ connectionState: this.connectionState,
78
+ iceConnectionState: this.iceConnectionState
79
+ });
73
80
  log.debug(`${this._pcId} createOffer`);
74
81
  const {
75
82
  sdpInfo,
76
83
  newTransceivers,
77
84
  transceiversInfo
78
85
  } = await WebRTCModule.peerConnectionCreateOffer(this._pcId, RTCUtil.normalizeOfferOptions(options));
86
+ console.log(`[RNWebRTC] pc:${this._pcId} create_offer_done`, {
87
+ durationMs: Date.now() - _t0,
88
+ sdpType: sdpInfo === null || sdpInfo === void 0 ? void 0 : sdpInfo.type,
89
+ sdpLen: (_sdpInfo$sdp$length = sdpInfo === null || sdpInfo === void 0 ? void 0 : (_sdpInfo$sdp = sdpInfo.sdp) === null || _sdpInfo$sdp === void 0 ? void 0 : _sdpInfo$sdp.length) !== null && _sdpInfo$sdp$length !== void 0 ? _sdpInfo$sdp$length : 0
90
+ });
79
91
  log.debug(`${this._pcId} createOffer OK`);
80
92
  newTransceivers === null || newTransceivers === void 0 ? void 0 : newTransceivers.forEach(t => {
81
93
  const {
@@ -102,11 +114,22 @@ export default class RTCPeerConnection extends EventTarget {
102
114
  return sdpInfo;
103
115
  }
104
116
  async createAnswer() {
117
+ var _sdpInfo$sdp$length2, _sdpInfo$sdp2;
118
+ const _t0 = Date.now();
119
+ console.log(`[RNWebRTC] pc:${this._pcId} create_answer_start`, {
120
+ signalingState: this.signalingState,
121
+ connectionState: this.connectionState
122
+ });
105
123
  log.debug(`${this._pcId} createAnswer`);
106
124
  const {
107
125
  sdpInfo,
108
126
  transceiversInfo
109
127
  } = await WebRTCModule.peerConnectionCreateAnswer(this._pcId, {});
128
+ console.log(`[RNWebRTC] pc:${this._pcId} create_answer_done`, {
129
+ durationMs: Date.now() - _t0,
130
+ sdpType: sdpInfo === null || sdpInfo === void 0 ? void 0 : sdpInfo.type,
131
+ sdpLen: (_sdpInfo$sdp$length2 = sdpInfo === null || sdpInfo === void 0 ? void 0 : (_sdpInfo$sdp2 = sdpInfo.sdp) === null || _sdpInfo$sdp2 === void 0 ? void 0 : _sdpInfo$sdp2.length) !== null && _sdpInfo$sdp$length2 !== void 0 ? _sdpInfo$sdp$length2 : 0
132
+ });
110
133
  this._updateTransceivers(transceiversInfo);
111
134
  return sdpInfo;
112
135
  }
@@ -114,14 +137,20 @@ export default class RTCPeerConnection extends EventTarget {
114
137
  WebRTCModule.peerConnectionSetConfiguration(configuration, this._pcId);
115
138
  }
116
139
  async setLocalDescription(sessionDescription) {
117
- var _desc;
140
+ var _sessionDescription$s, _sessionDescription$s2, _desc;
141
+ const _t0 = Date.now();
142
+ console.log(`[RNWebRTC] pc:${this._pcId} set_local_desc_start`, {
143
+ type: sessionDescription === null || sessionDescription === void 0 ? void 0 : sessionDescription.type,
144
+ sdpLen: (_sessionDescription$s = sessionDescription === null || sessionDescription === void 0 ? void 0 : (_sessionDescription$s2 = sessionDescription.sdp) === null || _sessionDescription$s2 === void 0 ? void 0 : _sessionDescription$s2.length) !== null && _sessionDescription$s !== void 0 ? _sessionDescription$s : 0,
145
+ signalingState: this.signalingState
146
+ });
118
147
  log.debug(`${this._pcId} setLocalDescription`);
119
148
  let desc;
120
149
  if (sessionDescription) {
121
- var _sessionDescription$s;
150
+ var _sessionDescription$s3;
122
151
  desc = {
123
152
  type: sessionDescription.type,
124
- sdp: (_sessionDescription$s = sessionDescription.sdp) !== null && _sessionDescription$s !== void 0 ? _sessionDescription$s : ''
153
+ sdp: (_sessionDescription$s3 = sessionDescription.sdp) !== null && _sessionDescription$s3 !== void 0 ? _sessionDescription$s3 : ''
125
154
  };
126
155
  if (!RTCUtil.isSdpTypeValid(desc.type)) {
127
156
  throw new Error(`Invalid session description: invalid type: ${desc.type}`);
@@ -139,17 +168,28 @@ export default class RTCPeerConnection extends EventTarget {
139
168
  this.localDescription = null;
140
169
  }
141
170
  this._updateTransceivers(transceiversInfo, /* removeStopped */((_desc = desc) === null || _desc === void 0 ? void 0 : _desc.type) === 'answer');
171
+ console.log(`[RNWebRTC] pc:${this._pcId} set_local_desc_done`, {
172
+ durationMs: Date.now() - _t0,
173
+ signalingState: this.signalingState
174
+ });
142
175
  log.debug(`${this._pcId} setLocalDescription OK`);
143
176
  }
144
177
  async setRemoteDescription(sessionDescription) {
145
- var _sessionDescription$s2, _desc$type;
178
+ var _sessionDescription$s4, _sessionDescription$s5, _sessionDescription$s6, _desc$type;
179
+ const _t0 = Date.now();
180
+ console.log(`[RNWebRTC] pc:${this._pcId} set_remote_desc_start`, {
181
+ type: sessionDescription === null || sessionDescription === void 0 ? void 0 : sessionDescription.type,
182
+ sdpLen: (_sessionDescription$s4 = sessionDescription === null || sessionDescription === void 0 ? void 0 : (_sessionDescription$s5 = sessionDescription.sdp) === null || _sessionDescription$s5 === void 0 ? void 0 : _sessionDescription$s5.length) !== null && _sessionDescription$s4 !== void 0 ? _sessionDescription$s4 : 0,
183
+ signalingState: this.signalingState,
184
+ connectionState: this.connectionState
185
+ });
146
186
  log.debug(`${this._pcId} setRemoteDescription`);
147
187
  if (!sessionDescription) {
148
188
  return Promise.reject(new Error('No session description provided'));
149
189
  }
150
190
  const desc = {
151
191
  type: sessionDescription.type,
152
- sdp: (_sessionDescription$s2 = sessionDescription.sdp) !== null && _sessionDescription$s2 !== void 0 ? _sessionDescription$s2 : ''
192
+ sdp: (_sessionDescription$s6 = sessionDescription.sdp) !== null && _sessionDescription$s6 !== void 0 ? _sessionDescription$s6 : ''
153
193
  };
154
194
  if (!RTCUtil.isSdpTypeValid((_desc$type = desc.type) !== null && _desc$type !== void 0 ? _desc$type : '')) {
155
195
  throw new Error(`Invalid session description: invalid type: ${desc.type}`);
@@ -237,9 +277,24 @@ export default class RTCPeerConnection extends EventTarget {
237
277
  // Dispatch an unmute event for the track.
238
278
  track._setMutedInternal(false);
239
279
  }
280
+ console.log(`[RNWebRTC] pc:${this._pcId} set_remote_desc_done`, {
281
+ durationMs: Date.now() - _t0,
282
+ signalingState: this.signalingState,
283
+ pendingTrackEventsDispatched: this._pendingTrackEvents.length
284
+ });
240
285
  log.debug(`${this._pcId} setRemoteDescription OK`);
241
286
  }
242
287
  async addIceCandidate(candidate) {
288
+ console.log(`[RNWebRTC] pc:${this._pcId} add_ice_candidate`, {
289
+ type: candidate === null || candidate === void 0 ? void 0 : candidate.type,
290
+ protocol: candidate === null || candidate === void 0 ? void 0 : candidate.protocol,
291
+ sdpMid: candidate === null || candidate === void 0 ? void 0 : candidate.sdpMid,
292
+ sdpMLineIndex: candidate === null || candidate === void 0 ? void 0 : candidate.sdpMLineIndex,
293
+ empty: !(candidate !== null && candidate !== void 0 && candidate.candidate),
294
+ signalingState: this.signalingState,
295
+ connectionState: this.connectionState,
296
+ iceConnectionState: this.iceConnectionState
297
+ });
243
298
  log.debug(`${this._pcId} addIceCandidate`);
244
299
  if (!candidate || !candidate.candidate) {
245
300
  // XXX end-of candidates is not implemented: https://bugs.chromium.org/p/webrtc/issues/detail?id=9218
@@ -252,13 +307,13 @@ export default class RTCPeerConnection extends EventTarget {
252
307
  this.remoteDescription = new RTCSessionDescription(newSdp);
253
308
  }
254
309
 
255
- /**
256
- * @brief Adds a new track to the {@link RTCPeerConnection},
257
- * and indicates that it is contained in the specified {@link MediaStream}s.
258
- * This method has to be synchronous as the W3C API expects a track to be returned
259
- * @param {MediaStreamTrack} track The track to be added
260
- * @param {...MediaStream} streams One or more {@link MediaStream}s the track needs to be added to
261
- * https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack
310
+ /**
311
+ * @brief Adds a new track to the {@link RTCPeerConnection},
312
+ * and indicates that it is contained in the specified {@link MediaStream}s.
313
+ * This method has to be synchronous as the W3C API expects a track to be returned
314
+ * @param {MediaStreamTrack} track The track to be added
315
+ * @param {...MediaStream} streams One or more {@link MediaStream}s the track needs to be added to
316
+ * https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack
262
317
  */
263
318
  addTrack(track) {
264
319
  log.debug(`${this._pcId} addTrack`);
@@ -400,14 +455,14 @@ export default class RTCPeerConnection extends EventTarget {
400
455
  if (!selector) {
401
456
  const data = await WebRTCModule.peerConnectionGetStats(this._pcId);
402
457
 
403
- /**
404
- * On both Android and iOS it is faster to construct a single
405
- * JSON string representing the Map of StatsReports and have it
406
- * pass through the React Native bridge rather than the Map of
407
- * StatsReports. While the implementations do try to be faster in
408
- * general, the stress is on being faster to pass through the React
409
- * Native bridge which is a bottleneck that tends to be visible in
410
- * the UI when there is congestion involving UI-related passing.
458
+ /**
459
+ * On both Android and iOS it is faster to construct a single
460
+ * JSON string representing the Map of StatsReports and have it
461
+ * pass through the React Native bridge rather than the Map of
462
+ * StatsReports. While the implementations do try to be faster in
463
+ * general, the stress is on being faster to pass through the React
464
+ * Native bridge which is a bottleneck that tends to be visible in
465
+ * the UI when there is congestion involving UI-related passing.
411
466
  */
412
467
  return new Map(JSON.parse(data));
413
468
  } else {
@@ -456,22 +511,43 @@ export default class RTCPeerConnection extends EventTarget {
456
511
  if (ev.pcId !== this._pcId) {
457
512
  return;
458
513
  }
514
+ console.log(`[RNWebRTC] pc:${this._pcId} negotiation_needed`, {
515
+ signalingState: this.signalingState,
516
+ connectionState: this.connectionState,
517
+ iceConnectionState: this.iceConnectionState
518
+ });
459
519
  this.dispatchEvent(new Event('negotiationneeded'));
460
520
  });
461
521
  addListener(this, 'peerConnectionIceConnectionChanged', ev => {
462
522
  if (ev.pcId !== this._pcId) {
463
523
  return;
464
524
  }
525
+ const prev = this.iceConnectionState;
465
526
  this.iceConnectionState = ev.iceConnectionState;
527
+ console.log(`[RNWebRTC] pc:${this._pcId} ice_connection_changed`, {
528
+ prev,
529
+ current: ev.iceConnectionState,
530
+ connectionState: this.connectionState,
531
+ signalingState: this.signalingState
532
+ });
466
533
  this.dispatchEvent(new Event('iceconnectionstatechange'));
467
534
  });
468
535
  addListener(this, 'peerConnectionStateChanged', ev => {
469
536
  if (ev.pcId !== this._pcId) {
470
537
  return;
471
538
  }
539
+ const prev = this.connectionState;
472
540
  this.connectionState = ev.connectionState;
541
+ console.log(`[RNWebRTC] pc:${this._pcId} connection_state_changed`, {
542
+ prev,
543
+ current: ev.connectionState,
544
+ iceConnectionState: this.iceConnectionState,
545
+ iceGatheringState: this.iceGatheringState,
546
+ signalingState: this.signalingState
547
+ });
473
548
  this.dispatchEvent(new Event('connectionstatechange'));
474
549
  if (ev.connectionState === 'closed') {
550
+ console.log(`[RNWebRTC] pc:${this._pcId} disposing`);
475
551
  // This PeerConnection is done, clean up.
476
552
  removeListener(this);
477
553
  WebRTCModule.peerConnectionDispose(this._pcId);
@@ -481,15 +557,28 @@ export default class RTCPeerConnection extends EventTarget {
481
557
  if (ev.pcId !== this._pcId) {
482
558
  return;
483
559
  }
560
+ const prev = this.signalingState;
484
561
  this.signalingState = ev.signalingState;
562
+ console.log(`[RNWebRTC] pc:${this._pcId} signaling_state_changed`, {
563
+ prev,
564
+ current: ev.signalingState,
565
+ connectionState: this.connectionState
566
+ });
485
567
  this.dispatchEvent(new Event('signalingstatechange'));
486
568
  });
487
569
 
488
570
  // Consider moving away from this event: https://github.com/WebKit/WebKit/pull/3953
489
571
  addListener(this, 'peerConnectionOnTrack', ev => {
572
+ var _ev$receiver, _ev$receiver2, _ev$receiver2$track, _ev$streams$length, _ev$streams;
490
573
  if (ev.pcId !== this._pcId) {
491
574
  return;
492
575
  }
576
+ console.log(`[RNWebRTC] pc:${this._pcId} track_event_queued`, {
577
+ receiverId: (_ev$receiver = ev.receiver) === null || _ev$receiver === void 0 ? void 0 : _ev$receiver.id,
578
+ trackKind: (_ev$receiver2 = ev.receiver) === null || _ev$receiver2 === void 0 ? void 0 : (_ev$receiver2$track = _ev$receiver2.track) === null || _ev$receiver2$track === void 0 ? void 0 : _ev$receiver2$track.kind,
579
+ streamCount: (_ev$streams$length = (_ev$streams = ev.streams) === null || _ev$streams === void 0 ? void 0 : _ev$streams.length) !== null && _ev$streams$length !== void 0 ? _ev$streams$length : 0,
580
+ pendingCount: this._pendingTrackEvents.length + 1
581
+ });
493
582
  log.debug(`${this._pcId} ontrack`);
494
583
 
495
584
  // NOTE: We need to make sure the track event fires right before sRD completes,
@@ -501,6 +590,9 @@ export default class RTCPeerConnection extends EventTarget {
501
590
  if (ev.pcId !== this._pcId) {
502
591
  return;
503
592
  }
593
+ console.log(`[RNWebRTC] pc:${this._pcId} remove_track`, {
594
+ receiverId: ev.receiverId
595
+ });
504
596
  log.debug(`${this._pcId} onremovetrack ${ev.receiverId}`);
505
597
  const receiver = this.getReceivers().find(r => r.id === ev.receiverId);
506
598
  const track = receiver === null || receiver === void 0 ? void 0 : receiver.track;
@@ -526,9 +618,16 @@ export default class RTCPeerConnection extends EventTarget {
526
618
  }
527
619
  });
528
620
  addListener(this, 'peerConnectionGotICECandidate', ev => {
621
+ var _ev$candidate, _ev$candidate2, _ev$candidate3;
529
622
  if (ev.pcId !== this._pcId) {
530
623
  return;
531
624
  }
625
+ console.log(`[RNWebRTC] pc:${this._pcId} local_ice_candidate`, {
626
+ type: (_ev$candidate = ev.candidate) === null || _ev$candidate === void 0 ? void 0 : _ev$candidate.type,
627
+ protocol: (_ev$candidate2 = ev.candidate) === null || _ev$candidate2 === void 0 ? void 0 : _ev$candidate2.protocol,
628
+ sdpMid: (_ev$candidate3 = ev.candidate) === null || _ev$candidate3 === void 0 ? void 0 : _ev$candidate3.sdpMid,
629
+ iceGatheringState: this.iceGatheringState
630
+ });
532
631
  const sdpInfo = ev.sdp;
533
632
 
534
633
  // Can happen when doing a rollback.
@@ -546,7 +645,13 @@ export default class RTCPeerConnection extends EventTarget {
546
645
  if (ev.pcId !== this._pcId) {
547
646
  return;
548
647
  }
648
+ const prev = this.iceGatheringState;
549
649
  this.iceGatheringState = ev.iceGatheringState;
650
+ console.log(`[RNWebRTC] pc:${this._pcId} ice_gathering_state_changed`, {
651
+ prev,
652
+ current: ev.iceGatheringState,
653
+ connectionState: this.connectionState
654
+ });
550
655
  if (this.iceGatheringState === 'complete') {
551
656
  const sdpInfo = ev.sdp;
552
657
 
@@ -588,16 +693,16 @@ export default class RTCPeerConnection extends EventTarget {
588
693
  });
589
694
  }
590
695
 
591
- /**
592
- * Creates a new RTCDataChannel object with the given label. The
593
- * RTCDataChannelInit dictionary can be used to configure properties of the
594
- * underlying channel such as data reliability.
595
- *
596
- * @param {string} label - the value with which the label attribute of the new
597
- * instance is to be initialized
598
- * @param {RTCDataChannelInit} dataChannelDict - an optional dictionary of
599
- * values with which to initialize corresponding attributes of the new
600
- * instance such as id
696
+ /**
697
+ * Creates a new RTCDataChannel object with the given label. The
698
+ * RTCDataChannelInit dictionary can be used to configure properties of the
699
+ * underlying channel such as data reliability.
700
+ *
701
+ * @param {string} label - the value with which the label attribute of the new
702
+ * instance is to be initialized
703
+ * @param {RTCDataChannelInit} dataChannelDict - an optional dictionary of
704
+ * values with which to initialize corresponding attributes of the new
705
+ * instance such as id
601
706
  */
602
707
  createDataChannel(label, dataChannelDict) {
603
708
  if (arguments.length === 0) {
@@ -616,9 +721,9 @@ export default class RTCPeerConnection extends EventTarget {
616
721
  return new RTCDataChannel(channelInfo);
617
722
  }
618
723
 
619
- /**
620
- * Check whether a media stream track exists already in a sender.
621
- * See https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack for more information
724
+ /**
725
+ * Check whether a media stream track exists already in a sender.
726
+ * See https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack for more information
622
727
  */
623
728
  _trackExists(track) {
624
729
  const [sender] = this.getSenders().filter(sender => {
@@ -628,8 +733,8 @@ export default class RTCPeerConnection extends EventTarget {
628
733
  return sender ? true : false;
629
734
  }
630
735
 
631
- /**
632
- * Updates transceivers after offer/answer updates if necessary.
736
+ /**
737
+ * Updates transceivers after offer/answer updates if necessary.
633
738
  */
634
739
  _updateTransceivers(transceiverUpdates) {
635
740
  let removeStopped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@@ -653,10 +758,10 @@ export default class RTCPeerConnection extends EventTarget {
653
758
  }
654
759
  }
655
760
 
656
- /**
657
- * Inserts transceiver into the transceiver array in the order they are created (timestamp).
658
- * @param order an index that refers to when it it was created relatively.
659
- * @param transceiver the transceiver object to be inserted.
761
+ /**
762
+ * Inserts transceiver into the transceiver array in the order they are created (timestamp).
763
+ * @param order an index that refers to when it it was created relatively.
764
+ * @param transceiver the transceiver object to be inserted.
660
765
  */
661
766
  _insertTransceiverSorted(order, transceiver) {
662
767
  this._transceivers.push({
@@ -667,8 +772,8 @@ export default class RTCPeerConnection extends EventTarget {
667
772
  }
668
773
  }
669
774
 
670
- /**
671
- * Define the `onxxx` event handlers.
775
+ /**
776
+ * Define the `onxxx` event handlers.
672
777
  */
673
778
  const proto = RTCPeerConnection.prototype;
674
779
  defineEventAttribute(proto, 'connectionstatechange');