private void CloseInternal() { if (_factory != null && _parameters.AecDump) { _factory.StopAecDump(); } _logger.Debug(TAG, "Closing peer connection."); if (_rtcEventLog != null) { // RtcEventLog should stop before the peer connection is disposed. _rtcEventLog.Stop(); _rtcEventLog = null; } _logger.Debug(TAG, "Closing audio source."); if (_audioSource != null) { _audioSource.Dispose(); _audioSource = null; } _logger.Debug(TAG, "Stopping capturer."); if (_videoCapturer != null) { _videoCapturer.StopCapture(); _videoCapturer.Dispose(); _videoCapturerStopped = true; _videoCapturer = null; } _logger.Debug(TAG, "Closing video source."); if (_videoSource != null) { _videoSource.Dispose(); _videoSource = null; } _localRenderer = null; _remoteRenderer = null; _logger.Debug(TAG, "Closing peer connection factory."); if (_factory != null) { _factory.Dispose(); _factory = null; } _logger.Debug(TAG, "Closing peer connection done."); _peerConnectionEvents.OnPeerConnectionClosed(); PeerConnectionFactory.StopInternalTracingCapture(); PeerConnectionFactory.ShutdownInternalTracer(); _executor.Release(); }
private IVideoTrack CreateVideoTrack() { _videoSource = _factory.CreateVideoSource(_parameters.IsScreencast); _videoCapturer = _peerConnectionEvents.CreateVideoCapturer(_factory, _videoSource); _videoCapturer.StartCapture(_videoWidth, _videoHeight, _fps); _localVideoTrack = _factory.CreateVideoTrack(VideoTrackId, _videoSource); _localVideoTrack.IsEnabled = _renderVideo; _localVideoTrack.AddRenderer(_localRenderer); return(_localVideoTrack); }
void Peer_OnAddLocalVideoTrack(IVideoCapturer capturer, IMediaStreamTrack track) { Logger.Debug("MediaChannel", "@peer:local_video_track:add"); if (localVideoTrack == null) { localVideoTrack = track; } RunOnUiThread(() => { OnAddLocalVideoTrack?.Invoke(capturer, track); }); }
private VideoTrack CreateVideoTrack(IVideoCapturer videoCapturer) { _surfaceTextureHelper = SurfaceTextureHelper.Create("CaptureThread", _eglBase.EglBaseContext); _videoSource = _factory.CreateVideoSource(true); videoCapturer.Initialize(_surfaceTextureHelper, _context, _videoSource.CapturerObserver); videoCapturer.StartCapture(VideoWidth, VideoHeight, 30); _localVideoTrack = _factory.CreateVideoTrack("ARDAMSv0", _videoSource); _localVideoTrack.SetEnabled(true); _localVideoTrack.AddSink(_localVideoSink); return(_localVideoTrack); }
void Channel_OnAddLocalVideoTrack( IVideoCapturer capturer, IMediaStreamTrack track) { Sora.Logger.Debug("ViewModel", "Channel_OnAddLocalVideo"); if (localVideoTrack != null) { Debug.WriteLine("local video track already exists"); return; } localVideoTrack = track; localVideoTrack.Enabled = true; localVideoTrack.Element = MediaElementMaker.Bind(LocalVideoView); }
public void CreatePeerConnection(IVideoSink localVideoSink, IVideoSink remoteVideoSink, IVideoCapturer videoCapturer) { _localVideoSink = localVideoSink; _removeVideoSink = remoteVideoSink; _videoCapturer = videoCapturer; Executor.Execute(new Runnable(() => { try { CreateMediaConstraintsInternal(); CreatePeerConnectionInternal(); } catch (Exception ex) { Debug.WriteLine($"Failed to create peer connection:{ex.Message}"); } })); }
public PlatformVideoCapturer(Context context, VideoSource videoSource, IVideoCapturer videoCapturer, IEglBaseContext eglBaseContext) : base(videoCapturer) { _videoCapturer = videoCapturer; _surfaceTextureHelper = SurfaceTextureHelper.Create("VIDEO CAPTURE THREAD", eglBaseContext); _videoCapturer.Initialize(_surfaceTextureHelper, context, videoSource.CapturerObserver); }