From 88ef6322864b4071df4ed724a3989a9183d92172 Mon Sep 17 00:00:00 2001 From: "pbos@webrtc.org" Date: Tue, 4 Nov 2014 15:29:29 +0000 Subject: [PATCH] Falling back on single-stream on multiple SSRC. Instead of failing, use one stream. Also clamp video min bitrate. R=stefan@webrtc.org BUG=1788 Review URL: https://webrtc-codereview.appspot.com/31949004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@7615 4adac7df-926f-26a2-2b94-8c16560cd09d --- talk/media/webrtc/webrtcvideoengine2.cc | 11 +++++++++-- talk/media/webrtc/webrtcvideoengine2_unittest.cc | 6 +++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc index a87792133f..d79f71d1e4 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 e45ad6d71b..0b857238a7 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)); }