@sbhjt-gr/react-native-webrtc 124.0.3 → 124.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.clang-format +11 -11
- package/.eslintignore +6 -6
- package/.nvmrc +1 -1
- package/ISSUE_TEMPLATE.md +40 -40
- package/LICENSE +22 -22
- package/README.md +103 -103
- package/android/build.gradle +37 -37
- package/android/consumer-rules.pro +3 -3
- package/android/src/main/AndroidManifest.xml +11 -11
- package/android/src/main/java/com/oney/WebRTCModule/AbstractVideoCaptureController.java +113 -113
- package/android/src/main/java/com/oney/WebRTCModule/CameraCaptureController.java +338 -338
- package/android/src/main/java/com/oney/WebRTCModule/CameraEventsHandler.java +49 -49
- package/android/src/main/java/com/oney/WebRTCModule/DataChannelWrapper.java +99 -99
- package/android/src/main/java/com/oney/WebRTCModule/DataPacketCryptorManager.java +62 -62
- package/android/src/main/java/com/oney/WebRTCModule/DisplayUtils.java +16 -16
- package/android/src/main/java/com/oney/WebRTCModule/EglUtils.java +66 -66
- package/android/src/main/java/com/oney/WebRTCModule/GetUserMediaImpl.java +539 -539
- package/android/src/main/java/com/oney/WebRTCModule/LibraryLoader.java +21 -21
- package/android/src/main/java/com/oney/WebRTCModule/MediaProjectionNotification.java +70 -70
- package/android/src/main/java/com/oney/WebRTCModule/MediaProjectionService.java +82 -82
- package/android/src/main/java/com/oney/WebRTCModule/PeerConnectionObserver.java +588 -588
- package/android/src/main/java/com/oney/WebRTCModule/RTCCryptoManager.java +493 -493
- package/android/src/main/java/com/oney/WebRTCModule/RTCVideoViewManager.java +98 -98
- package/android/src/main/java/com/oney/WebRTCModule/ReactBridgeUtil.java +35 -35
- package/android/src/main/java/com/oney/WebRTCModule/ScreenCaptureController.java +94 -94
- package/android/src/main/java/com/oney/WebRTCModule/SerializeUtils.java +342 -342
- package/android/src/main/java/com/oney/WebRTCModule/StringUtils.java +100 -100
- package/android/src/main/java/com/oney/WebRTCModule/ThreadUtils.java +41 -41
- package/android/src/main/java/com/oney/WebRTCModule/TrackCapturerEventsEmitter.java +34 -34
- package/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java +137 -137
- package/android/src/main/java/com/oney/WebRTCModule/WebRTCModule.java +1649 -1643
- package/android/src/main/java/com/oney/WebRTCModule/WebRTCModuleOptions.java +33 -33
- package/android/src/main/java/com/oney/WebRTCModule/WebRTCModulePackage.java +21 -21
- package/android/src/main/java/com/oney/WebRTCModule/WebRTCView.java +583 -583
- package/android/src/main/java/com/oney/WebRTCModule/palabra/PalabraClient.java +529 -501
- package/android/src/main/java/com/oney/WebRTCModule/palabra/PalabraConfig.java +17 -17
- package/android/src/main/java/com/oney/WebRTCModule/palabra/PalabraListener.java +7 -7
- package/android/src/main/java/com/oney/WebRTCModule/videoEffects/ProcessorProvider.java +38 -38
- package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoEffectProcessor.java +59 -59
- package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoFrameProcessor.java +19 -19
- package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoFrameProcessorFactoryInterface.java +12 -12
- package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/H264AndSoftwareVideoDecoderFactory.java +73 -73
- package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/H264AndSoftwareVideoEncoderFactory.java +73 -73
- package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/SoftwareVideoDecoderFactoryProxy.java +36 -36
- package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/SoftwareVideoEncoderFactoryProxy.java +36 -36
- package/android/src/main/java/org/webrtc/Camera1Helper.java +54 -54
- package/android/src/main/java/org/webrtc/Camera2Helper.java +52 -52
- package/android/src/main/res/values/strings.xml +5 -5
- package/android/src/main/res/values/styles.xml +8 -8
- package/ios/RCTWebRTC/CaptureController.h +18 -18
- package/ios/RCTWebRTC/CaptureController.m +28 -28
- package/ios/RCTWebRTC/CapturerEventsDelegate.h +12 -12
- package/ios/RCTWebRTC/DataChannelWrapper.h +27 -27
- package/ios/RCTWebRTC/DataChannelWrapper.m +42 -42
- package/ios/RCTWebRTC/I420Converter.h +22 -22
- package/ios/RCTWebRTC/I420Converter.m +164 -164
- package/ios/RCTWebRTC/PIPController.h +24 -24
- package/ios/RCTWebRTC/PIPController.m +234 -234
- package/ios/RCTWebRTC/PalabraAudioSink.h +13 -13
- package/ios/RCTWebRTC/PalabraAudioSink.m +18 -18
- package/ios/RCTWebRTC/PalabraClient.h +42 -36
- package/ios/RCTWebRTC/PalabraClient.m +680 -644
- package/ios/RCTWebRTC/RCTConvert+WebRTC.h +16 -16
- package/ios/RCTWebRTC/RCTConvert+WebRTC.m +206 -206
- package/ios/RCTWebRTC/RTCMediaStreamTrack+React.h +10 -10
- package/ios/RCTWebRTC/RTCMediaStreamTrack+React.m +16 -16
- package/ios/RCTWebRTC/RTCVideoViewManager.h +29 -29
- package/ios/RCTWebRTC/RTCVideoViewManager.m +411 -411
- package/ios/RCTWebRTC/SampleBufferVideoCallView.h +12 -12
- package/ios/RCTWebRTC/SampleBufferVideoCallView.m +178 -178
- package/ios/RCTWebRTC/ScreenCaptureController.h +20 -20
- package/ios/RCTWebRTC/ScreenCaptureController.m +82 -82
- package/ios/RCTWebRTC/ScreenCapturePickerViewManager.h +7 -7
- package/ios/RCTWebRTC/ScreenCapturePickerViewManager.m +59 -59
- package/ios/RCTWebRTC/ScreenCapturer.h +19 -19
- package/ios/RCTWebRTC/ScreenCapturer.m +263 -263
- package/ios/RCTWebRTC/SerializeUtils.h +28 -28
- package/ios/RCTWebRTC/SerializeUtils.m +314 -314
- package/ios/RCTWebRTC/SocketConnection.h +13 -13
- package/ios/RCTWebRTC/SocketConnection.m +137 -137
- package/ios/RCTWebRTC/TrackCapturerEventsEmitter.h +14 -14
- package/ios/RCTWebRTC/TrackCapturerEventsEmitter.m +36 -36
- package/ios/RCTWebRTC/VideoCaptureController.h +21 -21
- package/ios/RCTWebRTC/VideoCaptureController.m +328 -328
- package/ios/RCTWebRTC/WLVAudioDevice.h +12 -12
- package/ios/RCTWebRTC/WLVAudioDevice.m +137 -137
- package/ios/RCTWebRTC/WebRTCModule+Palabra.h +4 -4
- package/ios/RCTWebRTC/WebRTCModule+Palabra.m +92 -83
- package/ios/RCTWebRTC/WebRTCModule+Permissions.m +75 -75
- package/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m +20 -20
- package/ios/RCTWebRTC/WebRTCModule+RTCDataChannel.h +14 -14
- package/ios/RCTWebRTC/WebRTCModule+RTCDataChannel.m +165 -165
- package/ios/RCTWebRTC/WebRTCModule+RTCFrameCryptor.m +611 -611
- package/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.h +13 -13
- package/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.m +728 -728
- package/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.h +24 -24
- package/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.m +1004 -1004
- package/ios/RCTWebRTC/WebRTCModule+Transceivers.m +267 -267
- package/ios/RCTWebRTC/WebRTCModule+VideoTrackAdapter.h +12 -12
- package/ios/RCTWebRTC/WebRTCModule+VideoTrackAdapter.m +166 -166
- package/ios/RCTWebRTC/WebRTCModule.h +58 -58
- package/ios/RCTWebRTC/WebRTCModule.m +169 -169
- package/ios/RCTWebRTC/WebRTCModuleOptions.h +24 -24
- package/ios/RCTWebRTC/WebRTCModuleOptions.m +31 -31
- package/ios/RCTWebRTC/videoEffects/ProcessorProvider.h +9 -9
- package/ios/RCTWebRTC/videoEffects/ProcessorProvider.m +23 -23
- package/ios/RCTWebRTC/videoEffects/VideoEffectProcessor.h +13 -13
- package/ios/RCTWebRTC/videoEffects/VideoEffectProcessor.m +23 -23
- package/ios/RCTWebRTC/videoEffects/VideoFrameProcessor.h +8 -8
- package/ios/RCTWebRTC.xcodeproj/project.pbxproj +404 -404
- package/ios/RCTWebRTC.xcworkspace/contents.xcworkspacedata +10 -10
- package/lib/commonjs/Constraints.js.map +1 -1
- package/lib/commonjs/EventEmitter.js.map +1 -1
- package/lib/commonjs/Logger.js.map +1 -1
- package/lib/commonjs/MediaDevices.js +17 -17
- package/lib/commonjs/MediaDevices.js.map +1 -1
- package/lib/commonjs/MediaStream.js +19 -19
- package/lib/commonjs/MediaStream.js.map +1 -1
- package/lib/commonjs/MediaStreamError.js.map +1 -1
- package/lib/commonjs/MediaStreamErrorEvent.js.map +1 -1
- package/lib/commonjs/MediaStreamTrack.js +28 -28
- package/lib/commonjs/MediaStreamTrack.js.map +1 -1
- package/lib/commonjs/MediaStreamTrackEvent.js +6 -6
- package/lib/commonjs/MediaStreamTrackEvent.js.map +1 -1
- package/lib/commonjs/MessageEvent.js +7 -7
- package/lib/commonjs/MessageEvent.js.map +1 -1
- package/lib/commonjs/Permissions.js +28 -28
- package/lib/commonjs/Permissions.js.map +1 -1
- package/lib/commonjs/RTCAudioSession.js +4 -4
- package/lib/commonjs/RTCAudioSession.js.map +1 -1
- package/lib/commonjs/RTCDataChannel.js +2 -2
- package/lib/commonjs/RTCDataChannel.js.map +1 -1
- package/lib/commonjs/RTCDataChannelEvent.js +6 -6
- package/lib/commonjs/RTCDataChannelEvent.js.map +1 -1
- package/lib/commonjs/RTCDataPacketCryptor.js.map +1 -1
- package/lib/commonjs/RTCDataPacketCryptorFactory.js.map +1 -1
- package/lib/commonjs/RTCErrorEvent.js +3 -3
- package/lib/commonjs/RTCErrorEvent.js.map +1 -1
- package/lib/commonjs/RTCFrameCryptor.js +8 -8
- package/lib/commonjs/RTCFrameCryptor.js.map +1 -1
- package/lib/commonjs/RTCFrameCryptorFactory.js.map +1 -1
- package/lib/commonjs/RTCIceCandidate.js.map +1 -1
- package/lib/commonjs/RTCIceCandidateEvent.js +7 -7
- package/lib/commonjs/RTCIceCandidateEvent.js.map +1 -1
- package/lib/commonjs/RTCKeyProvider.js.map +1 -1
- package/lib/commonjs/RTCPIPView.js +2 -2
- package/lib/commonjs/RTCPIPView.js.map +1 -1
- package/lib/commonjs/RTCPIPView.web.js.map +1 -1
- package/lib/commonjs/RTCPeerConnection.js +36 -36
- package/lib/commonjs/RTCPeerConnection.js.map +1 -1
- package/lib/commonjs/RTCRtcpParameters.js.map +1 -1
- package/lib/commonjs/RTCRtpCapabilities.js +2 -2
- package/lib/commonjs/RTCRtpCapabilities.js.map +1 -1
- package/lib/commonjs/RTCRtpCodecCapability.js.map +1 -1
- package/lib/commonjs/RTCRtpCodecParameters.js.map +1 -1
- package/lib/commonjs/RTCRtpEncodingParameters.js.map +1 -1
- package/lib/commonjs/RTCRtpHeaderExtension.js.map +1 -1
- package/lib/commonjs/RTCRtpParameters.js.map +1 -1
- package/lib/commonjs/RTCRtpReceiveParameters.js.map +1 -1
- package/lib/commonjs/RTCRtpReceiver.js +7 -7
- package/lib/commonjs/RTCRtpReceiver.js.map +1 -1
- package/lib/commonjs/RTCRtpSendParameters.js +3 -3
- package/lib/commonjs/RTCRtpSendParameters.js.map +1 -1
- package/lib/commonjs/RTCRtpSender.js +7 -7
- package/lib/commonjs/RTCRtpSender.js.map +1 -1
- package/lib/commonjs/RTCRtpTransceiver.js.map +1 -1
- package/lib/commonjs/RTCSessionDescription.js.map +1 -1
- package/lib/commonjs/RTCTrackEvent.js +6 -6
- package/lib/commonjs/RTCTrackEvent.js.map +1 -1
- package/lib/commonjs/RTCUtil.js +28 -28
- package/lib/commonjs/RTCUtil.js.map +1 -1
- package/lib/commonjs/RTCView.js +5 -5
- package/lib/commonjs/RTCView.js.map +1 -1
- package/lib/commonjs/RTCView.web.js.map +1 -1
- package/lib/commonjs/ScreenCapturePickerView.js.map +1 -1
- package/lib/commonjs/ScreenCapturePickerView.web.js.map +1 -1
- package/lib/commonjs/getDisplayMedia.js.map +1 -1
- package/lib/commonjs/getUserMedia.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/webStream.js.map +1 -1
- package/lib/module/Constraints.js.map +1 -1
- package/lib/module/EventEmitter.js.map +1 -1
- package/lib/module/Logger.js.map +1 -1
- package/lib/module/MediaDevices.js +17 -17
- package/lib/module/MediaDevices.js.map +1 -1
- package/lib/module/MediaStream.js +19 -19
- package/lib/module/MediaStream.js.map +1 -1
- package/lib/module/MediaStreamError.js.map +1 -1
- package/lib/module/MediaStreamErrorEvent.js.map +1 -1
- package/lib/module/MediaStreamTrack.js +28 -28
- package/lib/module/MediaStreamTrack.js.map +1 -1
- package/lib/module/MediaStreamTrackEvent.js +6 -6
- package/lib/module/MediaStreamTrackEvent.js.map +1 -1
- package/lib/module/MessageEvent.js +7 -7
- package/lib/module/MessageEvent.js.map +1 -1
- package/lib/module/Permissions.js +28 -28
- package/lib/module/Permissions.js.map +1 -1
- package/lib/module/RTCAudioSession.js +4 -4
- package/lib/module/RTCAudioSession.js.map +1 -1
- package/lib/module/RTCDataChannel.js +2 -2
- package/lib/module/RTCDataChannel.js.map +1 -1
- package/lib/module/RTCDataChannelEvent.js +6 -6
- package/lib/module/RTCDataChannelEvent.js.map +1 -1
- package/lib/module/RTCDataPacketCryptor.js.map +1 -1
- package/lib/module/RTCDataPacketCryptorFactory.js.map +1 -1
- package/lib/module/RTCErrorEvent.js +3 -3
- package/lib/module/RTCErrorEvent.js.map +1 -1
- package/lib/module/RTCFrameCryptor.js +8 -8
- package/lib/module/RTCFrameCryptor.js.map +1 -1
- package/lib/module/RTCFrameCryptorFactory.js.map +1 -1
- package/lib/module/RTCIceCandidate.js.map +1 -1
- package/lib/module/RTCIceCandidateEvent.js +7 -7
- package/lib/module/RTCIceCandidateEvent.js.map +1 -1
- package/lib/module/RTCKeyProvider.js.map +1 -1
- package/lib/module/RTCPIPView.js +2 -2
- package/lib/module/RTCPIPView.js.map +1 -1
- package/lib/module/RTCPIPView.web.js.map +1 -1
- package/lib/module/RTCPeerConnection.js +36 -36
- package/lib/module/RTCPeerConnection.js.map +1 -1
- package/lib/module/RTCRtcpParameters.js.map +1 -1
- package/lib/module/RTCRtpCapabilities.js +2 -2
- package/lib/module/RTCRtpCapabilities.js.map +1 -1
- package/lib/module/RTCRtpCodecCapability.js.map +1 -1
- package/lib/module/RTCRtpCodecParameters.js.map +1 -1
- package/lib/module/RTCRtpEncodingParameters.js.map +1 -1
- package/lib/module/RTCRtpHeaderExtension.js.map +1 -1
- package/lib/module/RTCRtpParameters.js.map +1 -1
- package/lib/module/RTCRtpReceiveParameters.js.map +1 -1
- package/lib/module/RTCRtpReceiver.js +7 -7
- package/lib/module/RTCRtpReceiver.js.map +1 -1
- package/lib/module/RTCRtpSendParameters.js +3 -3
- package/lib/module/RTCRtpSendParameters.js.map +1 -1
- package/lib/module/RTCRtpSender.js +7 -7
- package/lib/module/RTCRtpSender.js.map +1 -1
- package/lib/module/RTCRtpTransceiver.js.map +1 -1
- package/lib/module/RTCSessionDescription.js.map +1 -1
- package/lib/module/RTCTrackEvent.js +6 -6
- package/lib/module/RTCTrackEvent.js.map +1 -1
- package/lib/module/RTCUtil.js +28 -28
- package/lib/module/RTCUtil.js.map +1 -1
- package/lib/module/RTCView.js +5 -5
- package/lib/module/RTCView.js.map +1 -1
- package/lib/module/RTCView.web.js.map +1 -1
- package/lib/module/ScreenCapturePickerView.js.map +1 -1
- package/lib/module/ScreenCapturePickerView.web.js.map +1 -1
- package/lib/module/getDisplayMedia.js.map +1 -1
- package/lib/module/getUserMedia.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/webStream.js.map +1 -1
- package/lib/typescript/Constraints.d.ts +19 -19
- package/lib/typescript/EventEmitter.d.ts +6 -6
- package/lib/typescript/Logger.d.ts +13 -13
- package/lib/typescript/MediaDevices.d.ts +30 -30
- package/lib/typescript/MediaStream.d.ts +48 -48
- package/lib/typescript/MediaStreamError.d.ts +6 -6
- package/lib/typescript/MediaStreamErrorEvent.d.ts +6 -6
- package/lib/typescript/MediaStreamTrack.d.ts +101 -101
- package/lib/typescript/MediaStreamTrackEvent.d.ts +19 -19
- package/lib/typescript/MessageEvent.d.ts +20 -20
- package/lib/typescript/Permissions.d.ts +55 -55
- package/lib/typescript/RTCAudioSession.d.ts +10 -10
- package/lib/typescript/RTCDataChannel.d.ts +43 -43
- package/lib/typescript/RTCDataChannelEvent.d.ts +19 -19
- package/lib/typescript/RTCDataPacketCryptor.d.ts +12 -12
- package/lib/typescript/RTCDataPacketCryptorFactory.d.ts +6 -6
- package/lib/typescript/RTCErrorEvent.d.ts +12 -12
- package/lib/typescript/RTCFrameCryptor.d.ts +47 -47
- package/lib/typescript/RTCFrameCryptorFactory.d.ts +21 -21
- package/lib/typescript/RTCIceCandidate.d.ts +17 -17
- package/lib/typescript/RTCIceCandidateEvent.d.ts +20 -20
- package/lib/typescript/RTCKeyProvider.d.ts +21 -21
- package/lib/typescript/RTCPIPView.d.ts +15 -15
- package/lib/typescript/RTCPIPView.web.d.ts +13 -13
- package/lib/typescript/RTCPeerConnection.d.ts +117 -117
- package/lib/typescript/RTCRtcpParameters.d.ts +10 -10
- package/lib/typescript/RTCRtpCapabilities.d.ts +9 -9
- package/lib/typescript/RTCRtpCodecCapability.d.ts +7 -7
- package/lib/typescript/RTCRtpCodecParameters.d.ts +16 -16
- package/lib/typescript/RTCRtpEncodingParameters.d.ts +23 -23
- package/lib/typescript/RTCRtpHeaderExtension.d.ts +12 -12
- package/lib/typescript/RTCRtpParameters.d.ts +19 -19
- package/lib/typescript/RTCRtpReceiveParameters.d.ts +4 -4
- package/lib/typescript/RTCRtpReceiver.d.ts +21 -21
- package/lib/typescript/RTCRtpSendParameters.d.ts +20 -20
- package/lib/typescript/RTCRtpSender.d.ts +22 -22
- package/lib/typescript/RTCRtpTransceiver.d.ts +31 -31
- package/lib/typescript/RTCSessionDescription.d.ts +12 -12
- package/lib/typescript/RTCTrackEvent.d.ts +29 -29
- package/lib/typescript/RTCUtil.d.ts +37 -37
- package/lib/typescript/RTCView.d.ts +117 -117
- package/lib/typescript/RTCView.web.d.ts +25 -25
- package/lib/typescript/ScreenCapturePickerView.d.ts +2 -2
- package/lib/typescript/ScreenCapturePickerView.web.d.ts +1 -1
- package/lib/typescript/getDisplayMedia.d.ts +2 -2
- package/lib/typescript/getUserMedia.d.ts +7 -7
- package/lib/typescript/index.d.ts +22 -22
- package/lib/typescript/index.web.d.ts +101 -101
- package/lib/typescript/webStream.d.ts +3 -3
- package/livekit-react-native-webrtc.podspec +29 -29
- package/macos/RCTWebRTC.xcodeproj/project.pbxproj +324 -324
- package/macos/RCTWebRTC.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -7
- package/macos/RCTWebRTC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -8
- package/metro.config.js +7 -7
- package/metro.config.macos.js +14 -14
- package/package.json +66 -66
- package/react-native.config.js +11 -11
- package/src/.eslintrc.cjs +67 -67
- package/src/Constraints.ts +20 -20
- package/src/EventEmitter.ts +65 -65
- package/src/Logger.ts +49 -49
- package/src/MediaDevices.ts +53 -53
- package/src/MediaStream.ts +161 -161
- package/src/MediaStreamError.ts +12 -12
- package/src/MediaStreamErrorEvent.ts +11 -11
- package/src/MediaStreamTrack.ts +282 -282
- package/src/MediaStreamTrackEvent.ts +25 -25
- package/src/MessageEvent.ts +26 -26
- package/src/Permissions.ts +133 -133
- package/src/RTCAudioSession.ts +25 -25
- package/src/RTCDataChannel.ts +190 -190
- package/src/RTCDataChannelEvent.ts +28 -28
- package/src/RTCDataPacketCryptor.ts +90 -90
- package/src/RTCDataPacketCryptorFactory.ts +24 -24
- package/src/RTCErrorEvent.ts +20 -20
- package/src/RTCFrameCryptor.ts +162 -162
- package/src/RTCFrameCryptorFactory.ts +101 -101
- package/src/RTCIceCandidate.ts +29 -29
- package/src/RTCIceCandidateEvent.ts +26 -26
- package/src/RTCKeyProvider.ts +117 -117
- package/src/RTCPIPView.tsx +46 -46
- package/src/RTCPIPView.web.tsx +18 -18
- package/src/RTCPeerConnection.ts +935 -935
- package/src/RTCRtcpParameters.ts +23 -23
- package/src/RTCRtpCapabilities.ts +16 -16
- package/src/RTCRtpCodecCapability.ts +12 -12
- package/src/RTCRtpCodecParameters.ts +44 -44
- package/src/RTCRtpEncodingParameters.ts +90 -90
- package/src/RTCRtpHeaderExtension.ts +27 -27
- package/src/RTCRtpParameters.ts +37 -37
- package/src/RTCRtpReceiveParameters.ts +7 -7
- package/src/RTCRtpReceiver.ts +60 -60
- package/src/RTCRtpSendParameters.ts +63 -63
- package/src/RTCRtpSender.ts +78 -78
- package/src/RTCRtpTransceiver.ts +107 -107
- package/src/RTCSessionDescription.ts +30 -30
- package/src/RTCTrackEvent.ts +42 -42
- package/src/RTCUtil.ts +211 -211
- package/src/RTCView.ts +122 -122
- package/src/RTCView.web.tsx +80 -80
- package/src/ScreenCapturePickerView.ts +4 -4
- package/src/ScreenCapturePickerView.web.tsx +3 -3
- package/src/getDisplayMedia.ts +30 -30
- package/src/getUserMedia.ts +136 -136
- package/src/index.ts +107 -107
- package/src/index.web.ts +191 -191
- package/src/webStream.ts +31 -31
- package/tools/format.sh +6 -6
- package/tools/release.sh +45 -45
- package/tsconfig.json +17 -17
|
@@ -1,267 +1,267 @@
|
|
|
1
|
-
#import <objc/runtime.h>
|
|
2
|
-
|
|
3
|
-
#import <React/RCTBridge.h>
|
|
4
|
-
#import <React/RCTBridgeModule.h>
|
|
5
|
-
|
|
6
|
-
#import <WebRTC/RTCRtpCodecCapability.h>
|
|
7
|
-
#import <WebRTC/RTCRtpReceiver.h>
|
|
8
|
-
#import <WebRTC/RTCRtpSender.h>
|
|
9
|
-
|
|
10
|
-
#import "SerializeUtils.h"
|
|
11
|
-
#import "WebRTCModule.h"
|
|
12
|
-
|
|
13
|
-
@implementation WebRTCModule (Transceivers)
|
|
14
|
-
|
|
15
|
-
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(senderGetCapabilities : (NSString *)kind) {
|
|
16
|
-
__block id params;
|
|
17
|
-
|
|
18
|
-
dispatch_sync(self.workerQueue, ^{
|
|
19
|
-
RTCRtpCapabilities *capabilities = [self.peerConnectionFactory rtpSenderCapabilitiesForKind:kind];
|
|
20
|
-
params = [SerializeUtils capabilitiesToJSON:capabilities];
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
return params;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(receiverGetCapabilities : (NSString *)kind) {
|
|
27
|
-
__block id params;
|
|
28
|
-
|
|
29
|
-
dispatch_sync(self.workerQueue, ^{
|
|
30
|
-
RTCRtpCapabilities *capabilities = [self.peerConnectionFactory rtpReceiverCapabilitiesForKind:kind];
|
|
31
|
-
params = [SerializeUtils capabilitiesToJSON:capabilities];
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
return params;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
RCT_EXPORT_METHOD(senderReplaceTrack
|
|
38
|
-
: (nonnull NSNumber *)objectID senderId
|
|
39
|
-
: (NSString *)senderId trackId
|
|
40
|
-
: (NSString *)trackId resolver
|
|
41
|
-
: (RCTPromiseResolveBlock)resolve rejecter
|
|
42
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
43
|
-
RTCPeerConnection *peerConnection = self.peerConnections[objectID];
|
|
44
|
-
|
|
45
|
-
if (peerConnection == nil) {
|
|
46
|
-
RCTLogWarn(@"PeerConnection %@ not found in senderReplaceTrack()", objectID);
|
|
47
|
-
reject(@"E_INVALID", @"Peer Connection is not initialized", nil);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
RTCRtpTransceiver *transceiver = nil;
|
|
51
|
-
for (RTCRtpTransceiver *t in peerConnection.transceivers) {
|
|
52
|
-
if ([senderId isEqual:t.sender.senderId]) {
|
|
53
|
-
transceiver = t;
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (transceiver == nil) {
|
|
59
|
-
RCTLogWarn(@"senderReplaceTrack() transceiver is null");
|
|
60
|
-
reject(@"E_INVALID", @"Could not get transceive", nil);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
RTCRtpSender *sender = transceiver.sender;
|
|
64
|
-
RTCMediaStreamTrack *track = self.localTracks[trackId];
|
|
65
|
-
[sender setTrack:track];
|
|
66
|
-
resolve(@true);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
RCT_EXPORT_METHOD(senderSetParameters
|
|
70
|
-
: (nonnull NSNumber *)objectID senderId
|
|
71
|
-
: (NSString *)senderId options
|
|
72
|
-
: (NSDictionary *)options resolver
|
|
73
|
-
: (RCTPromiseResolveBlock)resolve rejecter
|
|
74
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
75
|
-
RTCPeerConnection *peerConnection = self.peerConnections[objectID];
|
|
76
|
-
|
|
77
|
-
if (peerConnection == nil) {
|
|
78
|
-
RCTLogWarn(@"PeerConnection %@ not found in senderSetParameters()", objectID);
|
|
79
|
-
reject(@"E_INVALID", @"Peer Connection is not initialized", nil);
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
RTCRtpTransceiver *transceiver = nil;
|
|
84
|
-
for (RTCRtpTransceiver *t in peerConnection.transceivers) {
|
|
85
|
-
if ([senderId isEqual:t.sender.senderId]) {
|
|
86
|
-
transceiver = t;
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
if (transceiver == nil) {
|
|
92
|
-
RCTLogWarn(@"senderSetParameters() transceiver is null");
|
|
93
|
-
reject(@"E_INVALID", @"Could not get transceiver", nil);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
RTCRtpSender *sender = transceiver.sender;
|
|
98
|
-
RTCRtpParameters *parameters = sender.parameters;
|
|
99
|
-
[sender setParameters:[self updateParametersWithOptions:options params:parameters]];
|
|
100
|
-
|
|
101
|
-
resolve([SerializeUtils parametersToJSON:sender.parameters]);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
RCT_EXPORT_METHOD(transceiverSetDirection
|
|
105
|
-
: (nonnull NSNumber *)objectID senderId
|
|
106
|
-
: (NSString *)senderId direction
|
|
107
|
-
: (NSString *)direction resolver
|
|
108
|
-
: (RCTPromiseResolveBlock)resolve rejecter
|
|
109
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
110
|
-
RTCPeerConnection *peerConnection = self.peerConnections[objectID];
|
|
111
|
-
|
|
112
|
-
if (peerConnection == nil) {
|
|
113
|
-
RCTLogWarn(@"transceiverSetDirection() PeerConnection %@ not found in transceiverSetDirection()", objectID);
|
|
114
|
-
reject(@"E_INVALID", @"Peer Connection is not initialized", nil);
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
RTCRtpTransceiver *transceiver = nil;
|
|
119
|
-
for (RTCRtpTransceiver *t in peerConnection.transceivers) {
|
|
120
|
-
if ([senderId isEqual:t.sender.senderId]) {
|
|
121
|
-
transceiver = t;
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
if (transceiver == nil) {
|
|
127
|
-
RCTLogWarn(@"transceiverSetDirection() transceiver is null");
|
|
128
|
-
reject(@"E_INVALID", @"Could not get transceiver", nil);
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
NSError *error;
|
|
133
|
-
[transceiver setDirection:[SerializeUtils parseDirection:direction] error:&error];
|
|
134
|
-
|
|
135
|
-
if (error) {
|
|
136
|
-
reject(@"E_SET_DIRECTION", @"Could not set direction", error);
|
|
137
|
-
} else {
|
|
138
|
-
resolve(@true);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
RCT_EXPORT_METHOD(transceiverStop
|
|
143
|
-
: (nonnull NSNumber *)objectID senderId
|
|
144
|
-
: (NSString *)senderId resolver
|
|
145
|
-
: (RCTPromiseResolveBlock)resolve rejecter
|
|
146
|
-
: (RCTPromiseRejectBlock)reject) {
|
|
147
|
-
RTCPeerConnection *peerConnection = self.peerConnections[objectID];
|
|
148
|
-
|
|
149
|
-
if (peerConnection == nil) {
|
|
150
|
-
RCTLogWarn(@"PeerConnection %@ not found in transceiverStop()", objectID);
|
|
151
|
-
reject(@"E_INVALID", @"Peer Connection is not initialized", nil);
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
RTCRtpTransceiver *transceiver = nil;
|
|
156
|
-
for (RTCRtpTransceiver *t in peerConnection.transceivers) {
|
|
157
|
-
if ([senderId isEqual:t.sender.senderId]) {
|
|
158
|
-
transceiver = t;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
if (transceiver == nil) {
|
|
164
|
-
RCTLogWarn(@"senderSetParameters() transceiver is null");
|
|
165
|
-
reject(@"E_INVALID", @"Could not get transceiver", nil);
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
[transceiver stopInternal];
|
|
170
|
-
|
|
171
|
-
resolve(@true);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(transceiverSetCodecPreferences
|
|
175
|
-
: (nonnull NSNumber *)objectID senderId
|
|
176
|
-
: (NSString *)senderId codecPreferences
|
|
177
|
-
: (NSArray *)codecPreferences) {
|
|
178
|
-
RTCPeerConnection *peerConnection = self.peerConnections[objectID];
|
|
179
|
-
|
|
180
|
-
if (peerConnection == nil) {
|
|
181
|
-
RCTLogWarn(@"PeerConnection %@ not found in transceiverSetCodecPreferences()", objectID);
|
|
182
|
-
return nil;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
RTCRtpTransceiver *transceiver = nil;
|
|
186
|
-
for (RTCRtpTransceiver *t in peerConnection.transceivers) {
|
|
187
|
-
if ([senderId isEqual:t.sender.senderId]) {
|
|
188
|
-
transceiver = t;
|
|
189
|
-
break;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
if (transceiver == nil) {
|
|
194
|
-
RCTLogWarn(@"transceiverSetCodecPreferences() transceiver is null");
|
|
195
|
-
return nil;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Get the available codecs
|
|
199
|
-
RTCRtpTransceiverDirection direction = transceiver.direction;
|
|
200
|
-
NSMutableArray *availableCodecs = [NSMutableArray new];
|
|
201
|
-
NSString *kind = transceiver.mediaType == RTCRtpMediaTypeAudio ? @"audio" : @"video";
|
|
202
|
-
if (direction == RTCRtpTransceiverDirectionSendRecv || direction == RTCRtpTransceiverDirectionSendOnly) {
|
|
203
|
-
RTCRtpCapabilities *capabilities = [self.peerConnectionFactory rtpSenderCapabilitiesForKind:kind];
|
|
204
|
-
for (RTCRtpCodecCapability *codec in capabilities.codecs) {
|
|
205
|
-
NSDictionary *codecDict = [SerializeUtils codecCapabilityToJSON:codec];
|
|
206
|
-
[availableCodecs addObject:@{
|
|
207
|
-
@"dict" : codecDict,
|
|
208
|
-
@"codec" : codec,
|
|
209
|
-
}];
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
if (direction == RTCRtpTransceiverDirectionSendRecv || direction == RTCRtpTransceiverDirectionRecvOnly) {
|
|
213
|
-
RTCRtpCapabilities *capabilities = [self.peerConnectionFactory rtpReceiverCapabilitiesForKind:kind];
|
|
214
|
-
for (RTCRtpCodecCapability *codec in capabilities.codecs) {
|
|
215
|
-
NSDictionary *codecDict = [SerializeUtils codecCapabilityToJSON:codec];
|
|
216
|
-
[availableCodecs addObject:@{
|
|
217
|
-
@"dict" : codecDict,
|
|
218
|
-
@"codec" : codec,
|
|
219
|
-
}];
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
// Convert JSON codec capabilities to the actual objects.
|
|
224
|
-
// Codec preferences is order sensitive.
|
|
225
|
-
NSMutableArray *codecsToSet = [NSMutableArray new];
|
|
226
|
-
|
|
227
|
-
for (NSDictionary *codecDict in codecPreferences) {
|
|
228
|
-
for (NSDictionary *entry in availableCodecs) {
|
|
229
|
-
NSDictionary *availableCodecDict = [entry objectForKey:@"dict"];
|
|
230
|
-
if ([codecDict isEqualToDictionary:availableCodecDict]) {
|
|
231
|
-
[codecsToSet addObject:[entry objectForKey:@"codec"]];
|
|
232
|
-
break;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
transceiver.codecPreferences = codecsToSet;
|
|
238
|
-
return nil;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
- (RTCRtpParameters *)updateParametersWithOptions:(NSDictionary *)options params:(RTCRtpParameters *)params {
|
|
242
|
-
NSArray *encodingsArray = options[@"encodings"];
|
|
243
|
-
NSArray *encodings = params.encodings;
|
|
244
|
-
|
|
245
|
-
if ([encodingsArray count] != [encodings count]) {
|
|
246
|
-
return nil;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
for (int i = 0; i < [encodingsArray count]; i++) {
|
|
250
|
-
NSDictionary *encodingUpdate = encodingsArray[i];
|
|
251
|
-
RTCRtpEncodingParameters *encoding = encodings[i];
|
|
252
|
-
|
|
253
|
-
encoding.isActive = [encodingUpdate[@"active"] boolValue];
|
|
254
|
-
encoding.rid = encodingUpdate[@"rid"];
|
|
255
|
-
encoding.maxBitrateBps = encodingUpdate[@"maxBitrate"];
|
|
256
|
-
encoding.maxFramerate = encodingUpdate[@"maxFramerate"];
|
|
257
|
-
encoding.scaleResolutionDownBy = encodingUpdate[@"scaleResolutionDownBy"];
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
if ([options objectForKey:@"degradationPreference"]) {
|
|
261
|
-
params.degradationPreference = [options objectForKey:@"degradationPreference"];
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
return params;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
@end
|
|
1
|
+
#import <objc/runtime.h>
|
|
2
|
+
|
|
3
|
+
#import <React/RCTBridge.h>
|
|
4
|
+
#import <React/RCTBridgeModule.h>
|
|
5
|
+
|
|
6
|
+
#import <WebRTC/RTCRtpCodecCapability.h>
|
|
7
|
+
#import <WebRTC/RTCRtpReceiver.h>
|
|
8
|
+
#import <WebRTC/RTCRtpSender.h>
|
|
9
|
+
|
|
10
|
+
#import "SerializeUtils.h"
|
|
11
|
+
#import "WebRTCModule.h"
|
|
12
|
+
|
|
13
|
+
@implementation WebRTCModule (Transceivers)
|
|
14
|
+
|
|
15
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(senderGetCapabilities : (NSString *)kind) {
|
|
16
|
+
__block id params;
|
|
17
|
+
|
|
18
|
+
dispatch_sync(self.workerQueue, ^{
|
|
19
|
+
RTCRtpCapabilities *capabilities = [self.peerConnectionFactory rtpSenderCapabilitiesForKind:kind];
|
|
20
|
+
params = [SerializeUtils capabilitiesToJSON:capabilities];
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
return params;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(receiverGetCapabilities : (NSString *)kind) {
|
|
27
|
+
__block id params;
|
|
28
|
+
|
|
29
|
+
dispatch_sync(self.workerQueue, ^{
|
|
30
|
+
RTCRtpCapabilities *capabilities = [self.peerConnectionFactory rtpReceiverCapabilitiesForKind:kind];
|
|
31
|
+
params = [SerializeUtils capabilitiesToJSON:capabilities];
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
return params;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
RCT_EXPORT_METHOD(senderReplaceTrack
|
|
38
|
+
: (nonnull NSNumber *)objectID senderId
|
|
39
|
+
: (NSString *)senderId trackId
|
|
40
|
+
: (NSString *)trackId resolver
|
|
41
|
+
: (RCTPromiseResolveBlock)resolve rejecter
|
|
42
|
+
: (RCTPromiseRejectBlock)reject) {
|
|
43
|
+
RTCPeerConnection *peerConnection = self.peerConnections[objectID];
|
|
44
|
+
|
|
45
|
+
if (peerConnection == nil) {
|
|
46
|
+
RCTLogWarn(@"PeerConnection %@ not found in senderReplaceTrack()", objectID);
|
|
47
|
+
reject(@"E_INVALID", @"Peer Connection is not initialized", nil);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
RTCRtpTransceiver *transceiver = nil;
|
|
51
|
+
for (RTCRtpTransceiver *t in peerConnection.transceivers) {
|
|
52
|
+
if ([senderId isEqual:t.sender.senderId]) {
|
|
53
|
+
transceiver = t;
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (transceiver == nil) {
|
|
59
|
+
RCTLogWarn(@"senderReplaceTrack() transceiver is null");
|
|
60
|
+
reject(@"E_INVALID", @"Could not get transceive", nil);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
RTCRtpSender *sender = transceiver.sender;
|
|
64
|
+
RTCMediaStreamTrack *track = self.localTracks[trackId];
|
|
65
|
+
[sender setTrack:track];
|
|
66
|
+
resolve(@true);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
RCT_EXPORT_METHOD(senderSetParameters
|
|
70
|
+
: (nonnull NSNumber *)objectID senderId
|
|
71
|
+
: (NSString *)senderId options
|
|
72
|
+
: (NSDictionary *)options resolver
|
|
73
|
+
: (RCTPromiseResolveBlock)resolve rejecter
|
|
74
|
+
: (RCTPromiseRejectBlock)reject) {
|
|
75
|
+
RTCPeerConnection *peerConnection = self.peerConnections[objectID];
|
|
76
|
+
|
|
77
|
+
if (peerConnection == nil) {
|
|
78
|
+
RCTLogWarn(@"PeerConnection %@ not found in senderSetParameters()", objectID);
|
|
79
|
+
reject(@"E_INVALID", @"Peer Connection is not initialized", nil);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
RTCRtpTransceiver *transceiver = nil;
|
|
84
|
+
for (RTCRtpTransceiver *t in peerConnection.transceivers) {
|
|
85
|
+
if ([senderId isEqual:t.sender.senderId]) {
|
|
86
|
+
transceiver = t;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (transceiver == nil) {
|
|
92
|
+
RCTLogWarn(@"senderSetParameters() transceiver is null");
|
|
93
|
+
reject(@"E_INVALID", @"Could not get transceiver", nil);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
RTCRtpSender *sender = transceiver.sender;
|
|
98
|
+
RTCRtpParameters *parameters = sender.parameters;
|
|
99
|
+
[sender setParameters:[self updateParametersWithOptions:options params:parameters]];
|
|
100
|
+
|
|
101
|
+
resolve([SerializeUtils parametersToJSON:sender.parameters]);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
RCT_EXPORT_METHOD(transceiverSetDirection
|
|
105
|
+
: (nonnull NSNumber *)objectID senderId
|
|
106
|
+
: (NSString *)senderId direction
|
|
107
|
+
: (NSString *)direction resolver
|
|
108
|
+
: (RCTPromiseResolveBlock)resolve rejecter
|
|
109
|
+
: (RCTPromiseRejectBlock)reject) {
|
|
110
|
+
RTCPeerConnection *peerConnection = self.peerConnections[objectID];
|
|
111
|
+
|
|
112
|
+
if (peerConnection == nil) {
|
|
113
|
+
RCTLogWarn(@"transceiverSetDirection() PeerConnection %@ not found in transceiverSetDirection()", objectID);
|
|
114
|
+
reject(@"E_INVALID", @"Peer Connection is not initialized", nil);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
RTCRtpTransceiver *transceiver = nil;
|
|
119
|
+
for (RTCRtpTransceiver *t in peerConnection.transceivers) {
|
|
120
|
+
if ([senderId isEqual:t.sender.senderId]) {
|
|
121
|
+
transceiver = t;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (transceiver == nil) {
|
|
127
|
+
RCTLogWarn(@"transceiverSetDirection() transceiver is null");
|
|
128
|
+
reject(@"E_INVALID", @"Could not get transceiver", nil);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
NSError *error;
|
|
133
|
+
[transceiver setDirection:[SerializeUtils parseDirection:direction] error:&error];
|
|
134
|
+
|
|
135
|
+
if (error) {
|
|
136
|
+
reject(@"E_SET_DIRECTION", @"Could not set direction", error);
|
|
137
|
+
} else {
|
|
138
|
+
resolve(@true);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
RCT_EXPORT_METHOD(transceiverStop
|
|
143
|
+
: (nonnull NSNumber *)objectID senderId
|
|
144
|
+
: (NSString *)senderId resolver
|
|
145
|
+
: (RCTPromiseResolveBlock)resolve rejecter
|
|
146
|
+
: (RCTPromiseRejectBlock)reject) {
|
|
147
|
+
RTCPeerConnection *peerConnection = self.peerConnections[objectID];
|
|
148
|
+
|
|
149
|
+
if (peerConnection == nil) {
|
|
150
|
+
RCTLogWarn(@"PeerConnection %@ not found in transceiverStop()", objectID);
|
|
151
|
+
reject(@"E_INVALID", @"Peer Connection is not initialized", nil);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
RTCRtpTransceiver *transceiver = nil;
|
|
156
|
+
for (RTCRtpTransceiver *t in peerConnection.transceivers) {
|
|
157
|
+
if ([senderId isEqual:t.sender.senderId]) {
|
|
158
|
+
transceiver = t;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (transceiver == nil) {
|
|
164
|
+
RCTLogWarn(@"senderSetParameters() transceiver is null");
|
|
165
|
+
reject(@"E_INVALID", @"Could not get transceiver", nil);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
[transceiver stopInternal];
|
|
170
|
+
|
|
171
|
+
resolve(@true);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(transceiverSetCodecPreferences
|
|
175
|
+
: (nonnull NSNumber *)objectID senderId
|
|
176
|
+
: (NSString *)senderId codecPreferences
|
|
177
|
+
: (NSArray *)codecPreferences) {
|
|
178
|
+
RTCPeerConnection *peerConnection = self.peerConnections[objectID];
|
|
179
|
+
|
|
180
|
+
if (peerConnection == nil) {
|
|
181
|
+
RCTLogWarn(@"PeerConnection %@ not found in transceiverSetCodecPreferences()", objectID);
|
|
182
|
+
return nil;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
RTCRtpTransceiver *transceiver = nil;
|
|
186
|
+
for (RTCRtpTransceiver *t in peerConnection.transceivers) {
|
|
187
|
+
if ([senderId isEqual:t.sender.senderId]) {
|
|
188
|
+
transceiver = t;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if (transceiver == nil) {
|
|
194
|
+
RCTLogWarn(@"transceiverSetCodecPreferences() transceiver is null");
|
|
195
|
+
return nil;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Get the available codecs
|
|
199
|
+
RTCRtpTransceiverDirection direction = transceiver.direction;
|
|
200
|
+
NSMutableArray *availableCodecs = [NSMutableArray new];
|
|
201
|
+
NSString *kind = transceiver.mediaType == RTCRtpMediaTypeAudio ? @"audio" : @"video";
|
|
202
|
+
if (direction == RTCRtpTransceiverDirectionSendRecv || direction == RTCRtpTransceiverDirectionSendOnly) {
|
|
203
|
+
RTCRtpCapabilities *capabilities = [self.peerConnectionFactory rtpSenderCapabilitiesForKind:kind];
|
|
204
|
+
for (RTCRtpCodecCapability *codec in capabilities.codecs) {
|
|
205
|
+
NSDictionary *codecDict = [SerializeUtils codecCapabilityToJSON:codec];
|
|
206
|
+
[availableCodecs addObject:@{
|
|
207
|
+
@"dict" : codecDict,
|
|
208
|
+
@"codec" : codec,
|
|
209
|
+
}];
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (direction == RTCRtpTransceiverDirectionSendRecv || direction == RTCRtpTransceiverDirectionRecvOnly) {
|
|
213
|
+
RTCRtpCapabilities *capabilities = [self.peerConnectionFactory rtpReceiverCapabilitiesForKind:kind];
|
|
214
|
+
for (RTCRtpCodecCapability *codec in capabilities.codecs) {
|
|
215
|
+
NSDictionary *codecDict = [SerializeUtils codecCapabilityToJSON:codec];
|
|
216
|
+
[availableCodecs addObject:@{
|
|
217
|
+
@"dict" : codecDict,
|
|
218
|
+
@"codec" : codec,
|
|
219
|
+
}];
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Convert JSON codec capabilities to the actual objects.
|
|
224
|
+
// Codec preferences is order sensitive.
|
|
225
|
+
NSMutableArray *codecsToSet = [NSMutableArray new];
|
|
226
|
+
|
|
227
|
+
for (NSDictionary *codecDict in codecPreferences) {
|
|
228
|
+
for (NSDictionary *entry in availableCodecs) {
|
|
229
|
+
NSDictionary *availableCodecDict = [entry objectForKey:@"dict"];
|
|
230
|
+
if ([codecDict isEqualToDictionary:availableCodecDict]) {
|
|
231
|
+
[codecsToSet addObject:[entry objectForKey:@"codec"]];
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
transceiver.codecPreferences = codecsToSet;
|
|
238
|
+
return nil;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
- (RTCRtpParameters *)updateParametersWithOptions:(NSDictionary *)options params:(RTCRtpParameters *)params {
|
|
242
|
+
NSArray *encodingsArray = options[@"encodings"];
|
|
243
|
+
NSArray *encodings = params.encodings;
|
|
244
|
+
|
|
245
|
+
if ([encodingsArray count] != [encodings count]) {
|
|
246
|
+
return nil;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
for (int i = 0; i < [encodingsArray count]; i++) {
|
|
250
|
+
NSDictionary *encodingUpdate = encodingsArray[i];
|
|
251
|
+
RTCRtpEncodingParameters *encoding = encodings[i];
|
|
252
|
+
|
|
253
|
+
encoding.isActive = [encodingUpdate[@"active"] boolValue];
|
|
254
|
+
encoding.rid = encodingUpdate[@"rid"];
|
|
255
|
+
encoding.maxBitrateBps = encodingUpdate[@"maxBitrate"];
|
|
256
|
+
encoding.maxFramerate = encodingUpdate[@"maxFramerate"];
|
|
257
|
+
encoding.scaleResolutionDownBy = encodingUpdate[@"scaleResolutionDownBy"];
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
if ([options objectForKey:@"degradationPreference"]) {
|
|
261
|
+
params.degradationPreference = [options objectForKey:@"degradationPreference"];
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
return params;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
@end
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
#import <WebRTC/RTCPeerConnection.h>
|
|
3
|
-
#import "WebRTCModule.h"
|
|
4
|
-
|
|
5
|
-
@interface RTCPeerConnection (VideoTrackAdapter)
|
|
6
|
-
|
|
7
|
-
@property(nonatomic, strong) NSMutableDictionary<NSString *, id> *videoTrackAdapters;
|
|
8
|
-
|
|
9
|
-
- (void)addVideoTrackAdapter:(RTCVideoTrack *)track;
|
|
10
|
-
- (void)removeVideoTrackAdapter:(RTCVideoTrack *)track;
|
|
11
|
-
|
|
12
|
-
@end
|
|
1
|
+
|
|
2
|
+
#import <WebRTC/RTCPeerConnection.h>
|
|
3
|
+
#import "WebRTCModule.h"
|
|
4
|
+
|
|
5
|
+
@interface RTCPeerConnection (VideoTrackAdapter)
|
|
6
|
+
|
|
7
|
+
@property(nonatomic, strong) NSMutableDictionary<NSString *, id> *videoTrackAdapters;
|
|
8
|
+
|
|
9
|
+
- (void)addVideoTrackAdapter:(RTCVideoTrack *)track;
|
|
10
|
+
- (void)removeVideoTrackAdapter:(RTCVideoTrack *)track;
|
|
11
|
+
|
|
12
|
+
@end
|