@sbhjt-gr/react-native-webrtc 124.0.3 → 124.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,98 +1,98 @@
|
|
|
1
|
-
package com.oney.WebRTCModule;
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.ReadableMap;
|
|
4
|
-
import com.facebook.react.uimanager.SimpleViewManager;
|
|
5
|
-
import com.facebook.react.uimanager.ThemedReactContext;
|
|
6
|
-
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
7
|
-
import com.facebook.react.uimanager.events.RCTEventEmitter;
|
|
8
|
-
|
|
9
|
-
import java.util.HashMap;
|
|
10
|
-
import java.util.Map;
|
|
11
|
-
|
|
12
|
-
public class RTCVideoViewManager extends SimpleViewManager<WebRTCView> {
|
|
13
|
-
private static final String REACT_CLASS = "RTCVideoView";
|
|
14
|
-
|
|
15
|
-
@Override
|
|
16
|
-
public String getName() {
|
|
17
|
-
return REACT_CLASS;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
@Override
|
|
21
|
-
public WebRTCView createViewInstance(ThemedReactContext context) {
|
|
22
|
-
return new WebRTCView(context);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Sets the indicator which determines whether a specific {@link WebRTCView}
|
|
27
|
-
* is to mirror the video specified by {@code streamURL} during its rendering.
|
|
28
|
-
* For more details, refer to the documentation of the {@code mirror} property
|
|
29
|
-
* of the JavaScript counterpart of {@code WebRTCView} i.e. {@code RTCView}.
|
|
30
|
-
*
|
|
31
|
-
* @param view The {@code WebRTCView} on which the specified {@code mirror} is
|
|
32
|
-
* to be set.
|
|
33
|
-
* @param mirror If the specified {@code WebRTCView} is to mirror the video
|
|
34
|
-
* specified by its associated {@code streamURL} during its rendering,
|
|
35
|
-
* {@code true}; otherwise, {@code false}.
|
|
36
|
-
*/
|
|
37
|
-
@ReactProp(name = "mirror")
|
|
38
|
-
public void setMirror(WebRTCView view, boolean mirror) {
|
|
39
|
-
view.setMirror(mirror);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* In the fashion of
|
|
44
|
-
* https://www.w3.org/TR/html5/embedded-content-0.html#dom-video-videowidth
|
|
45
|
-
* and https://www.w3.org/TR/html5/rendering.html#video-object-fit, resembles
|
|
46
|
-
* the CSS style {@code object-fit}.
|
|
47
|
-
*
|
|
48
|
-
* @param view The {@code WebRTCView} on which the specified {@code objectFit}
|
|
49
|
-
* is to be set.
|
|
50
|
-
* @param objectFit For details, refer to the documentation of the
|
|
51
|
-
* {@code objectFit} property of the JavaScript counterpart of
|
|
52
|
-
* {@code WebRTCView} i.e. {@code RTCView}.
|
|
53
|
-
*/
|
|
54
|
-
@ReactProp(name = "objectFit")
|
|
55
|
-
public void setObjectFit(WebRTCView view, String objectFit) {
|
|
56
|
-
view.setObjectFit(objectFit);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
@ReactProp(name = "streamURL")
|
|
60
|
-
public void setStreamURL(WebRTCView view, String streamURL) {
|
|
61
|
-
view.setStreamURL(streamURL);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Sets the z-order of a specific {@link WebRTCView} in the stacking space of
|
|
66
|
-
* all {@code WebRTCView}s. For more details, refer to the documentation of
|
|
67
|
-
* the {@code zOrder} property of the JavaScript counterpart of
|
|
68
|
-
* {@code WebRTCView} i.e. {@code RTCView}.
|
|
69
|
-
*
|
|
70
|
-
* @param view The {@code WebRTCView} on which the specified {@code zOrder} is
|
|
71
|
-
* to be set.
|
|
72
|
-
* @param zOrder The z-order to set on the specified {@code WebRTCView}.
|
|
73
|
-
*/
|
|
74
|
-
@ReactProp(name = "zOrder")
|
|
75
|
-
public void setZOrder(WebRTCView view, int zOrder) {
|
|
76
|
-
view.setZOrder(zOrder);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Sets the callback for when video dimensions change.
|
|
81
|
-
*
|
|
82
|
-
* @param view The {@code WebRTCView} on which the callback is to be set.
|
|
83
|
-
* @param onDimensionsChange The callback to be called when video dimensions change.
|
|
84
|
-
*/
|
|
85
|
-
@ReactProp(name = "onDimensionsChange")
|
|
86
|
-
public void setOnDimensionsChange(WebRTCView view, boolean onDimensionsChange) {
|
|
87
|
-
view.setOnDimensionsChange(onDimensionsChange);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
@Override
|
|
91
|
-
public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
|
|
92
|
-
Map<String, Object> eventTypeConstants = new HashMap<>();
|
|
93
|
-
Map<String, String> dimensionsChangeEvent = new HashMap<>();
|
|
94
|
-
dimensionsChangeEvent.put("registrationName", "onDimensionsChange");
|
|
95
|
-
eventTypeConstants.put("onDimensionsChange", dimensionsChangeEvent);
|
|
96
|
-
return eventTypeConstants;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
1
|
+
package com.oney.WebRTCModule;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
4
|
+
import com.facebook.react.uimanager.SimpleViewManager;
|
|
5
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
|
6
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
7
|
+
import com.facebook.react.uimanager.events.RCTEventEmitter;
|
|
8
|
+
|
|
9
|
+
import java.util.HashMap;
|
|
10
|
+
import java.util.Map;
|
|
11
|
+
|
|
12
|
+
public class RTCVideoViewManager extends SimpleViewManager<WebRTCView> {
|
|
13
|
+
private static final String REACT_CLASS = "RTCVideoView";
|
|
14
|
+
|
|
15
|
+
@Override
|
|
16
|
+
public String getName() {
|
|
17
|
+
return REACT_CLASS;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@Override
|
|
21
|
+
public WebRTCView createViewInstance(ThemedReactContext context) {
|
|
22
|
+
return new WebRTCView(context);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Sets the indicator which determines whether a specific {@link WebRTCView}
|
|
27
|
+
* is to mirror the video specified by {@code streamURL} during its rendering.
|
|
28
|
+
* For more details, refer to the documentation of the {@code mirror} property
|
|
29
|
+
* of the JavaScript counterpart of {@code WebRTCView} i.e. {@code RTCView}.
|
|
30
|
+
*
|
|
31
|
+
* @param view The {@code WebRTCView} on which the specified {@code mirror} is
|
|
32
|
+
* to be set.
|
|
33
|
+
* @param mirror If the specified {@code WebRTCView} is to mirror the video
|
|
34
|
+
* specified by its associated {@code streamURL} during its rendering,
|
|
35
|
+
* {@code true}; otherwise, {@code false}.
|
|
36
|
+
*/
|
|
37
|
+
@ReactProp(name = "mirror")
|
|
38
|
+
public void setMirror(WebRTCView view, boolean mirror) {
|
|
39
|
+
view.setMirror(mirror);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* In the fashion of
|
|
44
|
+
* https://www.w3.org/TR/html5/embedded-content-0.html#dom-video-videowidth
|
|
45
|
+
* and https://www.w3.org/TR/html5/rendering.html#video-object-fit, resembles
|
|
46
|
+
* the CSS style {@code object-fit}.
|
|
47
|
+
*
|
|
48
|
+
* @param view The {@code WebRTCView} on which the specified {@code objectFit}
|
|
49
|
+
* is to be set.
|
|
50
|
+
* @param objectFit For details, refer to the documentation of the
|
|
51
|
+
* {@code objectFit} property of the JavaScript counterpart of
|
|
52
|
+
* {@code WebRTCView} i.e. {@code RTCView}.
|
|
53
|
+
*/
|
|
54
|
+
@ReactProp(name = "objectFit")
|
|
55
|
+
public void setObjectFit(WebRTCView view, String objectFit) {
|
|
56
|
+
view.setObjectFit(objectFit);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@ReactProp(name = "streamURL")
|
|
60
|
+
public void setStreamURL(WebRTCView view, String streamURL) {
|
|
61
|
+
view.setStreamURL(streamURL);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Sets the z-order of a specific {@link WebRTCView} in the stacking space of
|
|
66
|
+
* all {@code WebRTCView}s. For more details, refer to the documentation of
|
|
67
|
+
* the {@code zOrder} property of the JavaScript counterpart of
|
|
68
|
+
* {@code WebRTCView} i.e. {@code RTCView}.
|
|
69
|
+
*
|
|
70
|
+
* @param view The {@code WebRTCView} on which the specified {@code zOrder} is
|
|
71
|
+
* to be set.
|
|
72
|
+
* @param zOrder The z-order to set on the specified {@code WebRTCView}.
|
|
73
|
+
*/
|
|
74
|
+
@ReactProp(name = "zOrder")
|
|
75
|
+
public void setZOrder(WebRTCView view, int zOrder) {
|
|
76
|
+
view.setZOrder(zOrder);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Sets the callback for when video dimensions change.
|
|
81
|
+
*
|
|
82
|
+
* @param view The {@code WebRTCView} on which the callback is to be set.
|
|
83
|
+
* @param onDimensionsChange The callback to be called when video dimensions change.
|
|
84
|
+
*/
|
|
85
|
+
@ReactProp(name = "onDimensionsChange")
|
|
86
|
+
public void setOnDimensionsChange(WebRTCView view, boolean onDimensionsChange) {
|
|
87
|
+
view.setOnDimensionsChange(onDimensionsChange);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@Override
|
|
91
|
+
public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
|
|
92
|
+
Map<String, Object> eventTypeConstants = new HashMap<>();
|
|
93
|
+
Map<String, String> dimensionsChangeEvent = new HashMap<>();
|
|
94
|
+
dimensionsChangeEvent.put("registrationName", "onDimensionsChange");
|
|
95
|
+
eventTypeConstants.put("onDimensionsChange", dimensionsChangeEvent);
|
|
96
|
+
return eventTypeConstants;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
package com.oney.WebRTCModule;
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.ReadableMap;
|
|
4
|
-
import com.facebook.react.bridge.ReadableType;
|
|
5
|
-
|
|
6
|
-
public class ReactBridgeUtil {
|
|
7
|
-
/**
|
|
8
|
-
* Reads a value from given <tt>ReadableMap</tt> and returns it as
|
|
9
|
-
* a <tt>String</tt>. Note that integer value is converted to double, before
|
|
10
|
-
* it gets converted to a string.
|
|
11
|
-
* @param map the <tt>ReadableMap</tt> from which the value will be obtained
|
|
12
|
-
* @param key the map's key under which the value has been mapped.
|
|
13
|
-
* @return a <tt>String</tt> representation of the value if exists or
|
|
14
|
-
* <tt>null</tt> if there is no value mapped for given <tt>key</tt>.
|
|
15
|
-
*/
|
|
16
|
-
public static String getMapStrValue(ReadableMap map, String key) {
|
|
17
|
-
if (!map.hasKey(key)) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
ReadableType type = map.getType(key);
|
|
21
|
-
switch (type) {
|
|
22
|
-
case Boolean:
|
|
23
|
-
return String.valueOf(map.getBoolean(key));
|
|
24
|
-
case Number:
|
|
25
|
-
// Don't know how to distinguish between Int and Double from
|
|
26
|
-
// ReadableType.Number. 'getInt' will fail on double value,
|
|
27
|
-
// while 'getDouble' works for both.
|
|
28
|
-
// return String.valueOf(map.getInt(key));
|
|
29
|
-
return String.valueOf(map.getDouble(key));
|
|
30
|
-
case String:
|
|
31
|
-
return map.getString(key);
|
|
32
|
-
default:
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
package com.oney.WebRTCModule;
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
4
|
+
import com.facebook.react.bridge.ReadableType;
|
|
5
|
+
|
|
6
|
+
public class ReactBridgeUtil {
|
|
7
|
+
/**
|
|
8
|
+
* Reads a value from given <tt>ReadableMap</tt> and returns it as
|
|
9
|
+
* a <tt>String</tt>. Note that integer value is converted to double, before
|
|
10
|
+
* it gets converted to a string.
|
|
11
|
+
* @param map the <tt>ReadableMap</tt> from which the value will be obtained
|
|
12
|
+
* @param key the map's key under which the value has been mapped.
|
|
13
|
+
* @return a <tt>String</tt> representation of the value if exists or
|
|
14
|
+
* <tt>null</tt> if there is no value mapped for given <tt>key</tt>.
|
|
15
|
+
*/
|
|
16
|
+
public static String getMapStrValue(ReadableMap map, String key) {
|
|
17
|
+
if (!map.hasKey(key)) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
ReadableType type = map.getType(key);
|
|
21
|
+
switch (type) {
|
|
22
|
+
case Boolean:
|
|
23
|
+
return String.valueOf(map.getBoolean(key));
|
|
24
|
+
case Number:
|
|
25
|
+
// Don't know how to distinguish between Int and Double from
|
|
26
|
+
// ReadableType.Number. 'getInt' will fail on double value,
|
|
27
|
+
// while 'getDouble' works for both.
|
|
28
|
+
// return String.valueOf(map.getInt(key));
|
|
29
|
+
return String.valueOf(map.getDouble(key));
|
|
30
|
+
case String:
|
|
31
|
+
return map.getString(key);
|
|
32
|
+
default:
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
36
|
}
|
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
package com.oney.WebRTCModule;
|
|
2
|
-
|
|
3
|
-
import android.app.Activity;
|
|
4
|
-
import android.content.Context;
|
|
5
|
-
import android.content.Intent;
|
|
6
|
-
import android.media.projection.MediaProjection;
|
|
7
|
-
import android.util.DisplayMetrics;
|
|
8
|
-
import android.util.Log;
|
|
9
|
-
import android.view.OrientationEventListener;
|
|
10
|
-
|
|
11
|
-
import org.webrtc.ScreenCapturerAndroid;
|
|
12
|
-
import org.webrtc.VideoCapturer;
|
|
13
|
-
|
|
14
|
-
public class ScreenCaptureController extends AbstractVideoCaptureController {
|
|
15
|
-
/**
|
|
16
|
-
* The {@link Log} tag with which {@code ScreenCaptureController} is to log.
|
|
17
|
-
*/
|
|
18
|
-
private static final String TAG = ScreenCaptureController.class.getSimpleName();
|
|
19
|
-
|
|
20
|
-
private static final int DEFAULT_FPS = 30;
|
|
21
|
-
|
|
22
|
-
private final Intent mediaProjectionPermissionResultData;
|
|
23
|
-
|
|
24
|
-
private final OrientationEventListener orientationListener;
|
|
25
|
-
|
|
26
|
-
private final Context context;
|
|
27
|
-
|
|
28
|
-
public ScreenCaptureController(Context context, int width, int height, Intent mediaProjectionPermissionResultData) {
|
|
29
|
-
super(width, height, DEFAULT_FPS);
|
|
30
|
-
|
|
31
|
-
this.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
|
|
32
|
-
|
|
33
|
-
this.context = context;
|
|
34
|
-
|
|
35
|
-
this.orientationListener = new OrientationEventListener(context) {
|
|
36
|
-
@Override
|
|
37
|
-
public void onOrientationChanged(int orientation) {
|
|
38
|
-
DisplayMetrics displayMetrics = DisplayUtils.getDisplayMetrics((Activity) context);
|
|
39
|
-
final int width = displayMetrics.widthPixels;
|
|
40
|
-
final int height = displayMetrics.heightPixels;
|
|
41
|
-
if (width != ScreenCaptureController.this.actualWidth
|
|
42
|
-
|| height != ScreenCaptureController.this.actualHeight) {
|
|
43
|
-
ScreenCaptureController.this.actualWidth = width;
|
|
44
|
-
ScreenCaptureController.this.actualHeight = height;
|
|
45
|
-
|
|
46
|
-
// Pivot to the executor thread because videoCapturer.changeCaptureFormat runs in the main
|
|
47
|
-
// thread and may deadlock.
|
|
48
|
-
ThreadUtils.runOnExecutor(() -> {
|
|
49
|
-
try {
|
|
50
|
-
videoCapturer.changeCaptureFormat(width, height, DEFAULT_FPS);
|
|
51
|
-
} catch (Exception ex) {
|
|
52
|
-
// We ignore exceptions here. The video capturer runs on its own
|
|
53
|
-
// thread and we cannot synchronize with it.
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
if (this.orientationListener.canDetectOrientation()) {
|
|
61
|
-
this.orientationListener.enable();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
@Override
|
|
66
|
-
public String getDeviceId() {
|
|
67
|
-
return "screen-capture";
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
@Override
|
|
71
|
-
public void dispose() {
|
|
72
|
-
MediaProjectionService.abort(context);
|
|
73
|
-
super.dispose();
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
@Override
|
|
77
|
-
protected VideoCapturer createVideoCapturer() {
|
|
78
|
-
VideoCapturer videoCapturer =
|
|
79
|
-
new ScreenCapturerAndroid(mediaProjectionPermissionResultData, new MediaProjection.Callback() {
|
|
80
|
-
@Override
|
|
81
|
-
public void onStop() {
|
|
82
|
-
Log.w(TAG, "Media projection stopped.");
|
|
83
|
-
orientationListener.disable();
|
|
84
|
-
stopCapture();
|
|
85
|
-
|
|
86
|
-
if (capturerEventsListener != null) {
|
|
87
|
-
capturerEventsListener.onCapturerEnded();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
return videoCapturer;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
1
|
+
package com.oney.WebRTCModule;
|
|
2
|
+
|
|
3
|
+
import android.app.Activity;
|
|
4
|
+
import android.content.Context;
|
|
5
|
+
import android.content.Intent;
|
|
6
|
+
import android.media.projection.MediaProjection;
|
|
7
|
+
import android.util.DisplayMetrics;
|
|
8
|
+
import android.util.Log;
|
|
9
|
+
import android.view.OrientationEventListener;
|
|
10
|
+
|
|
11
|
+
import org.webrtc.ScreenCapturerAndroid;
|
|
12
|
+
import org.webrtc.VideoCapturer;
|
|
13
|
+
|
|
14
|
+
public class ScreenCaptureController extends AbstractVideoCaptureController {
|
|
15
|
+
/**
|
|
16
|
+
* The {@link Log} tag with which {@code ScreenCaptureController} is to log.
|
|
17
|
+
*/
|
|
18
|
+
private static final String TAG = ScreenCaptureController.class.getSimpleName();
|
|
19
|
+
|
|
20
|
+
private static final int DEFAULT_FPS = 30;
|
|
21
|
+
|
|
22
|
+
private final Intent mediaProjectionPermissionResultData;
|
|
23
|
+
|
|
24
|
+
private final OrientationEventListener orientationListener;
|
|
25
|
+
|
|
26
|
+
private final Context context;
|
|
27
|
+
|
|
28
|
+
public ScreenCaptureController(Context context, int width, int height, Intent mediaProjectionPermissionResultData) {
|
|
29
|
+
super(width, height, DEFAULT_FPS);
|
|
30
|
+
|
|
31
|
+
this.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
|
|
32
|
+
|
|
33
|
+
this.context = context;
|
|
34
|
+
|
|
35
|
+
this.orientationListener = new OrientationEventListener(context) {
|
|
36
|
+
@Override
|
|
37
|
+
public void onOrientationChanged(int orientation) {
|
|
38
|
+
DisplayMetrics displayMetrics = DisplayUtils.getDisplayMetrics((Activity) context);
|
|
39
|
+
final int width = displayMetrics.widthPixels;
|
|
40
|
+
final int height = displayMetrics.heightPixels;
|
|
41
|
+
if (width != ScreenCaptureController.this.actualWidth
|
|
42
|
+
|| height != ScreenCaptureController.this.actualHeight) {
|
|
43
|
+
ScreenCaptureController.this.actualWidth = width;
|
|
44
|
+
ScreenCaptureController.this.actualHeight = height;
|
|
45
|
+
|
|
46
|
+
// Pivot to the executor thread because videoCapturer.changeCaptureFormat runs in the main
|
|
47
|
+
// thread and may deadlock.
|
|
48
|
+
ThreadUtils.runOnExecutor(() -> {
|
|
49
|
+
try {
|
|
50
|
+
videoCapturer.changeCaptureFormat(width, height, DEFAULT_FPS);
|
|
51
|
+
} catch (Exception ex) {
|
|
52
|
+
// We ignore exceptions here. The video capturer runs on its own
|
|
53
|
+
// thread and we cannot synchronize with it.
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
if (this.orientationListener.canDetectOrientation()) {
|
|
61
|
+
this.orientationListener.enable();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@Override
|
|
66
|
+
public String getDeviceId() {
|
|
67
|
+
return "screen-capture";
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@Override
|
|
71
|
+
public void dispose() {
|
|
72
|
+
MediaProjectionService.abort(context);
|
|
73
|
+
super.dispose();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@Override
|
|
77
|
+
protected VideoCapturer createVideoCapturer() {
|
|
78
|
+
VideoCapturer videoCapturer =
|
|
79
|
+
new ScreenCapturerAndroid(mediaProjectionPermissionResultData, new MediaProjection.Callback() {
|
|
80
|
+
@Override
|
|
81
|
+
public void onStop() {
|
|
82
|
+
Log.w(TAG, "Media projection stopped.");
|
|
83
|
+
orientationListener.disable();
|
|
84
|
+
stopCapture();
|
|
85
|
+
|
|
86
|
+
if (capturerEventsListener != null) {
|
|
87
|
+
capturerEventsListener.onCapturerEnded();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
return videoCapturer;
|
|
93
|
+
}
|
|
94
|
+
}
|