diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc index 3b8c7f834..4410e5997 100644 --- a/talk/media/webrtc/webrtcvideoengine2.cc +++ b/talk/media/webrtc/webrtcvideoengine2.cc @@ -246,7 +246,13 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::CreateVideoStreams( codec.framerate != 0 ? codec.framerate : kDefaultVideoMaxFramerate; stream.min_bitrate_bps = kMinVideoBitrate * 1000; - stream.target_bitrate_bps = stream.max_bitrate_bps = kMaxVideoBitrate * 1000; + int max_bitrate_kbps; + if (!codec.GetParam(kCodecParamMaxBitrate, &max_bitrate_kbps) || + max_bitrate_kbps < kMaxVideoBitrate) { + max_bitrate_kbps = kMaxVideoBitrate; + } + + stream.target_bitrate_bps = stream.max_bitrate_bps = max_bitrate_kbps * 1000; int max_qp = kDefaultQpMax; codec.GetParam(kCodecParamMaxQuantization, &max_qp); diff --git a/talk/media/webrtc/webrtcvideoengine2_unittest.cc b/talk/media/webrtc/webrtcvideoengine2_unittest.cc index 23491ce93..d7176eb9e 100644 --- a/talk/media/webrtc/webrtcvideoengine2_unittest.cc +++ b/talk/media/webrtc/webrtcvideoengine2_unittest.cc @@ -1829,6 +1829,13 @@ TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { 200000); } +TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { + SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); + std::vector streams = AddSendStream()->GetVideoStreams(); + ASSERT_EQ(1u, streams.size()); + EXPECT_EQ(10000000, streams[0].max_bitrate_bps); +} + TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithoutBitratesUsesCorrectDefaults) { SetSendCodecsShouldWorkForBitrates(