diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc index a87792133..d79f71d1e 100644 --- a/talk/media/webrtc/webrtcvideoengine2.cc +++ b/talk/media/webrtc/webrtcvideoengine2.cc @@ -249,8 +249,9 @@ std::vector WebRtcVideoEncoderFactory2::CreateVideoStreams( const VideoOptions& options, size_t num_streams) { if (num_streams != 1) { - LOG(LS_ERROR) << "Unsupported number of streams: " << num_streams; - return std::vector(); + LOG(LS_WARNING) << "Unsupported number of streams (" << num_streams + << "), falling back to one."; + num_streams = 1; } webrtc::VideoStream stream; @@ -261,6 +262,12 @@ std::vector WebRtcVideoEncoderFactory2::CreateVideoStreams( int min_bitrate = kMinVideoBitrate; codec.GetParam(kCodecParamMinBitrate, &min_bitrate); + // Clamp the min video bitrate, this is set from JavaScript directly and needs + // to be sanitized. + if (min_bitrate < kMinVideoBitrate) { + min_bitrate = kMinVideoBitrate; + } + int max_bitrate = kMaxVideoBitrate; codec.GetParam(kCodecParamMaxBitrate, &max_bitrate); stream.min_bitrate_bps = min_bitrate * 1000; diff --git a/talk/media/webrtc/webrtcvideoengine2_unittest.cc b/talk/media/webrtc/webrtcvideoengine2_unittest.cc index e45ad6d71..0b857238a 100644 --- a/talk/media/webrtc/webrtcvideoengine2_unittest.cc +++ b/talk/media/webrtc/webrtcvideoengine2_unittest.cc @@ -1634,13 +1634,13 @@ TEST_F(WebRtcVideoChannel2Test, SetSendCodecsChangesExistingStreams) { } TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithMinMaxBitrate) { - SetSendCodecsShouldWorkForBitrates("10", "20"); + SetSendCodecsShouldWorkForBitrates("100", "200"); } TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectsMaxLessThanMinBitrate) { std::vector video_codecs = engine_.codecs(); - video_codecs[0].params[kCodecParamMinBitrate] = "30"; - video_codecs[0].params[kCodecParamMaxBitrate] = "20"; + video_codecs[0].params[kCodecParamMinBitrate] = "300"; + video_codecs[0].params[kCodecParamMaxBitrate] = "200"; EXPECT_FALSE(channel_->SetSendCodecs(video_codecs)); }