From 3a6d4f4268dd1c9c4f2fbce35461e909461c1405 Mon Sep 17 00:00:00 2001 From: "perkj@webrtc.org" Date: Thu, 6 Oct 2011 16:10:10 +0000 Subject: [PATCH] Fix setting VideoCaptureModule and VideoRenderer for local and remote streams. BUG= TEST= Review URL: http://webrtc-codereview.appspot.com/205002 git-svn-id: http://webrtc.googlecode.com/svn/trunk@701 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../source/talk/app/webrtc_dev/mediastreamhandler.cc | 8 +++++--- .../source/talk/app/webrtc_dev/webrtcsession.cc | 12 +++++++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/third_party_mods/libjingle/source/talk/app/webrtc_dev/mediastreamhandler.cc b/third_party_mods/libjingle/source/talk/app/webrtc_dev/mediastreamhandler.cc index b6931d503b..2dbb8ccd87 100644 --- a/third_party_mods/libjingle/source/talk/app/webrtc_dev/mediastreamhandler.cc +++ b/third_party_mods/libjingle/source/talk/app/webrtc_dev/mediastreamhandler.cc @@ -106,9 +106,6 @@ LocalVideoTrackHandler::LocalVideoTrackHandler( VideoTrack* track, MediaProviderInterface* provider) : VideoTrackHandler(track, provider) { - // If the Renderer is already set we want to start it. - if (video_track_->GetRenderer().get()) - OnRendererChanged(); } void LocalVideoTrackHandler::OnRendererChanged() { @@ -124,6 +121,11 @@ void LocalVideoTrackHandler::OnStateChanged( LocalVideoTrack* track = static_cast(video_track_.get()); if (state == VideoTrack::kLive) { provider_->SetCaptureDevice(track->ssrc(), track->GetVideoCapture()); + scoped_refptr renderer(video_track_->GetRenderer()); + if (renderer.get()) + provider_->SetLocalRenderer(video_track_->ssrc(), renderer->renderer()); + else + provider_->SetLocalRenderer(video_track_->ssrc(), NULL); } } diff --git a/third_party_mods/libjingle/source/talk/app/webrtc_dev/webrtcsession.cc b/third_party_mods/libjingle/source/talk/app/webrtc_dev/webrtcsession.cc index 3bcab1430b..27f3ed675b 100644 --- a/third_party_mods/libjingle/source/talk/app/webrtc_dev/webrtcsession.cc +++ b/third_party_mods/libjingle/source/talk/app/webrtc_dev/webrtcsession.cc @@ -238,7 +238,14 @@ void WebRtcSession::SetCaptureDevice(uint32 ssrc, VideoCaptureModule* camera) { // should be called from a signaling thread ASSERT(signaling_thread()->IsCurrent()); + + // TODO(mallinath): Refactor this when there is support for multiple cameras. + + // Register the the VideoCapture Module. video_channel_->SetCaptureDevice(ssrc, camera); + + // Actually associate the video capture module with the ViE channel. + channel_manager_->SetVideoOptions(""); } void WebRtcSession::SetLocalRenderer(uint32 ssrc, @@ -250,7 +257,10 @@ void WebRtcSession::SetLocalRenderer(uint32 ssrc, void WebRtcSession::SetRemoteRenderer(uint32 ssrc, cricket::VideoRenderer* renderer) { ASSERT(signaling_thread()->IsCurrent()); - video_channel_->SetRenderer(ssrc, renderer); + + //TODO(mallinath): Only the ssrc = 0 is supported at the moment. + // Only one channel. + video_channel_->SetRenderer(0, renderer); } const cricket::SessionDescription* WebRtcSession::ProvideOffer(