diff options
author | pbos@webrtc.org <pbos@webrtc.org> | 2014-09-16 16:33:13 +0000 |
---|---|---|
committer | pbos@webrtc.org <pbos@webrtc.org> | 2014-09-16 16:33:13 +0000 |
commit | 43d397ff84588095360214c8dcda7254028b7456 (patch) | |
tree | 788512765ef3711247957f85ac7a347d01b4d198 | |
parent | 3d2e4a6f9fdf8d91972d614d5174b2a6d65e2d2e (diff) | |
download | talk-43d397ff84588095360214c8dcda7254028b7456.tar.gz |
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/talk@7197 4adac7df-926f-26a2-2b94-8c16560cd09d
-rw-r--r-- | media/webrtc/webrtcvideoengine2.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/media/webrtc/webrtcvideoengine2.cc b/media/webrtc/webrtcvideoengine2.cc index 44c1bf8..b7b4722 100644 --- a/media/webrtc/webrtcvideoengine2.cc +++ b/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<webrtc::VideoStream> 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() { |