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
This commit is contained in:
parent
35a1756502
commit
3a6d4f4268
@ -106,9 +106,6 @@ LocalVideoTrackHandler::LocalVideoTrackHandler(
|
|||||||
VideoTrack* track,
|
VideoTrack* track,
|
||||||
MediaProviderInterface* provider)
|
MediaProviderInterface* provider)
|
||||||
: VideoTrackHandler(track, provider) {
|
: VideoTrackHandler(track, provider) {
|
||||||
// If the Renderer is already set we want to start it.
|
|
||||||
if (video_track_->GetRenderer().get())
|
|
||||||
OnRendererChanged();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalVideoTrackHandler::OnRendererChanged() {
|
void LocalVideoTrackHandler::OnRendererChanged() {
|
||||||
@ -124,6 +121,11 @@ void LocalVideoTrackHandler::OnStateChanged(
|
|||||||
LocalVideoTrack* track = static_cast<LocalVideoTrack*>(video_track_.get());
|
LocalVideoTrack* track = static_cast<LocalVideoTrack*>(video_track_.get());
|
||||||
if (state == VideoTrack::kLive) {
|
if (state == VideoTrack::kLive) {
|
||||||
provider_->SetCaptureDevice(track->ssrc(), track->GetVideoCapture());
|
provider_->SetCaptureDevice(track->ssrc(), track->GetVideoCapture());
|
||||||
|
scoped_refptr<VideoRenderer> renderer(video_track_->GetRenderer());
|
||||||
|
if (renderer.get())
|
||||||
|
provider_->SetLocalRenderer(video_track_->ssrc(), renderer->renderer());
|
||||||
|
else
|
||||||
|
provider_->SetLocalRenderer(video_track_->ssrc(), NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,7 +238,14 @@ void WebRtcSession::SetCaptureDevice(uint32 ssrc,
|
|||||||
VideoCaptureModule* camera) {
|
VideoCaptureModule* camera) {
|
||||||
// should be called from a signaling thread
|
// should be called from a signaling thread
|
||||||
ASSERT(signaling_thread()->IsCurrent());
|
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);
|
video_channel_->SetCaptureDevice(ssrc, camera);
|
||||||
|
|
||||||
|
// Actually associate the video capture module with the ViE channel.
|
||||||
|
channel_manager_->SetVideoOptions("");
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebRtcSession::SetLocalRenderer(uint32 ssrc,
|
void WebRtcSession::SetLocalRenderer(uint32 ssrc,
|
||||||
@ -250,7 +257,10 @@ void WebRtcSession::SetLocalRenderer(uint32 ssrc,
|
|||||||
void WebRtcSession::SetRemoteRenderer(uint32 ssrc,
|
void WebRtcSession::SetRemoteRenderer(uint32 ssrc,
|
||||||
cricket::VideoRenderer* renderer) {
|
cricket::VideoRenderer* renderer) {
|
||||||
ASSERT(signaling_thread()->IsCurrent());
|
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(
|
const cricket::SessionDescription* WebRtcSession::ProvideOffer(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user