@sbhjt-gr/react-native-webrtc 124.0.0 → 124.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 (362) 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 +1643 -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 +464 -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 +36 -36
  62. package/ios/RCTWebRTC/PalabraClient.m +584 -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 -0
  86. package/ios/RCTWebRTC/WLVAudioDevice.m +137 -0
  87. package/ios/RCTWebRTC/WebRTCModule+Palabra.h +4 -4
  88. package/ios/RCTWebRTC/WebRTCModule+Palabra.m +83 -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 -533
  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 -51
  102. package/ios/RCTWebRTC/WebRTCModule.m +169 -151
  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 +832 -832
  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 +111 -111
  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
  362. package/.claude/settings.local.json +0 -9
@@ -261,13 +261,13 @@ class RTCPeerConnection extends _index.EventTarget {
261
261
  this.remoteDescription = new _RTCSessionDescription.default(newSdp);
262
262
  }
263
263
 
264
- /**
265
- * @brief Adds a new track to the {@link RTCPeerConnection},
266
- * and indicates that it is contained in the specified {@link MediaStream}s.
267
- * This method has to be synchronous as the W3C API expects a track to be returned
268
- * @param {MediaStreamTrack} track The track to be added
269
- * @param {...MediaStream} streams One or more {@link MediaStream}s the track needs to be added to
270
- * https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack
264
+ /**
265
+ * @brief Adds a new track to the {@link RTCPeerConnection},
266
+ * and indicates that it is contained in the specified {@link MediaStream}s.
267
+ * This method has to be synchronous as the W3C API expects a track to be returned
268
+ * @param {MediaStreamTrack} track The track to be added
269
+ * @param {...MediaStream} streams One or more {@link MediaStream}s the track needs to be added to
270
+ * https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack
271
271
  */
272
272
  addTrack(track) {
273
273
  log.debug(`${this._pcId} addTrack`);
@@ -409,14 +409,14 @@ class RTCPeerConnection extends _index.EventTarget {
409
409
  if (!selector) {
410
410
  const data = await WebRTCModule.peerConnectionGetStats(this._pcId);
411
411
 
412
- /**
413
- * On both Android and iOS it is faster to construct a single
414
- * JSON string representing the Map of StatsReports and have it
415
- * pass through the React Native bridge rather than the Map of
416
- * StatsReports. While the implementations do try to be faster in
417
- * general, the stress is on being faster to pass through the React
418
- * Native bridge which is a bottleneck that tends to be visible in
419
- * the UI when there is congestion involving UI-related passing.
412
+ /**
413
+ * On both Android and iOS it is faster to construct a single
414
+ * JSON string representing the Map of StatsReports and have it
415
+ * pass through the React Native bridge rather than the Map of
416
+ * StatsReports. While the implementations do try to be faster in
417
+ * general, the stress is on being faster to pass through the React
418
+ * Native bridge which is a bottleneck that tends to be visible in
419
+ * the UI when there is congestion involving UI-related passing.
420
420
  */
421
421
  return new Map(JSON.parse(data));
422
422
  } else {
@@ -597,16 +597,16 @@ class RTCPeerConnection extends _index.EventTarget {
597
597
  });
598
598
  }
599
599
 
600
- /**
601
- * Creates a new RTCDataChannel object with the given label. The
602
- * RTCDataChannelInit dictionary can be used to configure properties of the
603
- * underlying channel such as data reliability.
604
- *
605
- * @param {string} label - the value with which the label attribute of the new
606
- * instance is to be initialized
607
- * @param {RTCDataChannelInit} dataChannelDict - an optional dictionary of
608
- * values with which to initialize corresponding attributes of the new
609
- * instance such as id
600
+ /**
601
+ * Creates a new RTCDataChannel object with the given label. The
602
+ * RTCDataChannelInit dictionary can be used to configure properties of the
603
+ * underlying channel such as data reliability.
604
+ *
605
+ * @param {string} label - the value with which the label attribute of the new
606
+ * instance is to be initialized
607
+ * @param {RTCDataChannelInit} dataChannelDict - an optional dictionary of
608
+ * values with which to initialize corresponding attributes of the new
609
+ * instance such as id
610
610
  */
611
611
  createDataChannel(label, dataChannelDict) {
612
612
  if (arguments.length === 0) {
@@ -625,9 +625,9 @@ class RTCPeerConnection extends _index.EventTarget {
625
625
  return new _RTCDataChannel.default(channelInfo);
626
626
  }
627
627
 
628
- /**
629
- * Check whether a media stream track exists already in a sender.
630
- * See https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack for more information
628
+ /**
629
+ * Check whether a media stream track exists already in a sender.
630
+ * See https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack for more information
631
631
  */
632
632
  _trackExists(track) {
633
633
  const [sender] = this.getSenders().filter(sender => {
@@ -637,8 +637,8 @@ class RTCPeerConnection extends _index.EventTarget {
637
637
  return sender ? true : false;
638
638
  }
639
639
 
640
- /**
641
- * Updates transceivers after offer/answer updates if necessary.
640
+ /**
641
+ * Updates transceivers after offer/answer updates if necessary.
642
642
  */
643
643
  _updateTransceivers(transceiverUpdates) {
644
644
  let removeStopped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@@ -662,10 +662,10 @@ class RTCPeerConnection extends _index.EventTarget {
662
662
  }
663
663
  }
664
664
 
665
- /**
666
- * Inserts transceiver into the transceiver array in the order they are created (timestamp).
667
- * @param order an index that refers to when it it was created relatively.
668
- * @param transceiver the transceiver object to be inserted.
665
+ /**
666
+ * Inserts transceiver into the transceiver array in the order they are created (timestamp).
667
+ * @param order an index that refers to when it it was created relatively.
668
+ * @param transceiver the transceiver object to be inserted.
669
669
  */
670
670
  _insertTransceiverSorted(order, transceiver) {
671
671
  this._transceivers.push({
@@ -676,8 +676,8 @@ class RTCPeerConnection extends _index.EventTarget {
676
676
  }
677
677
  }
678
678
 
679
- /**
680
- * Define the `onxxx` event handlers.
679
+ /**
680
+ * Define the `onxxx` event handlers.
681
681
  */
682
682
  exports.default = RTCPeerConnection;
683
683
  const proto = RTCPeerConnection.prototype;
@@ -1 +1 @@
1
- {"version":3,"names":["_index","require","_reactNative","_EventEmitter","_Logger","_interopRequireDefault","_MediaStream","_MediaStreamTrack","_MediaStreamTrackEvent","_RTCDataChannel","_RTCDataChannelEvent","_RTCIceCandidate","_RTCIceCandidateEvent","_RTCRtpReceiveParameters","_RTCRtpReceiver","_RTCRtpSendParameters","_RTCRtpSender","_RTCRtpTransceiver","_RTCSessionDescription","_RTCTrackEvent","RTCUtil","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_defineProperty","value","enumerable","configurable","writable","log","Logger","WebRTCModule","NativeModules","nextPeerConnectionId","RTCPeerConnection","EventTarget","constructor","configuration","_pcId","_configuration$iceSer","servers","iceServers","server","urls","url","Array","isArray","map","toLowerCase","filter","s","peerConnectionInit","Error","_transceivers","_remoteStreams","Map","_pendingTrackEvents","_registerEvents","debug","createOffer","options","sdpInfo","newTransceivers","transceiversInfo","peerConnectionCreateOffer","normalizeOfferOptions","forEach","t","transceiverOrder","transceiver","newSender","RTCRtpSender","sender","track","remoteTrack","receiver","MediaStreamTrack","newReceiver","RTCRtpReceiver","newTransceiver","RTCRtpTransceiver","_insertTransceiverSorted","_updateTransceivers","createAnswer","peerConnectionCreateAnswer","setConfiguration","peerConnectionSetConfiguration","setLocalDescription","sessionDescription","_desc","_sessionDescription$s","type","sdp","isSdpTypeValid","peerConnectionSetLocalDescription","localDescription","RTCSessionDescription","setRemoteDescription","_sessionDescription$s2","_desc$type","Promise","reject","peerConnectionSetRemoteDescription","remoteDescription","pendingTrackEvents","ev","getTransceivers","id","_mid","mid","_currentDirection","currentDirection","_direction","direction","streams","streamInfo","streamId","stream","MediaStream","streamReactTag","tracks","_tracks","includes","push","eventData","dispatchEvent","RTCTrackEvent","MediaStreamTrackEvent","_setMutedInternal","addIceCandidate","candidate","sdpMLineIndex","undefined","sdpMid","TypeError","newSdp","peerConnectionAddICECandidate","deepClone","addTrack","connectionState","_trackExists","_len","arguments","length","_key","streamIds","result","peerConnectionAddTrack","existingSender","getSenders","_track","existingTransceiver","addTransceiver","source","init","src","trackId","peerConnectionAddTransceiver","removeTrack","_peerConnectionId","find","peerConnectionRemoveTrack","getStats","selector","data","peerConnectionGetStats","JSON","parse","senders","receivers","getReceivers","r","matches","sr","e","stopped","close","peerConnectionClose","_ref","_setStopped","restartIce","peerConnectionRestartIce","addListener","pcId","Event","iceConnectionState","removeListener","peerConnectionDispose","signalingState","receiverId","values","trackIdx","indexOf","splice","RTCIceCandidate","RTCIceCandidateEvent","iceGatheringState","channel","RTCDataChannel","dataChannel","RTCDataChannelEvent","muted","createDataChannel","label","dataChannelDict","channelInfo","String","_sender$track","transceiverUpdates","removeStopped","update","transceiverId","_stopped","Boolean","isStopped","_sender","_rtpParameters","RTCRtpSendParameters","senderRtpParameters","_receiver","RTCRtpReceiveParameters","receiverRtpParameters","order","sort","a","b","exports","proto","defineEventAttribute"],"sources":["RTCPeerConnection.ts"],"sourcesContent":["import { EventTarget, Event, defineEventAttribute } from 'event-target-shim/index';\r\nimport { NativeModules } from 'react-native';\r\n\r\nimport { addListener, removeListener } from './EventEmitter';\r\nimport Logger from './Logger';\r\nimport MediaStream from './MediaStream';\r\nimport MediaStreamTrack from './MediaStreamTrack';\r\nimport MediaStreamTrackEvent from './MediaStreamTrackEvent';\r\nimport RTCDataChannel from './RTCDataChannel';\r\nimport RTCDataChannelEvent from './RTCDataChannelEvent';\r\nimport RTCIceCandidate from './RTCIceCandidate';\r\nimport RTCIceCandidateEvent from './RTCIceCandidateEvent';\r\nimport RTCRtpReceiveParameters from './RTCRtpReceiveParameters';\r\nimport RTCRtpReceiver from './RTCRtpReceiver';\r\nimport RTCRtpSendParameters from './RTCRtpSendParameters';\r\nimport RTCRtpSender from './RTCRtpSender';\r\nimport RTCRtpTransceiver from './RTCRtpTransceiver';\r\nimport RTCSessionDescription, { RTCSessionDescriptionInit } from './RTCSessionDescription';\r\nimport RTCTrackEvent from './RTCTrackEvent';\r\nimport * as RTCUtil from './RTCUtil';\r\nimport { RTCOfferOptions } from './RTCUtil';\r\n\r\nconst log = new Logger('pc');\r\nconst { WebRTCModule } = NativeModules;\r\n\r\ntype RTCSignalingState =\r\n | 'stable'\r\n | 'have-local-offer'\r\n | 'have-remote-offer'\r\n | 'have-local-pranswer'\r\n | 'have-remote-pranswer'\r\n | 'closed';\r\n\r\ntype RTCIceGatheringState = 'new' | 'gathering' | 'complete';\r\n\r\ntype RTCPeerConnectionState = 'new' | 'connecting' | 'connected' | 'disconnected' | 'failed' | 'closed';\r\n\r\ntype RTCIceConnectionState = 'new' | 'checking' | 'connected' | 'completed' | 'failed' | 'disconnected' | 'closed';\r\n\r\ntype RTCDataChannelInit = {\r\n ordered?: boolean,\r\n maxPacketLifeTime?: number,\r\n maxRetransmits?: number,\r\n protocol?: string,\r\n negotiated?: boolean,\r\n id?: number\r\n};\r\n\r\ntype RTCIceServer = {\r\n credential?: string,\r\n url?: string, // Deprecated.\r\n urls?: string | string[],\r\n username?: string\r\n};\r\n\r\ntype RTCConfiguration = {\r\n bundlePolicy?: 'balanced' | 'max-compat' | 'max-bundle',\r\n iceCandidatePoolSize?: number,\r\n iceServers?: RTCIceServer[],\r\n iceTransportPolicy?: 'all' | 'relay',\r\n rtcpMuxPolicy?: 'negotiate' | 'require'\r\n};\r\n\r\ntype RTCPeerConnectionEventMap = {\r\n connectionstatechange: Event<'connectionstatechange'>\r\n icecandidate: RTCIceCandidateEvent<'icecandidate'>\r\n icecandidateerror: RTCIceCandidateEvent<'icecandidateerror'>\r\n iceconnectionstatechange: Event<'iceconnectionstatechange'>\r\n icegatheringstatechange: Event<'icegatheringstatechange'>\r\n negotiationneeded: Event<'negotiationneeded'>\r\n signalingstatechange: Event<'signalingstatechange'>\r\n datachannel: RTCDataChannelEvent<'datachannel'>\r\n track: RTCTrackEvent<'track'>\r\n error: Event<'error'>\r\n}\r\n\r\nlet nextPeerConnectionId = 0;\r\n\r\nexport default class RTCPeerConnection extends EventTarget<RTCPeerConnectionEventMap> {\r\n localDescription: RTCSessionDescription | null = null;\r\n remoteDescription: RTCSessionDescription | null = null;\r\n signalingState: RTCSignalingState = 'stable';\r\n iceGatheringState: RTCIceGatheringState = 'new';\r\n connectionState: RTCPeerConnectionState = 'new';\r\n iceConnectionState: RTCIceConnectionState = 'new';\r\n\r\n _pcId: number;\r\n _transceivers: { order: number, transceiver: RTCRtpTransceiver }[];\r\n _remoteStreams: Map<string, MediaStream>;\r\n _pendingTrackEvents: any[];\r\n\r\n constructor(configuration?: RTCConfiguration) {\r\n super();\r\n\r\n this._pcId = nextPeerConnectionId++;\r\n\r\n // Sanitize ICE servers.\r\n if (configuration) {\r\n const servers = configuration?.iceServers ?? [];\r\n\r\n for (const server of servers) {\r\n let urls = server.url || server.urls;\r\n\r\n delete server.url;\r\n delete server.urls;\r\n\r\n if (!urls) {\r\n continue;\r\n }\r\n\r\n if (!Array.isArray(urls)) {\r\n urls = [ urls ];\r\n }\r\n\r\n // Native WebRTC does case sensitive parsing.\r\n server.urls = urls.map(url => url.toLowerCase());\r\n }\r\n\r\n // Filter out bogus servers.\r\n configuration.iceServers = servers.filter(s => s.urls);\r\n }\r\n\r\n if (!WebRTCModule.peerConnectionInit(configuration, this._pcId)) {\r\n throw new Error('Failed to initialize PeerConnection, check the native logs!');\r\n }\r\n\r\n this._transceivers = [];\r\n this._remoteStreams = new Map();\r\n this._pendingTrackEvents = [];\r\n\r\n this._registerEvents();\r\n\r\n log.debug(`${this._pcId} ctor`);\r\n }\r\n\r\n async createOffer(options?:RTCOfferOptions) {\r\n log.debug(`${this._pcId} createOffer`);\r\n\r\n const {\r\n sdpInfo,\r\n newTransceivers,\r\n transceiversInfo\r\n } = await WebRTCModule.peerConnectionCreateOffer(this._pcId, RTCUtil.normalizeOfferOptions(options));\r\n\r\n log.debug(`${this._pcId} createOffer OK`);\r\n\r\n newTransceivers?.forEach(t => {\r\n const { transceiverOrder, transceiver } = t;\r\n const newSender = new RTCRtpSender({ ...transceiver.sender, track: null });\r\n const remoteTrack\r\n = transceiver.receiver.track ? new MediaStreamTrack(transceiver.receiver.track) : null;\r\n const newReceiver = new RTCRtpReceiver({ ...transceiver.receiver, track: remoteTrack });\r\n const newTransceiver = new RTCRtpTransceiver({\r\n ...transceiver,\r\n sender: newSender,\r\n receiver: newReceiver,\r\n });\r\n\r\n this._insertTransceiverSorted(transceiverOrder, newTransceiver);\r\n });\r\n\r\n this._updateTransceivers(transceiversInfo);\r\n\r\n return sdpInfo;\r\n }\r\n\r\n async createAnswer() {\r\n log.debug(`${this._pcId} createAnswer`);\r\n\r\n const {\r\n sdpInfo,\r\n transceiversInfo\r\n } = await WebRTCModule.peerConnectionCreateAnswer(this._pcId, {});\r\n\r\n this._updateTransceivers(transceiversInfo);\r\n\r\n return sdpInfo;\r\n }\r\n\r\n setConfiguration(configuration): void {\r\n WebRTCModule.peerConnectionSetConfiguration(configuration, this._pcId);\r\n }\r\n\r\n async setLocalDescription(sessionDescription?: RTCSessionDescription | RTCSessionDescriptionInit): Promise<void> {\r\n log.debug(`${this._pcId} setLocalDescription`);\r\n\r\n let desc;\r\n\r\n if (sessionDescription) {\r\n desc = {\r\n type: sessionDescription.type,\r\n sdp: sessionDescription.sdp ?? ''\r\n };\r\n\r\n if (!RTCUtil.isSdpTypeValid(desc.type)) {\r\n throw new Error(`Invalid session description: invalid type: ${desc.type}`);\r\n }\r\n } else {\r\n desc = null;\r\n }\r\n\r\n const {\r\n sdpInfo,\r\n transceiversInfo\r\n } = await WebRTCModule.peerConnectionSetLocalDescription(this._pcId, desc);\r\n\r\n if (sdpInfo.type && sdpInfo.sdp) {\r\n this.localDescription = new RTCSessionDescription(sdpInfo);\r\n } else {\r\n this.localDescription = null;\r\n }\r\n\r\n this._updateTransceivers(transceiversInfo, /* removeStopped */ desc?.type === 'answer');\r\n\r\n log.debug(`${this._pcId} setLocalDescription OK`);\r\n }\r\n\r\n async setRemoteDescription(sessionDescription: RTCSessionDescription | RTCSessionDescriptionInit): Promise<void> {\r\n log.debug(`${this._pcId} setRemoteDescription`);\r\n\r\n if (!sessionDescription) {\r\n return Promise.reject(new Error('No session description provided'));\r\n }\r\n\r\n const desc = {\r\n type: sessionDescription.type,\r\n sdp: sessionDescription.sdp ?? ''\r\n };\r\n\r\n if (!RTCUtil.isSdpTypeValid(desc.type ?? '')) {\r\n throw new Error(`Invalid session description: invalid type: ${desc.type}`);\r\n }\r\n\r\n const {\r\n sdpInfo,\r\n newTransceivers,\r\n transceiversInfo\r\n } = await WebRTCModule.peerConnectionSetRemoteDescription(this._pcId, desc);\r\n\r\n if (sdpInfo.type && sdpInfo.sdp) {\r\n this.remoteDescription = new RTCSessionDescription(sdpInfo);\r\n } else {\r\n this.remoteDescription = null;\r\n }\r\n\r\n newTransceivers?.forEach(t => {\r\n const { transceiverOrder, transceiver } = t;\r\n const newSender = new RTCRtpSender({ ...transceiver.sender, track: null });\r\n const remoteTrack\r\n = transceiver.receiver.track ? new MediaStreamTrack(transceiver.receiver.track) : null;\r\n const newReceiver = new RTCRtpReceiver({ ...transceiver.receiver, track: remoteTrack });\r\n const newTransceiver = new RTCRtpTransceiver({\r\n ...transceiver,\r\n sender: newSender,\r\n receiver: newReceiver,\r\n });\r\n\r\n this._insertTransceiverSorted(transceiverOrder, newTransceiver);\r\n });\r\n\r\n this._updateTransceivers(transceiversInfo, /* removeStopped */ desc.type === 'answer');\r\n\r\n // Fire track events. They must fire before sRD resolves.\r\n const pendingTrackEvents = this._pendingTrackEvents;\r\n\r\n this._pendingTrackEvents = [];\r\n\r\n for (const ev of pendingTrackEvents) {\r\n const [ transceiver ] = this\r\n .getTransceivers()\r\n .filter(t => t.receiver.id === ev.receiver.id);\r\n\r\n // We need to fire this event for an existing track sometimes, like\r\n // when the transceiver direction (on the sending side) switches from\r\n // sendrecv to recvonly and then back.\r\n\r\n // @ts-ignore\r\n const track: MediaStreamTrack = transceiver.receiver.track;\r\n\r\n transceiver._mid = ev.transceiver.mid;\r\n transceiver._currentDirection = ev.transceiver.currentDirection;\r\n transceiver._direction = ev.transceiver.direction;\r\n\r\n // Get the stream object from the event. Create if necessary.\r\n const streams: MediaStream[] = ev.streams.map(streamInfo => {\r\n // Here we are making sure that we don't create stream objects that already exist\r\n // So that event listeners do get the same object if it has been created before.\r\n if (!this._remoteStreams.has(streamInfo.streamId)) {\r\n const stream = new MediaStream({\r\n streamId: streamInfo.streamId,\r\n streamReactTag: streamInfo.streamReactTag,\r\n tracks: []\r\n });\r\n\r\n this._remoteStreams.set(streamInfo.streamId, stream);\r\n }\r\n\r\n const stream = this._remoteStreams.get(streamInfo.streamId);\r\n\r\n if (!stream?._tracks.includes(track)) {\r\n stream?._tracks.push(track);\r\n }\r\n\r\n return stream;\r\n });\r\n\r\n const eventData = {\r\n streams,\r\n transceiver,\r\n track,\r\n receiver: transceiver.receiver\r\n };\r\n\r\n\r\n this.dispatchEvent(new RTCTrackEvent('track', eventData));\r\n\r\n streams.forEach(stream => {\r\n stream.dispatchEvent(new MediaStreamTrackEvent('addtrack', { track }));\r\n });\r\n\r\n // Dispatch an unmute event for the track.\r\n track._setMutedInternal(false);\r\n }\r\n\r\n log.debug(`${this._pcId} setRemoteDescription OK`);\r\n }\r\n\r\n async addIceCandidate(candidate): Promise<void> {\r\n log.debug(`${this._pcId} addIceCandidate`);\r\n\r\n if (!candidate || !candidate.candidate) {\r\n // XXX end-of candidates is not implemented: https://bugs.chromium.org/p/webrtc/issues/detail?id=9218\r\n return;\r\n }\r\n\r\n if ((candidate.sdpMLineIndex === null ||\r\n candidate.sdpMLineIndex === undefined) &&\r\n (candidate.sdpMid === null ||\r\n candidate.sdpMid === undefined)\r\n ) {\r\n throw new TypeError('`sdpMLineIndex` and `sdpMid` must not be both null or undefined');\r\n }\r\n\r\n const newSdp = await WebRTCModule.peerConnectionAddICECandidate(\r\n this._pcId,\r\n RTCUtil.deepClone(candidate)\r\n );\r\n\r\n this.remoteDescription = new RTCSessionDescription(newSdp);\r\n }\r\n\r\n /**\r\n * @brief Adds a new track to the {@link RTCPeerConnection},\r\n * and indicates that it is contained in the specified {@link MediaStream}s.\r\n * This method has to be synchronous as the W3C API expects a track to be returned\r\n * @param {MediaStreamTrack} track The track to be added\r\n * @param {...MediaStream} streams One or more {@link MediaStream}s the track needs to be added to\r\n * https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack\r\n */\r\n addTrack(track: MediaStreamTrack, ...streams: MediaStream[]): RTCRtpSender {\r\n log.debug(`${this._pcId} addTrack`);\r\n\r\n if (this.connectionState === 'closed') {\r\n throw new Error('Peer Connection is closed');\r\n }\r\n\r\n if (this._trackExists(track)) {\r\n throw new Error('Track already exists in a sender');\r\n }\r\n\r\n const streamIds = streams.map(s => s.id);\r\n const result = WebRTCModule.peerConnectionAddTrack(this._pcId, track.id, { streamIds });\r\n\r\n if (result === null) {\r\n throw new Error('Could not add sender');\r\n }\r\n\r\n const { transceiverOrder, transceiver, sender } = result;\r\n\r\n // According to the W3C docs, the sender could have been reused, and\r\n // so we check if that is the case, and update accordingly.\r\n const [ existingSender ] = this\r\n .getSenders()\r\n .filter(s => s.id === sender.id);\r\n\r\n if (existingSender) {\r\n // Update sender\r\n existingSender._track = track;\r\n\r\n // Update the corresponding transceiver as well\r\n const [ existingTransceiver ] = this\r\n .getTransceivers()\r\n .filter(t => t.sender.id === existingSender.id);\r\n\r\n existingTransceiver._direction = transceiver.direction;\r\n existingTransceiver._currentDirection = transceiver.currentDirection;\r\n\r\n return existingSender;\r\n }\r\n\r\n // This is a new transceiver, should create a transceiver for it and add it\r\n const newSender = new RTCRtpSender({ ...transceiver.sender, track });\r\n const remoteTrack = transceiver.receiver.track ? new MediaStreamTrack(transceiver.receiver.track) : null;\r\n const newReceiver = new RTCRtpReceiver({ ...transceiver.receiver, track: remoteTrack });\r\n const newTransceiver = new RTCRtpTransceiver({\r\n ...transceiver,\r\n sender: newSender,\r\n receiver: newReceiver,\r\n });\r\n\r\n this._insertTransceiverSorted(transceiverOrder, newTransceiver);\r\n\r\n return newSender;\r\n }\r\n\r\n addTransceiver(source: 'audio' | 'video' | MediaStreamTrack, init): RTCRtpTransceiver {\r\n log.debug(`${this._pcId} addTransceiver`);\r\n\r\n let src = {};\r\n\r\n if (source === 'audio') {\r\n src = { type: 'audio' };\r\n } else if (source === 'video') {\r\n src = { type: 'video' };\r\n } else {\r\n src = { trackId: source.id };\r\n }\r\n\r\n // Extract the stream ids\r\n if (init && init.streams) {\r\n init.streamIds = init.streams.map(stream => stream.id);\r\n }\r\n\r\n const result = WebRTCModule.peerConnectionAddTransceiver(this._pcId, { ...src, init: { ...init } });\r\n\r\n if (result === null) {\r\n throw new Error('Transceiver could not be added');\r\n }\r\n\r\n const t = result.transceiver;\r\n let track: MediaStreamTrack | null = null;\r\n\r\n if (typeof source === 'string') {\r\n if (t.sender.track) {\r\n track = new MediaStreamTrack(t.sender.track);\r\n }\r\n } else {\r\n // 'source' is a MediaStreamTrack\r\n track = source;\r\n }\r\n\r\n const sender = new RTCRtpSender({ ...t.sender, track });\r\n const remoteTrack = t.receiver.track ? new MediaStreamTrack(t.receiver.track) : null;\r\n const receiver = new RTCRtpReceiver({ ...t.receiver, track: remoteTrack });\r\n const transceiver = new RTCRtpTransceiver({\r\n ...result.transceiver,\r\n sender,\r\n receiver\r\n });\r\n\r\n this._insertTransceiverSorted(result.transceiverOrder, transceiver);\r\n\r\n return transceiver;\r\n }\r\n\r\n removeTrack(sender: RTCRtpSender) {\r\n log.debug(`${this._pcId} removeTrack`);\r\n\r\n if (this._pcId !== sender._peerConnectionId) {\r\n throw new Error('Sender does not belong to this peer connection');\r\n }\r\n\r\n if (this.connectionState === 'closed') {\r\n throw new Error('Peer Connection is closed');\r\n }\r\n\r\n const existingSender = this\r\n .getSenders()\r\n .find(s => s === sender);\r\n\r\n if (!existingSender) {\r\n throw new Error('Sender does not exist');\r\n }\r\n\r\n if (existingSender.track === null) {\r\n return;\r\n }\r\n\r\n // Blocking!\r\n WebRTCModule.peerConnectionRemoveTrack(this._pcId, sender.id);\r\n\r\n existingSender._track = null;\r\n\r\n const [ existingTransceiver ] = this\r\n .getTransceivers()\r\n .filter(t => t.sender.id === existingSender.id);\r\n\r\n existingTransceiver._direction = existingTransceiver.direction === 'sendrecv' ? 'recvonly' : 'inactive';\r\n }\r\n\r\n async getStats(selector?: MediaStreamTrack) {\r\n log.debug(`${this._pcId} getStats`);\r\n\r\n if (!selector) {\r\n const data = await WebRTCModule.peerConnectionGetStats(this._pcId);\r\n\r\n /**\r\n * On both Android and iOS it is faster to construct a single\r\n * JSON string representing the Map of StatsReports and have it\r\n * pass through the React Native bridge rather than the Map of\r\n * StatsReports. While the implementations do try to be faster in\r\n * general, the stress is on being faster to pass through the React\r\n * Native bridge which is a bottleneck that tends to be visible in\r\n * the UI when there is congestion involving UI-related passing.\r\n */\r\n return new Map(JSON.parse(data));\r\n } else {\r\n const senders = this.getSenders().filter(s => s.track === selector);\r\n const receivers = this.getReceivers().filter(r => r.track === selector);\r\n const matches = senders.length + receivers.length;\r\n\r\n if (matches === 0) {\r\n throw new Error('Invalid selector: could not find matching sender / receiver');\r\n } else if (matches > 1) {\r\n throw new Error('Invalid selector: multiple matching senders / receivers');\r\n } else {\r\n const sr = senders[0] || receivers[0];\r\n\r\n return sr.getStats();\r\n }\r\n }\r\n }\r\n\r\n getTransceivers(): RTCRtpTransceiver[] {\r\n return this._transceivers.map(e => e.transceiver);\r\n }\r\n\r\n getSenders(): RTCRtpSender[] {\r\n return this._transceivers.filter(e => !e.transceiver.stopped).map(e => e.transceiver.sender);\r\n }\r\n\r\n getReceivers(): RTCRtpReceiver[] {\r\n return this._transceivers.filter(e => !e.transceiver.stopped).map(e => e.transceiver.receiver);\r\n }\r\n\r\n close(): void {\r\n log.debug(`${this._pcId} close`);\r\n\r\n if (this.connectionState === 'closed') {\r\n return;\r\n }\r\n\r\n WebRTCModule.peerConnectionClose(this._pcId);\r\n\r\n // Mark transceivers as stopped.\r\n this._transceivers.forEach(({ transceiver })=> {\r\n transceiver._setStopped();\r\n });\r\n }\r\n\r\n restartIce(): void {\r\n WebRTCModule.peerConnectionRestartIce(this._pcId);\r\n }\r\n\r\n _registerEvents(): void {\r\n addListener(this, 'peerConnectionOnRenegotiationNeeded', (ev: any) => {\r\n if (ev.pcId !== this._pcId) {\r\n return;\r\n }\r\n\r\n this.dispatchEvent(new Event('negotiationneeded'));\r\n });\r\n\r\n addListener(this, 'peerConnectionIceConnectionChanged', (ev: any) => {\r\n if (ev.pcId !== this._pcId) {\r\n return;\r\n }\r\n\r\n this.iceConnectionState = ev.iceConnectionState;\r\n\r\n this.dispatchEvent(new Event('iceconnectionstatechange'));\r\n });\r\n\r\n addListener(this, 'peerConnectionStateChanged', (ev: any) => {\r\n if (ev.pcId !== this._pcId) {\r\n return;\r\n }\r\n\r\n this.connectionState = ev.connectionState;\r\n\r\n this.dispatchEvent(new Event('connectionstatechange'));\r\n\r\n if (ev.connectionState === 'closed') {\r\n // This PeerConnection is done, clean up.\r\n removeListener(this);\r\n\r\n WebRTCModule.peerConnectionDispose(this._pcId);\r\n }\r\n });\r\n\r\n addListener(this, 'peerConnectionSignalingStateChanged', (ev: any) => {\r\n if (ev.pcId !== this._pcId) {\r\n return;\r\n }\r\n\r\n this.signalingState = ev.signalingState;\r\n\r\n this.dispatchEvent(new Event('signalingstatechange'));\r\n });\r\n\r\n // Consider moving away from this event: https://github.com/WebKit/WebKit/pull/3953\r\n addListener(this, 'peerConnectionOnTrack', (ev: any) => {\r\n if (ev.pcId !== this._pcId) {\r\n return;\r\n }\r\n\r\n log.debug(`${this._pcId} ontrack`);\r\n\r\n // NOTE: We need to make sure the track event fires right before sRD completes,\r\n // so we queue them up here and dispatch the events when sRD fires, but before completing it.\r\n // In the future we should probably implement out own logic and drop this event altogether.\r\n this._pendingTrackEvents.push(ev);\r\n });\r\n\r\n addListener(this, 'peerConnectionOnRemoveTrack', (ev: any) => {\r\n if (ev.pcId !== this._pcId) {\r\n return;\r\n }\r\n\r\n log.debug(`${this._pcId} onremovetrack ${ev.receiverId}`);\r\n\r\n const receiver = this.getReceivers().find(r => r.id === ev.receiverId);\r\n const track = receiver?.track;\r\n\r\n if (receiver && track) {\r\n // As per the spec:\r\n // - Remove the track from any media streams that were previously passed to the `track` event.\r\n // https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-removetrack,\r\n // - Mark the track as muted:\r\n // https://w3c.github.io/webrtc-pc/#process-remote-track-removal\r\n for (const stream of this._remoteStreams.values()) {\r\n if (stream._tracks.includes(track)) {\r\n const trackIdx = stream._tracks.indexOf(track);\r\n\r\n log.debug(`${this._pcId} removetrack ${track.id}`);\r\n\r\n stream._tracks.splice(trackIdx, 1);\r\n\r\n stream.dispatchEvent(new MediaStreamTrackEvent('removetrack', { track }));\r\n\r\n // Dispatch a mute event for the track.\r\n track._setMutedInternal(true);\r\n }\r\n }\r\n }\r\n });\r\n\r\n addListener(this, 'peerConnectionGotICECandidate', (ev: any) => {\r\n if (ev.pcId !== this._pcId) {\r\n return;\r\n }\r\n\r\n const sdpInfo = ev.sdp;\r\n\r\n // Can happen when doing a rollback.\r\n if (sdpInfo.type && sdpInfo.sdp) {\r\n this.localDescription = new RTCSessionDescription(sdpInfo);\r\n } else {\r\n this.localDescription = null;\r\n }\r\n\r\n const candidate = new RTCIceCandidate(ev.candidate);\r\n\r\n this.dispatchEvent(new RTCIceCandidateEvent('icecandidate', { candidate }));\r\n });\r\n\r\n addListener(this, 'peerConnectionIceGatheringChanged', (ev: any) => {\r\n if (ev.pcId !== this._pcId) {\r\n return;\r\n }\r\n\r\n this.iceGatheringState = ev.iceGatheringState;\r\n\r\n if (this.iceGatheringState === 'complete') {\r\n const sdpInfo = ev.sdp;\r\n\r\n // Can happen when doing a rollback.\r\n if (sdpInfo.type && sdpInfo.sdp) {\r\n this.localDescription = new RTCSessionDescription(sdpInfo);\r\n } else {\r\n this.localDescription = null;\r\n }\r\n\r\n this.dispatchEvent(new RTCIceCandidateEvent('icecandidate', { candidate: null }));\r\n }\r\n\r\n this.dispatchEvent(new Event('icegatheringstatechange'));\r\n });\r\n\r\n addListener(this, 'peerConnectionDidOpenDataChannel', (ev: any) => {\r\n if (ev.pcId !== this._pcId) {\r\n return;\r\n }\r\n\r\n const channel = new RTCDataChannel(ev.dataChannel);\r\n\r\n this.dispatchEvent(new RTCDataChannelEvent('datachannel', { channel }));\r\n\r\n // Send 'open' event. Native doesn't update the state since it's already\r\n // set at this point.\r\n channel.dispatchEvent(new RTCDataChannelEvent('open', { channel }));\r\n });\r\n\r\n addListener(this, 'mediaStreamTrackMuteChanged', (ev: any) => {\r\n if (ev.pcId !== this._pcId) {\r\n return;\r\n }\r\n\r\n const [\r\n track\r\n ] = this.getReceivers().map(r => r.track).filter(t => t?.id === ev.trackId);\r\n\r\n if (track) {\r\n track._setMutedInternal(ev.muted);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Creates a new RTCDataChannel object with the given label. The\r\n * RTCDataChannelInit dictionary can be used to configure properties of the\r\n * underlying channel such as data reliability.\r\n *\r\n * @param {string} label - the value with which the label attribute of the new\r\n * instance is to be initialized\r\n * @param {RTCDataChannelInit} dataChannelDict - an optional dictionary of\r\n * values with which to initialize corresponding attributes of the new\r\n * instance such as id\r\n */\r\n createDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel {\r\n if (arguments.length === 0) {\r\n throw new TypeError('1 argument required, but 0 present');\r\n }\r\n\r\n if (dataChannelDict && 'id' in dataChannelDict) {\r\n const id = dataChannelDict.id;\r\n\r\n if (typeof id !== 'number') {\r\n throw new TypeError('DataChannel id must be a number: ' + id);\r\n }\r\n }\r\n\r\n const channelInfo = WebRTCModule.createDataChannel(this._pcId, String(label), dataChannelDict);\r\n\r\n if (channelInfo === null) {\r\n throw new TypeError('Failed to create new DataChannel');\r\n }\r\n\r\n return new RTCDataChannel(channelInfo);\r\n }\r\n\r\n /**\r\n * Check whether a media stream track exists already in a sender.\r\n * See https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack for more information\r\n */\r\n _trackExists(track: MediaStreamTrack): boolean {\r\n const [ sender ] = this\r\n .getSenders()\r\n .filter(\r\n sender => sender.track?.id === track.id\r\n );\r\n\r\n return sender? true : false;\r\n }\r\n\r\n /**\r\n * Updates transceivers after offer/answer updates if necessary.\r\n */\r\n _updateTransceivers(transceiverUpdates, removeStopped = false) {\r\n for (const update of transceiverUpdates) {\r\n const [ transceiver ] = this\r\n .getTransceivers()\r\n .filter(t => t.sender.id === update.transceiverId);\r\n\r\n if (!transceiver) {\r\n continue;\r\n }\r\n\r\n if (update.currentDirection) {\r\n transceiver._currentDirection = update.currentDirection;\r\n }\r\n\r\n transceiver._mid = update.mid;\r\n transceiver._stopped = Boolean(update.isStopped);\r\n transceiver._sender._rtpParameters = new RTCRtpSendParameters(update.senderRtpParameters);\r\n transceiver._receiver._rtpParameters = new RTCRtpReceiveParameters(update.receiverRtpParameters);\r\n }\r\n\r\n if (removeStopped) {\r\n const stopped = this.getTransceivers().filter(t => t.stopped);\r\n const newTransceivers = this._transceivers.filter(t => !stopped.includes(t.transceiver));\r\n\r\n this._transceivers = newTransceivers;\r\n }\r\n }\r\n\r\n /**\r\n * Inserts transceiver into the transceiver array in the order they are created (timestamp).\r\n * @param order an index that refers to when it it was created relatively.\r\n * @param transceiver the transceiver object to be inserted.\r\n */\r\n _insertTransceiverSorted(order: number, transceiver: RTCRtpTransceiver) {\r\n this._transceivers.push({ order, transceiver });\r\n this._transceivers.sort((a, b) => a.order - b.order);\r\n }\r\n}\r\n\r\n/**\r\n * Define the `onxxx` event handlers.\r\n */\r\nconst proto = RTCPeerConnection.prototype;\r\n\r\ndefineEventAttribute(proto, 'connectionstatechange');\r\ndefineEventAttribute(proto, 'icecandidate');\r\ndefineEventAttribute(proto, 'icecandidateerror');\r\ndefineEventAttribute(proto, 'iceconnectionstatechange');\r\ndefineEventAttribute(proto, 'icegatheringstatechange');\r\ndefineEventAttribute(proto, 'negotiationneeded');\r\ndefineEventAttribute(proto, 'signalingstatechange');\r\ndefineEventAttribute(proto, 'datachannel');\r\ndefineEventAttribute(proto, 'track');\r\ndefineEventAttribute(proto, 'error');\r\n"],"mappings":"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"}
1
+ {"version":3,"names":["_index","require","_reactNative","_EventEmitter","_Logger","_interopRequireDefault","_MediaStream","_MediaStreamTrack","_MediaStreamTrackEvent","_RTCDataChannel","_RTCDataChannelEvent","_RTCIceCandidate","_RTCIceCandidateEvent","_RTCRtpReceiveParameters","_RTCRtpReceiver","_RTCRtpSendParameters","_RTCRtpSender","_RTCRtpTransceiver","_RTCSessionDescription","_RTCTrackEvent","RTCUtil","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_defineProperty","value","enumerable","configurable","writable","log","Logger","WebRTCModule","NativeModules","nextPeerConnectionId","RTCPeerConnection","EventTarget","constructor","configuration","_pcId","_configuration$iceSer","servers","iceServers","server","urls","url","Array","isArray","map","toLowerCase","filter","s","peerConnectionInit","Error","_transceivers","_remoteStreams","Map","_pendingTrackEvents","_registerEvents","debug","createOffer","options","sdpInfo","newTransceivers","transceiversInfo","peerConnectionCreateOffer","normalizeOfferOptions","forEach","t","transceiverOrder","transceiver","newSender","RTCRtpSender","sender","track","remoteTrack","receiver","MediaStreamTrack","newReceiver","RTCRtpReceiver","newTransceiver","RTCRtpTransceiver","_insertTransceiverSorted","_updateTransceivers","createAnswer","peerConnectionCreateAnswer","setConfiguration","peerConnectionSetConfiguration","setLocalDescription","sessionDescription","_desc","_sessionDescription$s","type","sdp","isSdpTypeValid","peerConnectionSetLocalDescription","localDescription","RTCSessionDescription","setRemoteDescription","_sessionDescription$s2","_desc$type","Promise","reject","peerConnectionSetRemoteDescription","remoteDescription","pendingTrackEvents","ev","getTransceivers","id","_mid","mid","_currentDirection","currentDirection","_direction","direction","streams","streamInfo","streamId","stream","MediaStream","streamReactTag","tracks","_tracks","includes","push","eventData","dispatchEvent","RTCTrackEvent","MediaStreamTrackEvent","_setMutedInternal","addIceCandidate","candidate","sdpMLineIndex","undefined","sdpMid","TypeError","newSdp","peerConnectionAddICECandidate","deepClone","addTrack","connectionState","_trackExists","_len","arguments","length","_key","streamIds","result","peerConnectionAddTrack","existingSender","getSenders","_track","existingTransceiver","addTransceiver","source","init","src","trackId","peerConnectionAddTransceiver","removeTrack","_peerConnectionId","find","peerConnectionRemoveTrack","getStats","selector","data","peerConnectionGetStats","JSON","parse","senders","receivers","getReceivers","r","matches","sr","e","stopped","close","peerConnectionClose","_ref","_setStopped","restartIce","peerConnectionRestartIce","addListener","pcId","Event","iceConnectionState","removeListener","peerConnectionDispose","signalingState","receiverId","values","trackIdx","indexOf","splice","RTCIceCandidate","RTCIceCandidateEvent","iceGatheringState","channel","RTCDataChannel","dataChannel","RTCDataChannelEvent","muted","createDataChannel","label","dataChannelDict","channelInfo","String","_sender$track","transceiverUpdates","removeStopped","update","transceiverId","_stopped","Boolean","isStopped","_sender","_rtpParameters","RTCRtpSendParameters","senderRtpParameters","_receiver","RTCRtpReceiveParameters","receiverRtpParameters","order","sort","a","b","exports","proto","defineEventAttribute"],"sources":["RTCPeerConnection.ts"],"sourcesContent":["import { EventTarget, Event, defineEventAttribute } from 'event-target-shim/index';\nimport { NativeModules } from 'react-native';\n\nimport { addListener, removeListener } from './EventEmitter';\nimport Logger from './Logger';\nimport MediaStream from './MediaStream';\nimport MediaStreamTrack from './MediaStreamTrack';\nimport MediaStreamTrackEvent from './MediaStreamTrackEvent';\nimport RTCDataChannel from './RTCDataChannel';\nimport RTCDataChannelEvent from './RTCDataChannelEvent';\nimport RTCIceCandidate from './RTCIceCandidate';\nimport RTCIceCandidateEvent from './RTCIceCandidateEvent';\nimport RTCRtpReceiveParameters from './RTCRtpReceiveParameters';\nimport RTCRtpReceiver from './RTCRtpReceiver';\nimport RTCRtpSendParameters from './RTCRtpSendParameters';\nimport RTCRtpSender from './RTCRtpSender';\nimport RTCRtpTransceiver from './RTCRtpTransceiver';\nimport RTCSessionDescription, { RTCSessionDescriptionInit } from './RTCSessionDescription';\nimport RTCTrackEvent from './RTCTrackEvent';\nimport * as RTCUtil from './RTCUtil';\nimport { RTCOfferOptions } from './RTCUtil';\n\nconst log = new Logger('pc');\nconst { WebRTCModule } = NativeModules;\n\ntype RTCSignalingState =\n | 'stable'\n | 'have-local-offer'\n | 'have-remote-offer'\n | 'have-local-pranswer'\n | 'have-remote-pranswer'\n | 'closed';\n\ntype RTCIceGatheringState = 'new' | 'gathering' | 'complete';\n\ntype RTCPeerConnectionState = 'new' | 'connecting' | 'connected' | 'disconnected' | 'failed' | 'closed';\n\ntype RTCIceConnectionState = 'new' | 'checking' | 'connected' | 'completed' | 'failed' | 'disconnected' | 'closed';\n\ntype RTCDataChannelInit = {\n ordered?: boolean,\n maxPacketLifeTime?: number,\n maxRetransmits?: number,\n protocol?: string,\n negotiated?: boolean,\n id?: number\n};\n\ntype RTCIceServer = {\n credential?: string,\n url?: string, // Deprecated.\n urls?: string | string[],\n username?: string\n};\n\ntype RTCConfiguration = {\n bundlePolicy?: 'balanced' | 'max-compat' | 'max-bundle',\n iceCandidatePoolSize?: number,\n iceServers?: RTCIceServer[],\n iceTransportPolicy?: 'all' | 'relay',\n rtcpMuxPolicy?: 'negotiate' | 'require'\n};\n\ntype RTCPeerConnectionEventMap = {\n connectionstatechange: Event<'connectionstatechange'>\n icecandidate: RTCIceCandidateEvent<'icecandidate'>\n icecandidateerror: RTCIceCandidateEvent<'icecandidateerror'>\n iceconnectionstatechange: Event<'iceconnectionstatechange'>\n icegatheringstatechange: Event<'icegatheringstatechange'>\n negotiationneeded: Event<'negotiationneeded'>\n signalingstatechange: Event<'signalingstatechange'>\n datachannel: RTCDataChannelEvent<'datachannel'>\n track: RTCTrackEvent<'track'>\n error: Event<'error'>\n}\n\nlet nextPeerConnectionId = 0;\n\nexport default class RTCPeerConnection extends EventTarget<RTCPeerConnectionEventMap> {\n localDescription: RTCSessionDescription | null = null;\n remoteDescription: RTCSessionDescription | null = null;\n signalingState: RTCSignalingState = 'stable';\n iceGatheringState: RTCIceGatheringState = 'new';\n connectionState: RTCPeerConnectionState = 'new';\n iceConnectionState: RTCIceConnectionState = 'new';\n\n _pcId: number;\n _transceivers: { order: number, transceiver: RTCRtpTransceiver }[];\n _remoteStreams: Map<string, MediaStream>;\n _pendingTrackEvents: any[];\n\n constructor(configuration?: RTCConfiguration) {\n super();\n\n this._pcId = nextPeerConnectionId++;\n\n // Sanitize ICE servers.\n if (configuration) {\n const servers = configuration?.iceServers ?? [];\n\n for (const server of servers) {\n let urls = server.url || server.urls;\n\n delete server.url;\n delete server.urls;\n\n if (!urls) {\n continue;\n }\n\n if (!Array.isArray(urls)) {\n urls = [ urls ];\n }\n\n // Native WebRTC does case sensitive parsing.\n server.urls = urls.map(url => url.toLowerCase());\n }\n\n // Filter out bogus servers.\n configuration.iceServers = servers.filter(s => s.urls);\n }\n\n if (!WebRTCModule.peerConnectionInit(configuration, this._pcId)) {\n throw new Error('Failed to initialize PeerConnection, check the native logs!');\n }\n\n this._transceivers = [];\n this._remoteStreams = new Map();\n this._pendingTrackEvents = [];\n\n this._registerEvents();\n\n log.debug(`${this._pcId} ctor`);\n }\n\n async createOffer(options?:RTCOfferOptions) {\n log.debug(`${this._pcId} createOffer`);\n\n const {\n sdpInfo,\n newTransceivers,\n transceiversInfo\n } = await WebRTCModule.peerConnectionCreateOffer(this._pcId, RTCUtil.normalizeOfferOptions(options));\n\n log.debug(`${this._pcId} createOffer OK`);\n\n newTransceivers?.forEach(t => {\n const { transceiverOrder, transceiver } = t;\n const newSender = new RTCRtpSender({ ...transceiver.sender, track: null });\n const remoteTrack\n = transceiver.receiver.track ? new MediaStreamTrack(transceiver.receiver.track) : null;\n const newReceiver = new RTCRtpReceiver({ ...transceiver.receiver, track: remoteTrack });\n const newTransceiver = new RTCRtpTransceiver({\n ...transceiver,\n sender: newSender,\n receiver: newReceiver,\n });\n\n this._insertTransceiverSorted(transceiverOrder, newTransceiver);\n });\n\n this._updateTransceivers(transceiversInfo);\n\n return sdpInfo;\n }\n\n async createAnswer() {\n log.debug(`${this._pcId} createAnswer`);\n\n const {\n sdpInfo,\n transceiversInfo\n } = await WebRTCModule.peerConnectionCreateAnswer(this._pcId, {});\n\n this._updateTransceivers(transceiversInfo);\n\n return sdpInfo;\n }\n\n setConfiguration(configuration): void {\n WebRTCModule.peerConnectionSetConfiguration(configuration, this._pcId);\n }\n\n async setLocalDescription(sessionDescription?: RTCSessionDescription | RTCSessionDescriptionInit): Promise<void> {\n log.debug(`${this._pcId} setLocalDescription`);\n\n let desc;\n\n if (sessionDescription) {\n desc = {\n type: sessionDescription.type,\n sdp: sessionDescription.sdp ?? ''\n };\n\n if (!RTCUtil.isSdpTypeValid(desc.type)) {\n throw new Error(`Invalid session description: invalid type: ${desc.type}`);\n }\n } else {\n desc = null;\n }\n\n const {\n sdpInfo,\n transceiversInfo\n } = await WebRTCModule.peerConnectionSetLocalDescription(this._pcId, desc);\n\n if (sdpInfo.type && sdpInfo.sdp) {\n this.localDescription = new RTCSessionDescription(sdpInfo);\n } else {\n this.localDescription = null;\n }\n\n this._updateTransceivers(transceiversInfo, /* removeStopped */ desc?.type === 'answer');\n\n log.debug(`${this._pcId} setLocalDescription OK`);\n }\n\n async setRemoteDescription(sessionDescription: RTCSessionDescription | RTCSessionDescriptionInit): Promise<void> {\n log.debug(`${this._pcId} setRemoteDescription`);\n\n if (!sessionDescription) {\n return Promise.reject(new Error('No session description provided'));\n }\n\n const desc = {\n type: sessionDescription.type,\n sdp: sessionDescription.sdp ?? ''\n };\n\n if (!RTCUtil.isSdpTypeValid(desc.type ?? '')) {\n throw new Error(`Invalid session description: invalid type: ${desc.type}`);\n }\n\n const {\n sdpInfo,\n newTransceivers,\n transceiversInfo\n } = await WebRTCModule.peerConnectionSetRemoteDescription(this._pcId, desc);\n\n if (sdpInfo.type && sdpInfo.sdp) {\n this.remoteDescription = new RTCSessionDescription(sdpInfo);\n } else {\n this.remoteDescription = null;\n }\n\n newTransceivers?.forEach(t => {\n const { transceiverOrder, transceiver } = t;\n const newSender = new RTCRtpSender({ ...transceiver.sender, track: null });\n const remoteTrack\n = transceiver.receiver.track ? new MediaStreamTrack(transceiver.receiver.track) : null;\n const newReceiver = new RTCRtpReceiver({ ...transceiver.receiver, track: remoteTrack });\n const newTransceiver = new RTCRtpTransceiver({\n ...transceiver,\n sender: newSender,\n receiver: newReceiver,\n });\n\n this._insertTransceiverSorted(transceiverOrder, newTransceiver);\n });\n\n this._updateTransceivers(transceiversInfo, /* removeStopped */ desc.type === 'answer');\n\n // Fire track events. They must fire before sRD resolves.\n const pendingTrackEvents = this._pendingTrackEvents;\n\n this._pendingTrackEvents = [];\n\n for (const ev of pendingTrackEvents) {\n const [ transceiver ] = this\n .getTransceivers()\n .filter(t => t.receiver.id === ev.receiver.id);\n\n // We need to fire this event for an existing track sometimes, like\n // when the transceiver direction (on the sending side) switches from\n // sendrecv to recvonly and then back.\n\n // @ts-ignore\n const track: MediaStreamTrack = transceiver.receiver.track;\n\n transceiver._mid = ev.transceiver.mid;\n transceiver._currentDirection = ev.transceiver.currentDirection;\n transceiver._direction = ev.transceiver.direction;\n\n // Get the stream object from the event. Create if necessary.\n const streams: MediaStream[] = ev.streams.map(streamInfo => {\n // Here we are making sure that we don't create stream objects that already exist\n // So that event listeners do get the same object if it has been created before.\n if (!this._remoteStreams.has(streamInfo.streamId)) {\n const stream = new MediaStream({\n streamId: streamInfo.streamId,\n streamReactTag: streamInfo.streamReactTag,\n tracks: []\n });\n\n this._remoteStreams.set(streamInfo.streamId, stream);\n }\n\n const stream = this._remoteStreams.get(streamInfo.streamId);\n\n if (!stream?._tracks.includes(track)) {\n stream?._tracks.push(track);\n }\n\n return stream;\n });\n\n const eventData = {\n streams,\n transceiver,\n track,\n receiver: transceiver.receiver\n };\n\n\n this.dispatchEvent(new RTCTrackEvent('track', eventData));\n\n streams.forEach(stream => {\n stream.dispatchEvent(new MediaStreamTrackEvent('addtrack', { track }));\n });\n\n // Dispatch an unmute event for the track.\n track._setMutedInternal(false);\n }\n\n log.debug(`${this._pcId} setRemoteDescription OK`);\n }\n\n async addIceCandidate(candidate): Promise<void> {\n log.debug(`${this._pcId} addIceCandidate`);\n\n if (!candidate || !candidate.candidate) {\n // XXX end-of candidates is not implemented: https://bugs.chromium.org/p/webrtc/issues/detail?id=9218\n return;\n }\n\n if ((candidate.sdpMLineIndex === null ||\n candidate.sdpMLineIndex === undefined) &&\n (candidate.sdpMid === null ||\n candidate.sdpMid === undefined)\n ) {\n throw new TypeError('`sdpMLineIndex` and `sdpMid` must not be both null or undefined');\n }\n\n const newSdp = await WebRTCModule.peerConnectionAddICECandidate(\n this._pcId,\n RTCUtil.deepClone(candidate)\n );\n\n this.remoteDescription = new RTCSessionDescription(newSdp);\n }\n\n /**\n * @brief Adds a new track to the {@link RTCPeerConnection},\n * and indicates that it is contained in the specified {@link MediaStream}s.\n * This method has to be synchronous as the W3C API expects a track to be returned\n * @param {MediaStreamTrack} track The track to be added\n * @param {...MediaStream} streams One or more {@link MediaStream}s the track needs to be added to\n * https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack\n */\n addTrack(track: MediaStreamTrack, ...streams: MediaStream[]): RTCRtpSender {\n log.debug(`${this._pcId} addTrack`);\n\n if (this.connectionState === 'closed') {\n throw new Error('Peer Connection is closed');\n }\n\n if (this._trackExists(track)) {\n throw new Error('Track already exists in a sender');\n }\n\n const streamIds = streams.map(s => s.id);\n const result = WebRTCModule.peerConnectionAddTrack(this._pcId, track.id, { streamIds });\n\n if (result === null) {\n throw new Error('Could not add sender');\n }\n\n const { transceiverOrder, transceiver, sender } = result;\n\n // According to the W3C docs, the sender could have been reused, and\n // so we check if that is the case, and update accordingly.\n const [ existingSender ] = this\n .getSenders()\n .filter(s => s.id === sender.id);\n\n if (existingSender) {\n // Update sender\n existingSender._track = track;\n\n // Update the corresponding transceiver as well\n const [ existingTransceiver ] = this\n .getTransceivers()\n .filter(t => t.sender.id === existingSender.id);\n\n existingTransceiver._direction = transceiver.direction;\n existingTransceiver._currentDirection = transceiver.currentDirection;\n\n return existingSender;\n }\n\n // This is a new transceiver, should create a transceiver for it and add it\n const newSender = new RTCRtpSender({ ...transceiver.sender, track });\n const remoteTrack = transceiver.receiver.track ? new MediaStreamTrack(transceiver.receiver.track) : null;\n const newReceiver = new RTCRtpReceiver({ ...transceiver.receiver, track: remoteTrack });\n const newTransceiver = new RTCRtpTransceiver({\n ...transceiver,\n sender: newSender,\n receiver: newReceiver,\n });\n\n this._insertTransceiverSorted(transceiverOrder, newTransceiver);\n\n return newSender;\n }\n\n addTransceiver(source: 'audio' | 'video' | MediaStreamTrack, init): RTCRtpTransceiver {\n log.debug(`${this._pcId} addTransceiver`);\n\n let src = {};\n\n if (source === 'audio') {\n src = { type: 'audio' };\n } else if (source === 'video') {\n src = { type: 'video' };\n } else {\n src = { trackId: source.id };\n }\n\n // Extract the stream ids\n if (init && init.streams) {\n init.streamIds = init.streams.map(stream => stream.id);\n }\n\n const result = WebRTCModule.peerConnectionAddTransceiver(this._pcId, { ...src, init: { ...init } });\n\n if (result === null) {\n throw new Error('Transceiver could not be added');\n }\n\n const t = result.transceiver;\n let track: MediaStreamTrack | null = null;\n\n if (typeof source === 'string') {\n if (t.sender.track) {\n track = new MediaStreamTrack(t.sender.track);\n }\n } else {\n // 'source' is a MediaStreamTrack\n track = source;\n }\n\n const sender = new RTCRtpSender({ ...t.sender, track });\n const remoteTrack = t.receiver.track ? new MediaStreamTrack(t.receiver.track) : null;\n const receiver = new RTCRtpReceiver({ ...t.receiver, track: remoteTrack });\n const transceiver = new RTCRtpTransceiver({\n ...result.transceiver,\n sender,\n receiver\n });\n\n this._insertTransceiverSorted(result.transceiverOrder, transceiver);\n\n return transceiver;\n }\n\n removeTrack(sender: RTCRtpSender) {\n log.debug(`${this._pcId} removeTrack`);\n\n if (this._pcId !== sender._peerConnectionId) {\n throw new Error('Sender does not belong to this peer connection');\n }\n\n if (this.connectionState === 'closed') {\n throw new Error('Peer Connection is closed');\n }\n\n const existingSender = this\n .getSenders()\n .find(s => s === sender);\n\n if (!existingSender) {\n throw new Error('Sender does not exist');\n }\n\n if (existingSender.track === null) {\n return;\n }\n\n // Blocking!\n WebRTCModule.peerConnectionRemoveTrack(this._pcId, sender.id);\n\n existingSender._track = null;\n\n const [ existingTransceiver ] = this\n .getTransceivers()\n .filter(t => t.sender.id === existingSender.id);\n\n existingTransceiver._direction = existingTransceiver.direction === 'sendrecv' ? 'recvonly' : 'inactive';\n }\n\n async getStats(selector?: MediaStreamTrack) {\n log.debug(`${this._pcId} getStats`);\n\n if (!selector) {\n const data = await WebRTCModule.peerConnectionGetStats(this._pcId);\n\n /**\n * On both Android and iOS it is faster to construct a single\n * JSON string representing the Map of StatsReports and have it\n * pass through the React Native bridge rather than the Map of\n * StatsReports. While the implementations do try to be faster in\n * general, the stress is on being faster to pass through the React\n * Native bridge which is a bottleneck that tends to be visible in\n * the UI when there is congestion involving UI-related passing.\n */\n return new Map(JSON.parse(data));\n } else {\n const senders = this.getSenders().filter(s => s.track === selector);\n const receivers = this.getReceivers().filter(r => r.track === selector);\n const matches = senders.length + receivers.length;\n\n if (matches === 0) {\n throw new Error('Invalid selector: could not find matching sender / receiver');\n } else if (matches > 1) {\n throw new Error('Invalid selector: multiple matching senders / receivers');\n } else {\n const sr = senders[0] || receivers[0];\n\n return sr.getStats();\n }\n }\n }\n\n getTransceivers(): RTCRtpTransceiver[] {\n return this._transceivers.map(e => e.transceiver);\n }\n\n getSenders(): RTCRtpSender[] {\n return this._transceivers.filter(e => !e.transceiver.stopped).map(e => e.transceiver.sender);\n }\n\n getReceivers(): RTCRtpReceiver[] {\n return this._transceivers.filter(e => !e.transceiver.stopped).map(e => e.transceiver.receiver);\n }\n\n close(): void {\n log.debug(`${this._pcId} close`);\n\n if (this.connectionState === 'closed') {\n return;\n }\n\n WebRTCModule.peerConnectionClose(this._pcId);\n\n // Mark transceivers as stopped.\n this._transceivers.forEach(({ transceiver })=> {\n transceiver._setStopped();\n });\n }\n\n restartIce(): void {\n WebRTCModule.peerConnectionRestartIce(this._pcId);\n }\n\n _registerEvents(): void {\n addListener(this, 'peerConnectionOnRenegotiationNeeded', (ev: any) => {\n if (ev.pcId !== this._pcId) {\n return;\n }\n\n this.dispatchEvent(new Event('negotiationneeded'));\n });\n\n addListener(this, 'peerConnectionIceConnectionChanged', (ev: any) => {\n if (ev.pcId !== this._pcId) {\n return;\n }\n\n this.iceConnectionState = ev.iceConnectionState;\n\n this.dispatchEvent(new Event('iceconnectionstatechange'));\n });\n\n addListener(this, 'peerConnectionStateChanged', (ev: any) => {\n if (ev.pcId !== this._pcId) {\n return;\n }\n\n this.connectionState = ev.connectionState;\n\n this.dispatchEvent(new Event('connectionstatechange'));\n\n if (ev.connectionState === 'closed') {\n // This PeerConnection is done, clean up.\n removeListener(this);\n\n WebRTCModule.peerConnectionDispose(this._pcId);\n }\n });\n\n addListener(this, 'peerConnectionSignalingStateChanged', (ev: any) => {\n if (ev.pcId !== this._pcId) {\n return;\n }\n\n this.signalingState = ev.signalingState;\n\n this.dispatchEvent(new Event('signalingstatechange'));\n });\n\n // Consider moving away from this event: https://github.com/WebKit/WebKit/pull/3953\n addListener(this, 'peerConnectionOnTrack', (ev: any) => {\n if (ev.pcId !== this._pcId) {\n return;\n }\n\n log.debug(`${this._pcId} ontrack`);\n\n // NOTE: We need to make sure the track event fires right before sRD completes,\n // so we queue them up here and dispatch the events when sRD fires, but before completing it.\n // In the future we should probably implement out own logic and drop this event altogether.\n this._pendingTrackEvents.push(ev);\n });\n\n addListener(this, 'peerConnectionOnRemoveTrack', (ev: any) => {\n if (ev.pcId !== this._pcId) {\n return;\n }\n\n log.debug(`${this._pcId} onremovetrack ${ev.receiverId}`);\n\n const receiver = this.getReceivers().find(r => r.id === ev.receiverId);\n const track = receiver?.track;\n\n if (receiver && track) {\n // As per the spec:\n // - Remove the track from any media streams that were previously passed to the `track` event.\n // https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-removetrack,\n // - Mark the track as muted:\n // https://w3c.github.io/webrtc-pc/#process-remote-track-removal\n for (const stream of this._remoteStreams.values()) {\n if (stream._tracks.includes(track)) {\n const trackIdx = stream._tracks.indexOf(track);\n\n log.debug(`${this._pcId} removetrack ${track.id}`);\n\n stream._tracks.splice(trackIdx, 1);\n\n stream.dispatchEvent(new MediaStreamTrackEvent('removetrack', { track }));\n\n // Dispatch a mute event for the track.\n track._setMutedInternal(true);\n }\n }\n }\n });\n\n addListener(this, 'peerConnectionGotICECandidate', (ev: any) => {\n if (ev.pcId !== this._pcId) {\n return;\n }\n\n const sdpInfo = ev.sdp;\n\n // Can happen when doing a rollback.\n if (sdpInfo.type && sdpInfo.sdp) {\n this.localDescription = new RTCSessionDescription(sdpInfo);\n } else {\n this.localDescription = null;\n }\n\n const candidate = new RTCIceCandidate(ev.candidate);\n\n this.dispatchEvent(new RTCIceCandidateEvent('icecandidate', { candidate }));\n });\n\n addListener(this, 'peerConnectionIceGatheringChanged', (ev: any) => {\n if (ev.pcId !== this._pcId) {\n return;\n }\n\n this.iceGatheringState = ev.iceGatheringState;\n\n if (this.iceGatheringState === 'complete') {\n const sdpInfo = ev.sdp;\n\n // Can happen when doing a rollback.\n if (sdpInfo.type && sdpInfo.sdp) {\n this.localDescription = new RTCSessionDescription(sdpInfo);\n } else {\n this.localDescription = null;\n }\n\n this.dispatchEvent(new RTCIceCandidateEvent('icecandidate', { candidate: null }));\n }\n\n this.dispatchEvent(new Event('icegatheringstatechange'));\n });\n\n addListener(this, 'peerConnectionDidOpenDataChannel', (ev: any) => {\n if (ev.pcId !== this._pcId) {\n return;\n }\n\n const channel = new RTCDataChannel(ev.dataChannel);\n\n this.dispatchEvent(new RTCDataChannelEvent('datachannel', { channel }));\n\n // Send 'open' event. Native doesn't update the state since it's already\n // set at this point.\n channel.dispatchEvent(new RTCDataChannelEvent('open', { channel }));\n });\n\n addListener(this, 'mediaStreamTrackMuteChanged', (ev: any) => {\n if (ev.pcId !== this._pcId) {\n return;\n }\n\n const [\n track\n ] = this.getReceivers().map(r => r.track).filter(t => t?.id === ev.trackId);\n\n if (track) {\n track._setMutedInternal(ev.muted);\n }\n });\n }\n\n /**\n * Creates a new RTCDataChannel object with the given label. The\n * RTCDataChannelInit dictionary can be used to configure properties of the\n * underlying channel such as data reliability.\n *\n * @param {string} label - the value with which the label attribute of the new\n * instance is to be initialized\n * @param {RTCDataChannelInit} dataChannelDict - an optional dictionary of\n * values with which to initialize corresponding attributes of the new\n * instance such as id\n */\n createDataChannel(label: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel {\n if (arguments.length === 0) {\n throw new TypeError('1 argument required, but 0 present');\n }\n\n if (dataChannelDict && 'id' in dataChannelDict) {\n const id = dataChannelDict.id;\n\n if (typeof id !== 'number') {\n throw new TypeError('DataChannel id must be a number: ' + id);\n }\n }\n\n const channelInfo = WebRTCModule.createDataChannel(this._pcId, String(label), dataChannelDict);\n\n if (channelInfo === null) {\n throw new TypeError('Failed to create new DataChannel');\n }\n\n return new RTCDataChannel(channelInfo);\n }\n\n /**\n * Check whether a media stream track exists already in a sender.\n * See https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-addtrack for more information\n */\n _trackExists(track: MediaStreamTrack): boolean {\n const [ sender ] = this\n .getSenders()\n .filter(\n sender => sender.track?.id === track.id\n );\n\n return sender? true : false;\n }\n\n /**\n * Updates transceivers after offer/answer updates if necessary.\n */\n _updateTransceivers(transceiverUpdates, removeStopped = false) {\n for (const update of transceiverUpdates) {\n const [ transceiver ] = this\n .getTransceivers()\n .filter(t => t.sender.id === update.transceiverId);\n\n if (!transceiver) {\n continue;\n }\n\n if (update.currentDirection) {\n transceiver._currentDirection = update.currentDirection;\n }\n\n transceiver._mid = update.mid;\n transceiver._stopped = Boolean(update.isStopped);\n transceiver._sender._rtpParameters = new RTCRtpSendParameters(update.senderRtpParameters);\n transceiver._receiver._rtpParameters = new RTCRtpReceiveParameters(update.receiverRtpParameters);\n }\n\n if (removeStopped) {\n const stopped = this.getTransceivers().filter(t => t.stopped);\n const newTransceivers = this._transceivers.filter(t => !stopped.includes(t.transceiver));\n\n this._transceivers = newTransceivers;\n }\n }\n\n /**\n * Inserts transceiver into the transceiver array in the order they are created (timestamp).\n * @param order an index that refers to when it it was created relatively.\n * @param transceiver the transceiver object to be inserted.\n */\n _insertTransceiverSorted(order: number, transceiver: RTCRtpTransceiver) {\n this._transceivers.push({ order, transceiver });\n this._transceivers.sort((a, b) => a.order - b.order);\n }\n}\n\n/**\n * Define the `onxxx` event handlers.\n */\nconst proto = RTCPeerConnection.prototype;\n\ndefineEventAttribute(proto, 'connectionstatechange');\ndefineEventAttribute(proto, 'icecandidate');\ndefineEventAttribute(proto, 'icecandidateerror');\ndefineEventAttribute(proto, 'iceconnectionstatechange');\ndefineEventAttribute(proto, 'icegatheringstatechange');\ndefineEventAttribute(proto, 'negotiationneeded');\ndefineEventAttribute(proto, 'signalingstatechange');\ndefineEventAttribute(proto, 'datachannel');\ndefineEventAttribute(proto, 'track');\ndefineEventAttribute(proto, 'error');\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["RTCRtcpParameters","constructor","init","_defineProperty","cname","reducedSize","Object","freeze","toJSON","exports","default"],"sources":["RTCRtcpParameters.ts"],"sourcesContent":["export interface RTCRtcpParametersInit {\r\n cname: string;\r\n reducedSize: boolean;\r\n}\r\n\r\nexport default class RTCRtcpParameters {\r\n readonly cname: string;\r\n readonly reducedSize: boolean;\r\n\r\n constructor(init: RTCRtcpParametersInit) {\r\n this.cname = init.cname;\r\n this.reducedSize = init.reducedSize;\r\n\r\n Object.freeze(this);\r\n }\r\n\r\n toJSON(): RTCRtcpParametersInit {\r\n return {\r\n cname: this.cname,\r\n reducedSize: this.reducedSize\r\n };\r\n }\r\n}\r\n"],"mappings":";;;;;;;AAKe,MAAMA,iBAAiB,CAAC;EAInCC,WAAWA,CAACC,IAA2B,EAAE;IAAAC,eAAA;IAAAA,eAAA;IACrC,IAAI,CAACC,KAAK,GAAGF,IAAI,CAACE,KAAK;IACvB,IAAI,CAACC,WAAW,GAAGH,IAAI,CAACG,WAAW;IAEnCC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACvB;EAEAC,MAAMA,CAAA,EAA0B;IAC5B,OAAO;MACHJ,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBC,WAAW,EAAE,IAAI,CAACA;IACtB,CAAC;EACL;AACJ;AAACI,OAAA,CAAAC,OAAA,GAAAV,iBAAA"}
1
+ {"version":3,"names":["RTCRtcpParameters","constructor","init","_defineProperty","cname","reducedSize","Object","freeze","toJSON","exports","default"],"sources":["RTCRtcpParameters.ts"],"sourcesContent":["export interface RTCRtcpParametersInit {\n cname: string;\n reducedSize: boolean;\n}\n\nexport default class RTCRtcpParameters {\n readonly cname: string;\n readonly reducedSize: boolean;\n\n constructor(init: RTCRtcpParametersInit) {\n this.cname = init.cname;\n this.reducedSize = init.reducedSize;\n\n Object.freeze(this);\n }\n\n toJSON(): RTCRtcpParametersInit {\n return {\n cname: this.cname,\n reducedSize: this.reducedSize\n };\n }\n}\n"],"mappings":";;;;;;;AAKe,MAAMA,iBAAiB,CAAC;EAInCC,WAAWA,CAACC,IAA2B,EAAE;IAAAC,eAAA;IAAAA,eAAA;IACrC,IAAI,CAACC,KAAK,GAAGF,IAAI,CAACE,KAAK;IACvB,IAAI,CAACC,WAAW,GAAGH,IAAI,CAACG,WAAW;IAEnCC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACvB;EAEAC,MAAMA,CAAA,EAA0B;IAC5B,OAAO;MACHJ,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBC,WAAW,EAAE,IAAI,CAACA;IACtB,CAAC;EACL;AACJ;AAACI,OAAA,CAAAC,OAAA,GAAAV,iBAAA"}
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
- /**
9
- * @brief represents codec capabilities for senders and receivers.
8
+ /**
9
+ * @brief represents codec capabilities for senders and receivers.
10
10
  */
11
11
  class RTCRtpCapabilities {
12
12
  constructor(codecs) {
@@ -1 +1 @@
1
- {"version":3,"names":["RTCRtpCapabilities","constructor","codecs","_defineProperty","_codecs","Object","freeze","exports","default"],"sources":["RTCRtpCapabilities.ts"],"sourcesContent":["import RTCRtpCodecCapability from './RTCRtpCodecCapability';\r\n\r\n/**\r\n * @brief represents codec capabilities for senders and receivers.\r\n */\r\nexport default class RTCRtpCapabilities {\r\n _codecs: RTCRtpCodecCapability[] = [];\r\n constructor(codecs: RTCRtpCodecCapability[]) {\r\n this._codecs = codecs;\r\n Object.freeze(this);\r\n }\r\n\r\n get codecs() {\r\n return this._codecs;\r\n }\r\n}\r\n"],"mappings":";;;;;;;AAEA;AACA;AACA;AACe,MAAMA,kBAAkB,CAAC;EAEpCC,WAAWA,CAACC,MAA+B,EAAE;IAAAC,eAAA,kBADV,EAAE;IAEjC,IAAI,CAACC,OAAO,GAAGF,MAAM;IACrBG,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACvB;EAEA,IAAIJ,MAAMA,CAAA,EAAG;IACT,OAAO,IAAI,CAACE,OAAO;EACvB;AACJ;AAACG,OAAA,CAAAC,OAAA,GAAAR,kBAAA"}
1
+ {"version":3,"names":["RTCRtpCapabilities","constructor","codecs","_defineProperty","_codecs","Object","freeze","exports","default"],"sources":["RTCRtpCapabilities.ts"],"sourcesContent":["import RTCRtpCodecCapability from './RTCRtpCodecCapability';\n\n/**\n * @brief represents codec capabilities for senders and receivers.\n */\nexport default class RTCRtpCapabilities {\n _codecs: RTCRtpCodecCapability[] = [];\n constructor(codecs: RTCRtpCodecCapability[]) {\n this._codecs = codecs;\n Object.freeze(this);\n }\n\n get codecs() {\n return this._codecs;\n }\n}\n"],"mappings":";;;;;;;AAEA;AACA;AACA;AACe,MAAMA,kBAAkB,CAAC;EAEpCC,WAAWA,CAACC,MAA+B,EAAE;IAAAC,eAAA,kBADV,EAAE;IAEjC,IAAI,CAACC,OAAO,GAAGF,MAAM;IACrBG,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACvB;EAEA,IAAIJ,MAAMA,CAAA,EAAG;IACT,OAAO,IAAI,CAACE,OAAO;EACvB;AACJ;AAACG,OAAA,CAAAC,OAAA,GAAAR,kBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["RTCRtpCodecCapability","constructor","init","_defineProperty","_mimeType","mimeType","Object","freeze","exports","default"],"sources":["RTCRtpCodecCapability.ts"],"sourcesContent":["\r\nexport default class RTCRtpCodecCapability {\r\n _mimeType: string;\r\n\r\n constructor(init: { mimeType: string }) {\r\n this._mimeType = init.mimeType;\r\n Object.freeze(this);\r\n }\r\n\r\n get mimeType() {\r\n return this._mimeType;\r\n }\r\n}"],"mappings":";;;;;;;AACe,MAAMA,qBAAqB,CAAC;EAGvCC,WAAWA,CAACC,IAA0B,EAAE;IAAAC,eAAA;IACpC,IAAI,CAACC,SAAS,GAAGF,IAAI,CAACG,QAAQ;IAC9BC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACvB;EAEA,IAAIF,QAAQA,CAAA,EAAG;IACX,OAAO,IAAI,CAACD,SAAS;EACzB;AACJ;AAACI,OAAA,CAAAC,OAAA,GAAAT,qBAAA"}
1
+ {"version":3,"names":["RTCRtpCodecCapability","constructor","init","_defineProperty","_mimeType","mimeType","Object","freeze","exports","default"],"sources":["RTCRtpCodecCapability.ts"],"sourcesContent":["\nexport default class RTCRtpCodecCapability {\n _mimeType: string;\n\n constructor(init: { mimeType: string }) {\n this._mimeType = init.mimeType;\n Object.freeze(this);\n }\n\n get mimeType() {\n return this._mimeType;\n }\n}"],"mappings":";;;;;;;AACe,MAAMA,qBAAqB,CAAC;EAGvCC,WAAWA,CAACC,IAA0B,EAAE;IAAAC,eAAA;IACpC,IAAI,CAACC,SAAS,GAAGF,IAAI,CAACG,QAAQ;IAC9BC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACvB;EAEA,IAAIF,QAAQA,CAAA,EAAG;IACX,OAAO,IAAI,CAACD,SAAS;EACzB;AACJ;AAACI,OAAA,CAAAC,OAAA,GAAAT,qBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["RTCRtpCodecParameters","constructor","init","_defineProperty","payloadType","clockRate","mimeType","channels","sdpFmtpLine","Object","freeze","toJSON","obj","exports","default"],"sources":["RTCRtpCodecParameters.ts"],"sourcesContent":["export interface RTCRtpCodecParametersInit {\r\n payloadType: number;\r\n clockRate: number;\r\n mimeType: string;\r\n channels?: number;\r\n sdpFmtpLine?: string;\r\n}\r\n\r\nexport default class RTCRtpCodecParameters {\r\n readonly payloadType: number;\r\n readonly clockRate: number;\r\n readonly mimeType: string;\r\n readonly channels: number | null;\r\n readonly sdpFmtpLine: string | null;\r\n\r\n constructor(init: RTCRtpCodecParametersInit) {\r\n this.payloadType = init.payloadType;\r\n this.clockRate = init.clockRate;\r\n this.mimeType = init.mimeType;\r\n\r\n this.channels = init.channels ? init.channels : null;\r\n this.sdpFmtpLine = init.sdpFmtpLine ? init.sdpFmtpLine : null;\r\n\r\n Object.freeze(this);\r\n }\r\n\r\n toJSON(): RTCRtpCodecParametersInit {\r\n const obj = {\r\n payloadType: this.payloadType,\r\n clockRate: this.clockRate,\r\n mimeType: this.mimeType\r\n };\r\n\r\n if (this.channels !== null) {\r\n obj['channels'] = this.channels;\r\n }\r\n\r\n if (this.sdpFmtpLine !== null) {\r\n obj['sdpFmtpLine'] = this.sdpFmtpLine;\r\n }\r\n\r\n return obj;\r\n }\r\n}\r\n"],"mappings":";;;;;;;AAQe,MAAMA,qBAAqB,CAAC;EAOvCC,WAAWA,CAACC,IAA+B,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACzC,IAAI,CAACC,WAAW,GAAGF,IAAI,CAACE,WAAW;IACnC,IAAI,CAACC,SAAS,GAAGH,IAAI,CAACG,SAAS;IAC/B,IAAI,CAACC,QAAQ,GAAGJ,IAAI,CAACI,QAAQ;IAE7B,IAAI,CAACC,QAAQ,GAAGL,IAAI,CAACK,QAAQ,GAAGL,IAAI,CAACK,QAAQ,GAAG,IAAI;IACpD,IAAI,CAACC,WAAW,GAAGN,IAAI,CAACM,WAAW,GAAGN,IAAI,CAACM,WAAW,GAAG,IAAI;IAE7DC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACvB;EAEAC,MAAMA,CAAA,EAA8B;IAChC,MAAMC,GAAG,GAAG;MACRR,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,QAAQ,EAAE,IAAI,CAACA;IACnB,CAAC;IAED,IAAI,IAAI,CAACC,QAAQ,KAAK,IAAI,EAAE;MACxBK,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAACL,QAAQ;IACnC;IAEA,IAAI,IAAI,CAACC,WAAW,KAAK,IAAI,EAAE;MAC3BI,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAACJ,WAAW;IACzC;IAEA,OAAOI,GAAG;EACd;AACJ;AAACC,OAAA,CAAAC,OAAA,GAAAd,qBAAA"}
1
+ {"version":3,"names":["RTCRtpCodecParameters","constructor","init","_defineProperty","payloadType","clockRate","mimeType","channels","sdpFmtpLine","Object","freeze","toJSON","obj","exports","default"],"sources":["RTCRtpCodecParameters.ts"],"sourcesContent":["export interface RTCRtpCodecParametersInit {\n payloadType: number;\n clockRate: number;\n mimeType: string;\n channels?: number;\n sdpFmtpLine?: string;\n}\n\nexport default class RTCRtpCodecParameters {\n readonly payloadType: number;\n readonly clockRate: number;\n readonly mimeType: string;\n readonly channels: number | null;\n readonly sdpFmtpLine: string | null;\n\n constructor(init: RTCRtpCodecParametersInit) {\n this.payloadType = init.payloadType;\n this.clockRate = init.clockRate;\n this.mimeType = init.mimeType;\n\n this.channels = init.channels ? init.channels : null;\n this.sdpFmtpLine = init.sdpFmtpLine ? init.sdpFmtpLine : null;\n\n Object.freeze(this);\n }\n\n toJSON(): RTCRtpCodecParametersInit {\n const obj = {\n payloadType: this.payloadType,\n clockRate: this.clockRate,\n mimeType: this.mimeType\n };\n\n if (this.channels !== null) {\n obj['channels'] = this.channels;\n }\n\n if (this.sdpFmtpLine !== null) {\n obj['sdpFmtpLine'] = this.sdpFmtpLine;\n }\n\n return obj;\n }\n}\n"],"mappings":";;;;;;;AAQe,MAAMA,qBAAqB,CAAC;EAOvCC,WAAWA,CAACC,IAA+B,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACzC,IAAI,CAACC,WAAW,GAAGF,IAAI,CAACE,WAAW;IACnC,IAAI,CAACC,SAAS,GAAGH,IAAI,CAACG,SAAS;IAC/B,IAAI,CAACC,QAAQ,GAAGJ,IAAI,CAACI,QAAQ;IAE7B,IAAI,CAACC,QAAQ,GAAGL,IAAI,CAACK,QAAQ,GAAGL,IAAI,CAACK,QAAQ,GAAG,IAAI;IACpD,IAAI,CAACC,WAAW,GAAGN,IAAI,CAACM,WAAW,GAAGN,IAAI,CAACM,WAAW,GAAG,IAAI;IAE7DC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACvB;EAEAC,MAAMA,CAAA,EAA8B;IAChC,MAAMC,GAAG,GAAG;MACRR,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,QAAQ,EAAE,IAAI,CAACA;IACnB,CAAC;IAED,IAAI,IAAI,CAACC,QAAQ,KAAK,IAAI,EAAE;MACxBK,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAACL,QAAQ;IACnC;IAEA,IAAI,IAAI,CAACC,WAAW,KAAK,IAAI,EAAE;MAC3BI,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAACJ,WAAW;IACzC;IAEA,OAAOI,GAAG;EACd;AACJ;AAACC,OAAA,CAAAC,OAAA,GAAAd,qBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["RTCRtpEncodingParameters","constructor","init","_init$rid","_init$maxBitrate","_init$maxFramerate","_init$scaleResolution","_defineProperty","active","_rid","rid","_maxBitrate","maxBitrate","_maxFramerate","maxFramerate","_scaleResolutionDownBy","scaleResolutionDownBy","framerate","bitrate","resolutionScale","toJSON","obj","Boolean","exports","default"],"sources":["RTCRtpEncodingParameters.ts"],"sourcesContent":["export interface RTCRtpEncodingParametersInit {\r\n active: boolean,\r\n rid?: string;\r\n maxFramerate?: number;\r\n maxBitrate?: number;\r\n scaleResolutionDownBy?: number;\r\n}\r\n\r\nexport default class RTCRtpEncodingParameters {\r\n active: boolean;\r\n _rid: string | null;\r\n _maxFramerate: number | null;\r\n _maxBitrate: number | null;\r\n _scaleResolutionDownBy: number | null;\r\n\r\n constructor(init: RTCRtpEncodingParametersInit) {\r\n this.active = init.active;\r\n this._rid = init.rid ?? null;\r\n this._maxBitrate = init.maxBitrate ?? null;\r\n this._maxFramerate = init.maxFramerate ?? null;\r\n this._scaleResolutionDownBy = init.scaleResolutionDownBy ?? null;\r\n }\r\n\r\n get rid() {\r\n return this._rid;\r\n }\r\n\r\n get maxFramerate() {\r\n return this._maxFramerate;\r\n }\r\n\r\n set maxFramerate(framerate) {\r\n // eslint-disable-next-line eqeqeq\r\n if (framerate != null && framerate > 0) {\r\n this._maxFramerate = framerate;\r\n } else {\r\n this._maxFramerate = null;\r\n }\r\n }\r\n\r\n get maxBitrate() {\r\n return this._maxBitrate;\r\n }\r\n\r\n set maxBitrate(bitrate) {\r\n // eslint-disable-next-line eqeqeq\r\n if (bitrate != null && bitrate >= 0) {\r\n this._maxBitrate = bitrate;\r\n } else {\r\n this._maxBitrate = null;\r\n }\r\n }\r\n\r\n get scaleResolutionDownBy() {\r\n return this._scaleResolutionDownBy;\r\n }\r\n\r\n set scaleResolutionDownBy(resolutionScale) {\r\n // eslint-disable-next-line eqeqeq\r\n if (resolutionScale != null && resolutionScale >= 1) {\r\n this._scaleResolutionDownBy = resolutionScale;\r\n } else {\r\n this._scaleResolutionDownBy = null;\r\n }\r\n }\r\n\r\n toJSON(): RTCRtpEncodingParametersInit {\r\n const obj = {\r\n active: Boolean(this.active),\r\n };\r\n\r\n if (this._rid !== null) {\r\n obj['rid'] = this._rid;\r\n }\r\n\r\n if (this._maxBitrate !== null) {\r\n obj['maxBitrate'] = this._maxBitrate;\r\n }\r\n\r\n if (this._maxFramerate !== null) {\r\n obj['maxFramerate'] = this._maxFramerate;\r\n }\r\n\r\n if (this._scaleResolutionDownBy !== null) {\r\n obj['scaleResolutionDownBy'] = this._scaleResolutionDownBy;\r\n }\r\n\r\n return obj;\r\n }\r\n}\r\n"],"mappings":";;;;;;;AAQe,MAAMA,wBAAwB,CAAC;EAO1CC,WAAWA,CAACC,IAAkC,EAAE;IAAA,IAAAC,SAAA,EAAAC,gBAAA,EAAAC,kBAAA,EAAAC,qBAAA;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAC5C,IAAI,CAACC,MAAM,GAAGN,IAAI,CAACM,MAAM;IACzB,IAAI,CAACC,IAAI,IAAAN,SAAA,GAAGD,IAAI,CAACQ,GAAG,cAAAP,SAAA,cAAAA,SAAA,GAAI,IAAI;IAC5B,IAAI,CAACQ,WAAW,IAAAP,gBAAA,GAAGF,IAAI,CAACU,UAAU,cAAAR,gBAAA,cAAAA,gBAAA,GAAI,IAAI;IAC1C,IAAI,CAACS,aAAa,IAAAR,kBAAA,GAAGH,IAAI,CAACY,YAAY,cAAAT,kBAAA,cAAAA,kBAAA,GAAI,IAAI;IAC9C,IAAI,CAACU,sBAAsB,IAAAT,qBAAA,GAAGJ,IAAI,CAACc,qBAAqB,cAAAV,qBAAA,cAAAA,qBAAA,GAAI,IAAI;EACpE;EAEA,IAAII,GAAGA,CAAA,EAAG;IACN,OAAO,IAAI,CAACD,IAAI;EACpB;EAEA,IAAIK,YAAYA,CAAA,EAAG;IACf,OAAO,IAAI,CAACD,aAAa;EAC7B;EAEA,IAAIC,YAAYA,CAACG,SAAS,EAAE;IACxB;IACA,IAAIA,SAAS,IAAI,IAAI,IAAIA,SAAS,GAAG,CAAC,EAAE;MACpC,IAAI,CAACJ,aAAa,GAAGI,SAAS;IAClC,CAAC,MAAM;MACH,IAAI,CAACJ,aAAa,GAAG,IAAI;IAC7B;EACJ;EAEA,IAAID,UAAUA,CAAA,EAAG;IACb,OAAO,IAAI,CAACD,WAAW;EAC3B;EAEA,IAAIC,UAAUA,CAACM,OAAO,EAAE;IACpB;IACA,IAAIA,OAAO,IAAI,IAAI,IAAIA,OAAO,IAAI,CAAC,EAAE;MACjC,IAAI,CAACP,WAAW,GAAGO,OAAO;IAC9B,CAAC,MAAM;MACH,IAAI,CAACP,WAAW,GAAG,IAAI;IAC3B;EACJ;EAEA,IAAIK,qBAAqBA,CAAA,EAAG;IACxB,OAAO,IAAI,CAACD,sBAAsB;EACtC;EAEA,IAAIC,qBAAqBA,CAACG,eAAe,EAAE;IACvC;IACA,IAAIA,eAAe,IAAI,IAAI,IAAIA,eAAe,IAAI,CAAC,EAAE;MACjD,IAAI,CAACJ,sBAAsB,GAAGI,eAAe;IACjD,CAAC,MAAM;MACH,IAAI,CAACJ,sBAAsB,GAAG,IAAI;IACtC;EACJ;EAEAK,MAAMA,CAAA,EAAiC;IACnC,MAAMC,GAAG,GAAG;MACRb,MAAM,EAAEc,OAAO,CAAC,IAAI,CAACd,MAAM;IAC/B,CAAC;IAED,IAAI,IAAI,CAACC,IAAI,KAAK,IAAI,EAAE;MACpBY,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAACZ,IAAI;IAC1B;IAEA,IAAI,IAAI,CAACE,WAAW,KAAK,IAAI,EAAE;MAC3BU,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAACV,WAAW;IACxC;IAEA,IAAI,IAAI,CAACE,aAAa,KAAK,IAAI,EAAE;MAC7BQ,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,CAACR,aAAa;IAC5C;IAEA,IAAI,IAAI,CAACE,sBAAsB,KAAK,IAAI,EAAE;MACtCM,GAAG,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAACN,sBAAsB;IAC9D;IAEA,OAAOM,GAAG;EACd;AACJ;AAACE,OAAA,CAAAC,OAAA,GAAAxB,wBAAA"}
1
+ {"version":3,"names":["RTCRtpEncodingParameters","constructor","init","_init$rid","_init$maxBitrate","_init$maxFramerate","_init$scaleResolution","_defineProperty","active","_rid","rid","_maxBitrate","maxBitrate","_maxFramerate","maxFramerate","_scaleResolutionDownBy","scaleResolutionDownBy","framerate","bitrate","resolutionScale","toJSON","obj","Boolean","exports","default"],"sources":["RTCRtpEncodingParameters.ts"],"sourcesContent":["export interface RTCRtpEncodingParametersInit {\n active: boolean,\n rid?: string;\n maxFramerate?: number;\n maxBitrate?: number;\n scaleResolutionDownBy?: number;\n}\n\nexport default class RTCRtpEncodingParameters {\n active: boolean;\n _rid: string | null;\n _maxFramerate: number | null;\n _maxBitrate: number | null;\n _scaleResolutionDownBy: number | null;\n\n constructor(init: RTCRtpEncodingParametersInit) {\n this.active = init.active;\n this._rid = init.rid ?? null;\n this._maxBitrate = init.maxBitrate ?? null;\n this._maxFramerate = init.maxFramerate ?? null;\n this._scaleResolutionDownBy = init.scaleResolutionDownBy ?? null;\n }\n\n get rid() {\n return this._rid;\n }\n\n get maxFramerate() {\n return this._maxFramerate;\n }\n\n set maxFramerate(framerate) {\n // eslint-disable-next-line eqeqeq\n if (framerate != null && framerate > 0) {\n this._maxFramerate = framerate;\n } else {\n this._maxFramerate = null;\n }\n }\n\n get maxBitrate() {\n return this._maxBitrate;\n }\n\n set maxBitrate(bitrate) {\n // eslint-disable-next-line eqeqeq\n if (bitrate != null && bitrate >= 0) {\n this._maxBitrate = bitrate;\n } else {\n this._maxBitrate = null;\n }\n }\n\n get scaleResolutionDownBy() {\n return this._scaleResolutionDownBy;\n }\n\n set scaleResolutionDownBy(resolutionScale) {\n // eslint-disable-next-line eqeqeq\n if (resolutionScale != null && resolutionScale >= 1) {\n this._scaleResolutionDownBy = resolutionScale;\n } else {\n this._scaleResolutionDownBy = null;\n }\n }\n\n toJSON(): RTCRtpEncodingParametersInit {\n const obj = {\n active: Boolean(this.active),\n };\n\n if (this._rid !== null) {\n obj['rid'] = this._rid;\n }\n\n if (this._maxBitrate !== null) {\n obj['maxBitrate'] = this._maxBitrate;\n }\n\n if (this._maxFramerate !== null) {\n obj['maxFramerate'] = this._maxFramerate;\n }\n\n if (this._scaleResolutionDownBy !== null) {\n obj['scaleResolutionDownBy'] = this._scaleResolutionDownBy;\n }\n\n return obj;\n }\n}\n"],"mappings":";;;;;;;AAQe,MAAMA,wBAAwB,CAAC;EAO1CC,WAAWA,CAACC,IAAkC,EAAE;IAAA,IAAAC,SAAA,EAAAC,gBAAA,EAAAC,kBAAA,EAAAC,qBAAA;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAC5C,IAAI,CAACC,MAAM,GAAGN,IAAI,CAACM,MAAM;IACzB,IAAI,CAACC,IAAI,IAAAN,SAAA,GAAGD,IAAI,CAACQ,GAAG,cAAAP,SAAA,cAAAA,SAAA,GAAI,IAAI;IAC5B,IAAI,CAACQ,WAAW,IAAAP,gBAAA,GAAGF,IAAI,CAACU,UAAU,cAAAR,gBAAA,cAAAA,gBAAA,GAAI,IAAI;IAC1C,IAAI,CAACS,aAAa,IAAAR,kBAAA,GAAGH,IAAI,CAACY,YAAY,cAAAT,kBAAA,cAAAA,kBAAA,GAAI,IAAI;IAC9C,IAAI,CAACU,sBAAsB,IAAAT,qBAAA,GAAGJ,IAAI,CAACc,qBAAqB,cAAAV,qBAAA,cAAAA,qBAAA,GAAI,IAAI;EACpE;EAEA,IAAII,GAAGA,CAAA,EAAG;IACN,OAAO,IAAI,CAACD,IAAI;EACpB;EAEA,IAAIK,YAAYA,CAAA,EAAG;IACf,OAAO,IAAI,CAACD,aAAa;EAC7B;EAEA,IAAIC,YAAYA,CAACG,SAAS,EAAE;IACxB;IACA,IAAIA,SAAS,IAAI,IAAI,IAAIA,SAAS,GAAG,CAAC,EAAE;MACpC,IAAI,CAACJ,aAAa,GAAGI,SAAS;IAClC,CAAC,MAAM;MACH,IAAI,CAACJ,aAAa,GAAG,IAAI;IAC7B;EACJ;EAEA,IAAID,UAAUA,CAAA,EAAG;IACb,OAAO,IAAI,CAACD,WAAW;EAC3B;EAEA,IAAIC,UAAUA,CAACM,OAAO,EAAE;IACpB;IACA,IAAIA,OAAO,IAAI,IAAI,IAAIA,OAAO,IAAI,CAAC,EAAE;MACjC,IAAI,CAACP,WAAW,GAAGO,OAAO;IAC9B,CAAC,MAAM;MACH,IAAI,CAACP,WAAW,GAAG,IAAI;IAC3B;EACJ;EAEA,IAAIK,qBAAqBA,CAAA,EAAG;IACxB,OAAO,IAAI,CAACD,sBAAsB;EACtC;EAEA,IAAIC,qBAAqBA,CAACG,eAAe,EAAE;IACvC;IACA,IAAIA,eAAe,IAAI,IAAI,IAAIA,eAAe,IAAI,CAAC,EAAE;MACjD,IAAI,CAACJ,sBAAsB,GAAGI,eAAe;IACjD,CAAC,MAAM;MACH,IAAI,CAACJ,sBAAsB,GAAG,IAAI;IACtC;EACJ;EAEAK,MAAMA,CAAA,EAAiC;IACnC,MAAMC,GAAG,GAAG;MACRb,MAAM,EAAEc,OAAO,CAAC,IAAI,CAACd,MAAM;IAC/B,CAAC;IAED,IAAI,IAAI,CAACC,IAAI,KAAK,IAAI,EAAE;MACpBY,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAACZ,IAAI;IAC1B;IAEA,IAAI,IAAI,CAACE,WAAW,KAAK,IAAI,EAAE;MAC3BU,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAACV,WAAW;IACxC;IAEA,IAAI,IAAI,CAACE,aAAa,KAAK,IAAI,EAAE;MAC7BQ,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,CAACR,aAAa;IAC5C;IAEA,IAAI,IAAI,CAACE,sBAAsB,KAAK,IAAI,EAAE;MACtCM,GAAG,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAACN,sBAAsB;IAC9D;IAEA,OAAOM,GAAG;EACd;AACJ;AAACE,OAAA,CAAAC,OAAA,GAAAxB,wBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["RTCRtpHeaderExtension","constructor","init","_defineProperty","id","uri","encrypted","Object","freeze","toJSON","exports","default"],"sources":["RTCRtpHeaderExtension.ts"],"sourcesContent":["export interface RTCRtpHeaderExtensionInit {\r\n id: number;\r\n uri: string;\r\n encrypted: boolean;\r\n}\r\n\r\nexport default class RTCRtpHeaderExtension {\r\n readonly id: number;\r\n readonly uri: string;\r\n readonly encrypted: boolean;\r\n\r\n constructor(init: RTCRtpHeaderExtensionInit) {\r\n this.id = init.id;\r\n this.uri = init.uri;\r\n this.encrypted = init.encrypted;\r\n\r\n Object.freeze(this);\r\n }\r\n\r\n toJSON(): RTCRtpHeaderExtensionInit {\r\n return {\r\n id: this.id,\r\n uri: this.uri,\r\n encrypted: this.encrypted\r\n };\r\n }\r\n}\r\n"],"mappings":";;;;;;;AAMe,MAAMA,qBAAqB,CAAC;EAKvCC,WAAWA,CAACC,IAA+B,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACzC,IAAI,CAACC,EAAE,GAAGF,IAAI,CAACE,EAAE;IACjB,IAAI,CAACC,GAAG,GAAGH,IAAI,CAACG,GAAG;IACnB,IAAI,CAACC,SAAS,GAAGJ,IAAI,CAACI,SAAS;IAE/BC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACvB;EAEAC,MAAMA,CAAA,EAA8B;IAChC,OAAO;MACHL,EAAE,EAAE,IAAI,CAACA,EAAE;MACXC,GAAG,EAAE,IAAI,CAACA,GAAG;MACbC,SAAS,EAAE,IAAI,CAACA;IACpB,CAAC;EACL;AACJ;AAACI,OAAA,CAAAC,OAAA,GAAAX,qBAAA"}
1
+ {"version":3,"names":["RTCRtpHeaderExtension","constructor","init","_defineProperty","id","uri","encrypted","Object","freeze","toJSON","exports","default"],"sources":["RTCRtpHeaderExtension.ts"],"sourcesContent":["export interface RTCRtpHeaderExtensionInit {\n id: number;\n uri: string;\n encrypted: boolean;\n}\n\nexport default class RTCRtpHeaderExtension {\n readonly id: number;\n readonly uri: string;\n readonly encrypted: boolean;\n\n constructor(init: RTCRtpHeaderExtensionInit) {\n this.id = init.id;\n this.uri = init.uri;\n this.encrypted = init.encrypted;\n\n Object.freeze(this);\n }\n\n toJSON(): RTCRtpHeaderExtensionInit {\n return {\n id: this.id,\n uri: this.uri,\n encrypted: this.encrypted\n };\n }\n}\n"],"mappings":";;;;;;;AAMe,MAAMA,qBAAqB,CAAC;EAKvCC,WAAWA,CAACC,IAA+B,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACzC,IAAI,CAACC,EAAE,GAAGF,IAAI,CAACE,EAAE;IACjB,IAAI,CAACC,GAAG,GAAGH,IAAI,CAACG,GAAG;IACnB,IAAI,CAACC,SAAS,GAAGJ,IAAI,CAACI,SAAS;IAE/BC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;EACvB;EAEAC,MAAMA,CAAA,EAA8B;IAChC,OAAO;MACHL,EAAE,EAAE,IAAI,CAACA,EAAE;MACXC,GAAG,EAAE,IAAI,CAACA,GAAG;MACbC,SAAS,EAAE,IAAI,CAACA;IACpB,CAAC;EACL;AACJ;AAACI,OAAA,CAAAC,OAAA,GAAAX,qBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["_RTCRtcpParameters","_interopRequireDefault","require","_RTCRtpCodecParameters","_RTCRtpHeaderExtension","_RTCUtil","obj","__esModule","default","_defineProperty","key","value","Object","defineProperty","enumerable","configurable","writable","RTCRtpParameters","constructor","init","codec","codecs","push","RTCRtpCodecParameters","ext","headerExtensions","RTCRtpHeaderExtension","rtcp","RTCRtcpParameters","toJSON","map","c","deepClone","he","exports"],"sources":["RTCRtpParameters.ts"],"sourcesContent":["import RTCRtcpParameters, { RTCRtcpParametersInit } from './RTCRtcpParameters';\r\nimport RTCRtpCodecParameters, { RTCRtpCodecParametersInit } from './RTCRtpCodecParameters';\r\nimport RTCRtpHeaderExtension, { RTCRtpHeaderExtensionInit } from './RTCRtpHeaderExtension';\r\nimport { deepClone } from './RTCUtil';\r\n\r\n\r\nexport interface RTCRtpParametersInit {\r\n codecs: RTCRtpCodecParametersInit[],\r\n headerExtensions: RTCRtpHeaderExtensionInit[],\r\n rtcp: RTCRtcpParametersInit\r\n}\r\n\r\nexport default class RTCRtpParameters {\r\n codecs: (RTCRtpCodecParameters | RTCRtpCodecParametersInit)[] = [];\r\n readonly headerExtensions: RTCRtpHeaderExtension[] = [];\r\n readonly rtcp: RTCRtcpParameters;\r\n\r\n constructor(init: RTCRtpParametersInit) {\r\n for (const codec of init.codecs) {\r\n this.codecs.push(new RTCRtpCodecParameters(codec));\r\n }\r\n\r\n for (const ext of init.headerExtensions) {\r\n this.headerExtensions.push(new RTCRtpHeaderExtension(ext));\r\n }\r\n\r\n this.rtcp = new RTCRtcpParameters(init.rtcp);\r\n }\r\n\r\n toJSON() {\r\n return {\r\n codecs: this.codecs.map(c => deepClone(c)),\r\n headerExtensions: this.headerExtensions.map(he => deepClone(he)),\r\n rtcp: deepClone(this.rtcp)\r\n };\r\n }\r\n}\r\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,sBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAAsC,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,QAAAD,GAAA,IAAAJ,GAAA,IAAAM,MAAA,CAAAC,cAAA,CAAAP,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAG,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAV,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AASvB,MAAMW,gBAAgB,CAAC;EAKlCC,WAAWA,CAACC,IAA0B,EAAE;IAAAV,eAAA,iBAJwB,EAAE;IAAAA,eAAA,2BACb,EAAE;IAAAA,eAAA;IAInD,KAAK,MAAMW,KAAK,IAAID,IAAI,CAACE,MAAM,EAAE;MAC7B,IAAI,CAACA,MAAM,CAACC,IAAI,CAAC,IAAIC,8BAAqB,CAACH,KAAK,CAAC,CAAC;IACtD;IAEA,KAAK,MAAMI,GAAG,IAAIL,IAAI,CAACM,gBAAgB,EAAE;MACrC,IAAI,CAACA,gBAAgB,CAACH,IAAI,CAAC,IAAII,8BAAqB,CAACF,GAAG,CAAC,CAAC;IAC9D;IAEA,IAAI,CAACG,IAAI,GAAG,IAAIC,0BAAiB,CAACT,IAAI,CAACQ,IAAI,CAAC;EAChD;EAEAE,MAAMA,CAAA,EAAG;IACL,OAAO;MACHR,MAAM,EAAE,IAAI,CAACA,MAAM,CAACS,GAAG,CAACC,CAAC,IAAI,IAAAC,kBAAS,EAACD,CAAC,CAAC,CAAC;MAC1CN,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,CAACK,GAAG,CAACG,EAAE,IAAI,IAAAD,kBAAS,EAACC,EAAE,CAAC,CAAC;MAChEN,IAAI,EAAE,IAAAK,kBAAS,EAAC,IAAI,CAACL,IAAI;IAC7B,CAAC;EACL;AACJ;AAACO,OAAA,CAAA1B,OAAA,GAAAS,gBAAA"}
1
+ {"version":3,"names":["_RTCRtcpParameters","_interopRequireDefault","require","_RTCRtpCodecParameters","_RTCRtpHeaderExtension","_RTCUtil","obj","__esModule","default","_defineProperty","key","value","Object","defineProperty","enumerable","configurable","writable","RTCRtpParameters","constructor","init","codec","codecs","push","RTCRtpCodecParameters","ext","headerExtensions","RTCRtpHeaderExtension","rtcp","RTCRtcpParameters","toJSON","map","c","deepClone","he","exports"],"sources":["RTCRtpParameters.ts"],"sourcesContent":["import RTCRtcpParameters, { RTCRtcpParametersInit } from './RTCRtcpParameters';\nimport RTCRtpCodecParameters, { RTCRtpCodecParametersInit } from './RTCRtpCodecParameters';\nimport RTCRtpHeaderExtension, { RTCRtpHeaderExtensionInit } from './RTCRtpHeaderExtension';\nimport { deepClone } from './RTCUtil';\n\n\nexport interface RTCRtpParametersInit {\n codecs: RTCRtpCodecParametersInit[],\n headerExtensions: RTCRtpHeaderExtensionInit[],\n rtcp: RTCRtcpParametersInit\n}\n\nexport default class RTCRtpParameters {\n codecs: (RTCRtpCodecParameters | RTCRtpCodecParametersInit)[] = [];\n readonly headerExtensions: RTCRtpHeaderExtension[] = [];\n readonly rtcp: RTCRtcpParameters;\n\n constructor(init: RTCRtpParametersInit) {\n for (const codec of init.codecs) {\n this.codecs.push(new RTCRtpCodecParameters(codec));\n }\n\n for (const ext of init.headerExtensions) {\n this.headerExtensions.push(new RTCRtpHeaderExtension(ext));\n }\n\n this.rtcp = new RTCRtcpParameters(init.rtcp);\n }\n\n toJSON() {\n return {\n codecs: this.codecs.map(c => deepClone(c)),\n headerExtensions: this.headerExtensions.map(he => deepClone(he)),\n rtcp: deepClone(this.rtcp)\n };\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,sBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAAsC,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,QAAAD,GAAA,IAAAJ,GAAA,IAAAM,MAAA,CAAAC,cAAA,CAAAP,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAG,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAV,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AASvB,MAAMW,gBAAgB,CAAC;EAKlCC,WAAWA,CAACC,IAA0B,EAAE;IAAAV,eAAA,iBAJwB,EAAE;IAAAA,eAAA,2BACb,EAAE;IAAAA,eAAA;IAInD,KAAK,MAAMW,KAAK,IAAID,IAAI,CAACE,MAAM,EAAE;MAC7B,IAAI,CAACA,MAAM,CAACC,IAAI,CAAC,IAAIC,8BAAqB,CAACH,KAAK,CAAC,CAAC;IACtD;IAEA,KAAK,MAAMI,GAAG,IAAIL,IAAI,CAACM,gBAAgB,EAAE;MACrC,IAAI,CAACA,gBAAgB,CAACH,IAAI,CAAC,IAAII,8BAAqB,CAACF,GAAG,CAAC,CAAC;IAC9D;IAEA,IAAI,CAACG,IAAI,GAAG,IAAIC,0BAAiB,CAACT,IAAI,CAACQ,IAAI,CAAC;EAChD;EAEAE,MAAMA,CAAA,EAAG;IACL,OAAO;MACHR,MAAM,EAAE,IAAI,CAACA,MAAM,CAACS,GAAG,CAACC,CAAC,IAAI,IAAAC,kBAAS,EAACD,CAAC,CAAC,CAAC;MAC1CN,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,CAACK,GAAG,CAACG,EAAE,IAAI,IAAAD,kBAAS,EAACC,EAAE,CAAC,CAAC;MAChEN,IAAI,EAAE,IAAAK,kBAAS,EAAC,IAAI,CAACL,IAAI;IAC7B,CAAC;EACL;AACJ;AAACO,OAAA,CAAA1B,OAAA,GAAAS,gBAAA"}
@@ -1 +1 @@
1
- {"version":3,"names":["_RTCRtpParameters","_interopRequireDefault","require","obj","__esModule","default","RTCRtpReceiveParameters","RTCRtpParameters","constructor","init","exports"],"sources":["RTCRtpReceiveParameters.ts"],"sourcesContent":["import RTCRtpParameters, { RTCRtpParametersInit } from './RTCRtpParameters';\r\n\r\nexport default class RTCRtpReceiveParameters extends RTCRtpParameters {\r\n constructor(init: RTCRtpParametersInit) {\r\n super(init);\r\n }\r\n}\r\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA4E,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE7D,MAAMG,uBAAuB,SAASC,yBAAgB,CAAC;EAClEC,WAAWA,CAACC,IAA0B,EAAE;IACpC,KAAK,CAACA,IAAI,CAAC;EACf;AACJ;AAACC,OAAA,CAAAL,OAAA,GAAAC,uBAAA"}
1
+ {"version":3,"names":["_RTCRtpParameters","_interopRequireDefault","require","obj","__esModule","default","RTCRtpReceiveParameters","RTCRtpParameters","constructor","init","exports"],"sources":["RTCRtpReceiveParameters.ts"],"sourcesContent":["import RTCRtpParameters, { RTCRtpParametersInit } from './RTCRtpParameters';\n\nexport default class RTCRtpReceiveParameters extends RTCRtpParameters {\n constructor(init: RTCRtpParametersInit) {\n super(init);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA4E,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE7D,MAAMG,uBAAuB,SAASC,yBAAgB,CAAC;EAClEC,WAAWA,CAACC,IAA0B,EAAE;IACpC,KAAK,CAACA,IAAI,CAAC;EACf;AACJ;AAACC,OAAA,CAAAL,OAAA,GAAAC,uBAAA"}
@@ -29,13 +29,13 @@ class RTCRtpReceiver {
29
29
  }
30
30
  getStats() {
31
31
  return WebRTCModule.receiverGetStats(this._peerConnectionId, this._id).then(data =>
32
- /* On both Android and iOS it is faster to construct a single
33
- JSON string representing the Map of StatsReports and have it
34
- pass through the React Native bridge rather than the Map of
35
- StatsReports. While the implementations do try to be faster in
36
- general, the stress is on being faster to pass through the React
37
- Native bridge which is a bottleneck that tends to be visible in
38
- the UI when there is congestion involving UI-related passing.
32
+ /* On both Android and iOS it is faster to construct a single
33
+ JSON string representing the Map of StatsReports and have it
34
+ pass through the React Native bridge rather than the Map of
35
+ StatsReports. While the implementations do try to be faster in
36
+ general, the stress is on being faster to pass through the React
37
+ Native bridge which is a bottleneck that tends to be visible in
38
+ the UI when there is congestion involving UI-related passing.
39
39
  */
40
40
  new Map(JSON.parse(data)));
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_RTCRtpReceiveParameters","_interopRequireDefault","obj","__esModule","default","_defineProperty","key","value","Object","defineProperty","enumerable","configurable","writable","WebRTCModule","NativeModules","RTCRtpReceiver","constructor","info","_id","id","_peerConnectionId","peerConnectionId","_rtpParameters","RTCRtpReceiveParameters","rtpParameters","track","_track","getCapabilities","kind","receiverGetCapabilities","getStats","receiverGetStats","then","data","Map","JSON","parse","getParameters","exports"],"sources":["RTCRtpReceiver.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\r\n\r\nimport MediaStreamTrack from './MediaStreamTrack';\r\nimport RTCRtpCapabilities from './RTCRtpCapabilities';\r\nimport { RTCRtpParametersInit } from './RTCRtpParameters';\r\nimport RTCRtpReceiveParameters from './RTCRtpReceiveParameters';\r\n\r\nconst { WebRTCModule } = NativeModules;\r\n\r\nexport default class RTCRtpReceiver {\r\n _id: string;\r\n _peerConnectionId: number;\r\n _track: MediaStreamTrack | null = null;\r\n _rtpParameters: RTCRtpReceiveParameters;\r\n\r\n constructor(info: {\r\n peerConnectionId: number,\r\n id: string,\r\n track?: MediaStreamTrack,\r\n rtpParameters: RTCRtpParametersInit\r\n }) {\r\n this._id = info.id;\r\n this._peerConnectionId = info.peerConnectionId;\r\n this._rtpParameters = new RTCRtpReceiveParameters(info.rtpParameters);\r\n\r\n if (info.track) {\r\n this._track = info.track;\r\n }\r\n }\r\n\r\n static getCapabilities(kind: 'audio' | 'video'): RTCRtpCapabilities {\r\n return WebRTCModule.receiverGetCapabilities(kind);\r\n }\r\n\r\n getStats() {\r\n return WebRTCModule.receiverGetStats(this._peerConnectionId, this._id).then(data =>\r\n /* On both Android and iOS it is faster to construct a single\r\n JSON string representing the Map of StatsReports and have it\r\n pass through the React Native bridge rather than the Map of\r\n StatsReports. While the implementations do try to be faster in\r\n general, the stress is on being faster to pass through the React\r\n Native bridge which is a bottleneck that tends to be visible in\r\n the UI when there is congestion involving UI-related passing.\r\n */\r\n new Map(JSON.parse(data))\r\n );\r\n }\r\n\r\n getParameters(): RTCRtpReceiveParameters {\r\n return this._rtpParameters;\r\n }\r\n\r\n get id() {\r\n return this._id;\r\n }\r\n\r\n get track() {\r\n return this._track;\r\n }\r\n}\r\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAKA,IAAAC,wBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAgE,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,QAAAD,GAAA,IAAAJ,GAAA,IAAAM,MAAA,CAAAC,cAAA,CAAAP,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAG,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAV,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAEhE,MAAM;EAAEW;AAAa,CAAC,GAAGC,0BAAa;AAEvB,MAAMC,cAAc,CAAC;EAMhCC,WAAWA,CAACC,IAKX,EAAE;IAAAZ,eAAA;IAAAA,eAAA;IAAAA,eAAA,iBAR+B,IAAI;IAAAA,eAAA;IASlC,IAAI,CAACa,GAAG,GAAGD,IAAI,CAACE,EAAE;IAClB,IAAI,CAACC,iBAAiB,GAAGH,IAAI,CAACI,gBAAgB;IAC9C,IAAI,CAACC,cAAc,GAAG,IAAIC,gCAAuB,CAACN,IAAI,CAACO,aAAa,CAAC;IAErE,IAAIP,IAAI,CAACQ,KAAK,EAAE;MACZ,IAAI,CAACC,MAAM,GAAGT,IAAI,CAACQ,KAAK;IAC5B;EACJ;EAEA,OAAOE,eAAeA,CAACC,IAAuB,EAAsB;IAChE,OAAOf,YAAY,CAACgB,uBAAuB,CAACD,IAAI,CAAC;EACrD;EAEAE,QAAQA,CAAA,EAAG;IACP,OAAOjB,YAAY,CAACkB,gBAAgB,CAAC,IAAI,CAACX,iBAAiB,EAAE,IAAI,CAACF,GAAG,CAAC,CAACc,IAAI,CAACC,IAAI;IAC5E;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;IACY,IAAIC,GAAG,CAACC,IAAI,CAACC,KAAK,CAACH,IAAI,CAAC,CAC5B,CAAC;EACL;EAEAI,aAAaA,CAAA,EAA4B;IACrC,OAAO,IAAI,CAACf,cAAc;EAC9B;EAEA,IAAIH,EAAEA,CAAA,EAAG;IACL,OAAO,IAAI,CAACD,GAAG;EACnB;EAEA,IAAIO,KAAKA,CAAA,EAAG;IACR,OAAO,IAAI,CAACC,MAAM;EACtB;AACJ;AAACY,OAAA,CAAAlC,OAAA,GAAAW,cAAA"}
1
+ {"version":3,"names":["_reactNative","require","_RTCRtpReceiveParameters","_interopRequireDefault","obj","__esModule","default","_defineProperty","key","value","Object","defineProperty","enumerable","configurable","writable","WebRTCModule","NativeModules","RTCRtpReceiver","constructor","info","_id","id","_peerConnectionId","peerConnectionId","_rtpParameters","RTCRtpReceiveParameters","rtpParameters","track","_track","getCapabilities","kind","receiverGetCapabilities","getStats","receiverGetStats","then","data","Map","JSON","parse","getParameters","exports"],"sources":["RTCRtpReceiver.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\n\nimport MediaStreamTrack from './MediaStreamTrack';\nimport RTCRtpCapabilities from './RTCRtpCapabilities';\nimport { RTCRtpParametersInit } from './RTCRtpParameters';\nimport RTCRtpReceiveParameters from './RTCRtpReceiveParameters';\n\nconst { WebRTCModule } = NativeModules;\n\nexport default class RTCRtpReceiver {\n _id: string;\n _peerConnectionId: number;\n _track: MediaStreamTrack | null = null;\n _rtpParameters: RTCRtpReceiveParameters;\n\n constructor(info: {\n peerConnectionId: number,\n id: string,\n track?: MediaStreamTrack,\n rtpParameters: RTCRtpParametersInit\n }) {\n this._id = info.id;\n this._peerConnectionId = info.peerConnectionId;\n this._rtpParameters = new RTCRtpReceiveParameters(info.rtpParameters);\n\n if (info.track) {\n this._track = info.track;\n }\n }\n\n static getCapabilities(kind: 'audio' | 'video'): RTCRtpCapabilities {\n return WebRTCModule.receiverGetCapabilities(kind);\n }\n\n getStats() {\n return WebRTCModule.receiverGetStats(this._peerConnectionId, this._id).then(data =>\n /* On both Android and iOS it is faster to construct a single\n JSON string representing the Map of StatsReports and have it\n pass through the React Native bridge rather than the Map of\n StatsReports. While the implementations do try to be faster in\n general, the stress is on being faster to pass through the React\n Native bridge which is a bottleneck that tends to be visible in\n the UI when there is congestion involving UI-related passing.\n */\n new Map(JSON.parse(data))\n );\n }\n\n getParameters(): RTCRtpReceiveParameters {\n return this._rtpParameters;\n }\n\n get id() {\n return this._id;\n }\n\n get track() {\n return this._track;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAKA,IAAAC,wBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAgE,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,QAAAD,GAAA,IAAAJ,GAAA,IAAAM,MAAA,CAAAC,cAAA,CAAAP,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAG,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAV,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAEhE,MAAM;EAAEW;AAAa,CAAC,GAAGC,0BAAa;AAEvB,MAAMC,cAAc,CAAC;EAMhCC,WAAWA,CAACC,IAKX,EAAE;IAAAZ,eAAA;IAAAA,eAAA;IAAAA,eAAA,iBAR+B,IAAI;IAAAA,eAAA;IASlC,IAAI,CAACa,GAAG,GAAGD,IAAI,CAACE,EAAE;IAClB,IAAI,CAACC,iBAAiB,GAAGH,IAAI,CAACI,gBAAgB;IAC9C,IAAI,CAACC,cAAc,GAAG,IAAIC,gCAAuB,CAACN,IAAI,CAACO,aAAa,CAAC;IAErE,IAAIP,IAAI,CAACQ,KAAK,EAAE;MACZ,IAAI,CAACC,MAAM,GAAGT,IAAI,CAACQ,KAAK;IAC5B;EACJ;EAEA,OAAOE,eAAeA,CAACC,IAAuB,EAAsB;IAChE,OAAOf,YAAY,CAACgB,uBAAuB,CAACD,IAAI,CAAC;EACrD;EAEAE,QAAQA,CAAA,EAAG;IACP,OAAOjB,YAAY,CAACkB,gBAAgB,CAAC,IAAI,CAACX,iBAAiB,EAAE,IAAI,CAACF,GAAG,CAAC,CAACc,IAAI,CAACC,IAAI;IAC5E;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;IACY,IAAIC,GAAG,CAACC,IAAI,CAACC,KAAK,CAACH,IAAI,CAAC,CAC5B,CAAC;EACL;EAEAI,aAAaA,CAAA,EAA4B;IACrC,OAAO,IAAI,CAACf,cAAc;EAC9B;EAEA,IAAIH,EAAEA,CAAA,EAAG;IACL,OAAO,IAAI,CAACD,GAAG;EACnB;EAEA,IAAIO,KAAKA,CAAA,EAAG;IACR,OAAO,IAAI,CAACC,MAAM;EACtB;AACJ;AAACY,OAAA,CAAAlC,OAAA,GAAAW,cAAA"}
@@ -9,9 +9,9 @@ var _RTCRtpParameters = _interopRequireDefault(require("./RTCRtpParameters"));
9
9
  var _RTCUtil = require("./RTCUtil");
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
- /**
13
- * Class to convert degradation preference format. Native has a format such as
14
- * MAINTAIN_FRAMERATE whereas the web APIs expect maintain-framerate
12
+ /**
13
+ * Class to convert degradation preference format. Native has a format such as
14
+ * MAINTAIN_FRAMERATE whereas the web APIs expect maintain-framerate
15
15
  */
16
16
  class DegradationPreference {
17
17
  static fromNative(nativeFormat) {