Code review fixes.
This commit is contained in:
parent
dd5d263847
commit
166be43f23
@ -651,7 +651,7 @@ class VectorCallActivity : VectorBaseActivity<ActivityCallBinding>(), CallContro
|
|||||||
private fun startScreenSharing(activityResult: ActivityResult) {
|
private fun startScreenSharing(activityResult: ActivityResult) {
|
||||||
val videoCapturer = ScreenCapturerAndroid(activityResult.data, object : MediaProjection.Callback() {
|
val videoCapturer = ScreenCapturerAndroid(activityResult.data, object : MediaProjection.Callback() {
|
||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
Timber.v("User revoked the screen capturing permission")
|
Timber.i("User revoked the screen capturing permission")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
callViewModel.handle(VectorCallViewActions.StartScreenSharing(videoCapturer))
|
callViewModel.handle(VectorCallViewActions.StartScreenSharing(videoCapturer))
|
||||||
|
@ -783,31 +783,43 @@ class WebRtcCall(
|
|||||||
val localMediaStream = factory.createLocalMediaStream(STREAM_ID)
|
val localMediaStream = factory.createLocalMediaStream(STREAM_ID)
|
||||||
val videoSource = factory.createVideoSource(videoCapturer.isScreencast)
|
val videoSource = factory.createVideoSource(videoCapturer.isScreencast)
|
||||||
|
|
||||||
// Start capturing screen
|
startCapturingScreen(videoCapturer, videoSource)
|
||||||
val surfaceTextureHelper = SurfaceTextureHelper.create("CaptureThread", rootEglBase!!.eglBaseContext)
|
|
||||||
videoCapturer.initialize(surfaceTextureHelper, context, videoSource.capturerObserver)
|
|
||||||
videoCapturer.startCapture(currentCaptureFormat.width, currentCaptureFormat.height, currentCaptureFormat.fps)
|
|
||||||
|
|
||||||
// Remove local camera previews
|
removeLocalSurfaceRenderers()
|
||||||
localSurfaceRenderers.forEach { it.get()?.let { localVideoTrack?.removeSink(it) } }
|
|
||||||
|
|
||||||
// Show screen preview locally
|
showScreenLocally(factory, videoSource, localMediaStream)
|
||||||
localVideoTrack = factory.createVideoTrack(VIDEO_TRACK_ID, videoSource).apply { setEnabled(true) }
|
|
||||||
localMediaStream?.addTrack(localVideoTrack)
|
|
||||||
localSurfaceRenderers.forEach { it.get()?.let { localVideoTrack?.addSink(it) } }
|
|
||||||
|
|
||||||
// Remove camera stream
|
videoSender?.let { removeStream(it) }
|
||||||
peerConnection?.removeTrack(videoSender)
|
|
||||||
|
|
||||||
screenSender = peerConnection?.addTrack(localVideoTrack, listOf(STREAM_ID))
|
screenSender = peerConnection?.addTrack(localVideoTrack, listOf(STREAM_ID))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun stopSharingScreen() {
|
fun stopSharingScreen() {
|
||||||
screenSender?.let { peerConnection?.removeTrack(it) }
|
screenSender?.let { removeStream(it) }
|
||||||
peerConnectionFactoryProvider.get()?.let { configureVideoTrack(it) }
|
peerConnectionFactoryProvider.get()?.let { configureVideoTrack(it) }
|
||||||
sessionScope?.launch(dispatcher) { attachViewRenderersInternal() }
|
sessionScope?.launch(dispatcher) { attachViewRenderersInternal() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun removeStream(sender: RtpSender) {
|
||||||
|
peerConnection?.removeTrack(sender)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showScreenLocally(factory: PeerConnectionFactory, videoSource: VideoSource?, localMediaStream: MediaStream?) {
|
||||||
|
localVideoTrack = factory.createVideoTrack(VIDEO_TRACK_ID, videoSource).apply { setEnabled(true) }
|
||||||
|
localMediaStream?.addTrack(localVideoTrack)
|
||||||
|
localSurfaceRenderers.forEach { it.get()?.let { localVideoTrack?.addSink(it) } }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun removeLocalSurfaceRenderers() {
|
||||||
|
localSurfaceRenderers.forEach { it.get()?.let { localVideoTrack?.removeSink(it) } }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun startCapturingScreen(videoCapturer: VideoCapturer, videoSource: VideoSource) {
|
||||||
|
val surfaceTextureHelper = SurfaceTextureHelper.create("CaptureThread", rootEglBase!!.eglBaseContext)
|
||||||
|
videoCapturer.initialize(surfaceTextureHelper, context, videoSource.capturerObserver)
|
||||||
|
videoCapturer.startCapture(currentCaptureFormat.width, currentCaptureFormat.height, currentCaptureFormat.fps)
|
||||||
|
}
|
||||||
|
|
||||||
private suspend fun release() {
|
private suspend fun release() {
|
||||||
listeners.clear()
|
listeners.clear()
|
||||||
mxCall.removeListener(this)
|
mxCall.removeListener(this)
|
||||||
|
Loading…
Reference in New Issue
Block a user