From cddd17c0f89cfaa9d2f21118ae90b45dae3b4aee Mon Sep 17 00:00:00 2001 From: "pbos@webrtc.org" Date: Tue, 16 Sep 2014 16:33:13 +0000 Subject: [PATCH] Recreate VideoStreams when setting resolution. Instead of just changing resolution on the last stream streams are reallocated to make sure that all streams are updated to match the new input resolution. R=pthatcher@webrtc.org BUG=1788 Review URL: https://webrtc-codereview.appspot.com/29469004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@7197 4adac7df-926f-26a2-2b94-8c16560cd09d --- talk/media/webrtc/webrtcvideoengine2.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc index 44c1bf8ad..b7b472261 100644 --- a/talk/media/webrtc/webrtcvideoengine2.cc +++ b/talk/media/webrtc/webrtcvideoengine2.cc @@ -1563,15 +1563,19 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::SetDimensions( return; } - // TODO(pbos): Fix me, this only affects the last stream! - parameters_.video_streams.back().width = width; - parameters_.video_streams.back().height = height; - void* encoder_settings = encoder_factory_->CreateVideoEncoderSettings( codec_settings.codec, parameters_.options); + VideoCodec codec = codec_settings.codec; + codec.width = width; + codec.height = height; + std::vector video_streams = + encoder_factory_->CreateVideoStreams(codec, + parameters_.options, + parameters_.config.rtp.ssrcs.size()); + bool stream_reconfigured = stream_->ReconfigureVideoEncoder( - parameters_.video_streams, encoder_settings); + video_streams, encoder_settings); encoder_factory_->DestroyVideoEncoderSettings(codec_settings.codec, encoder_settings); @@ -1581,6 +1585,8 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::SetDimensions( << width << "x" << height; return; } + + parameters_.video_streams = video_streams; } void WebRtcVideoChannel2::WebRtcVideoSendStream::Start() {