Index: webrtc/media/engine/webrtcvideoengine2_unittest.cc |
diff --git a/webrtc/media/engine/webrtcvideoengine2_unittest.cc b/webrtc/media/engine/webrtcvideoengine2_unittest.cc |
index b202207f2133a3a75972949f2a47ec019066ed0d..0a04fc78caf2e2afe4ca7e5eacad9757456bad7d 100644 |
--- a/webrtc/media/engine/webrtcvideoengine2_unittest.cc |
+++ b/webrtc/media/engine/webrtcvideoengine2_unittest.cc |
@@ -2390,6 +2390,43 @@ TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectsMaxLessThanMinBitrate) { |
EXPECT_FALSE(channel_->SetSendParameters(send_parameters_)); |
} |
+// Test that when both the codec-specific bitrate params and max_bandwidth_bps |
+// are present in the same send parameters, the settings are combined correctly. |
+TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitratesAndMaxSendBandwidth) { |
+ send_parameters_.codecs[0].params[kCodecParamMinBitrate] = "100"; |
+ send_parameters_.codecs[0].params[kCodecParamStartBitrate] = "200"; |
+ send_parameters_.codecs[0].params[kCodecParamMaxBitrate] = "300"; |
+ send_parameters_.max_bandwidth_bps = 400000; |
+ EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
+ EXPECT_EQ(100000, fake_call_->GetConfig().bitrate_config.min_bitrate_bps); |
+ EXPECT_EQ(200000, fake_call_->GetConfig().bitrate_config.start_bitrate_bps); |
+ // We expect max_bandwidth_bps to take priority, if set. |
+ EXPECT_EQ(400000, fake_call_->GetConfig().bitrate_config.max_bitrate_bps); |
+ |
+ // Decrease max_bandwidth_bps. |
+ send_parameters_.max_bandwidth_bps = 350000; |
+ EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
+ EXPECT_EQ(100000, fake_call_->GetConfig().bitrate_config.min_bitrate_bps); |
+ // Since the codec isn't changing, start_bitrate_bps should be -1. |
+ EXPECT_EQ(-1, fake_call_->GetConfig().bitrate_config.start_bitrate_bps); |
+ EXPECT_EQ(350000, fake_call_->GetConfig().bitrate_config.max_bitrate_bps); |
+ |
+ // Now try again with the values flipped around. |
+ send_parameters_.codecs[0].params[kCodecParamMaxBitrate] = "400"; |
+ send_parameters_.max_bandwidth_bps = 300000; |
+ EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
+ EXPECT_EQ(100000, fake_call_->GetConfig().bitrate_config.min_bitrate_bps); |
+ EXPECT_EQ(200000, fake_call_->GetConfig().bitrate_config.start_bitrate_bps); |
+ EXPECT_EQ(300000, fake_call_->GetConfig().bitrate_config.max_bitrate_bps); |
+ |
+ // If we change the codec max, max_bandwidth_bps should still apply. |
+ send_parameters_.codecs[0].params[kCodecParamMaxBitrate] = "350"; |
+ EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
+ EXPECT_EQ(100000, fake_call_->GetConfig().bitrate_config.min_bitrate_bps); |
+ EXPECT_EQ(200000, fake_call_->GetConfig().bitrate_config.start_bitrate_bps); |
+ EXPECT_EQ(300000, fake_call_->GetConfig().bitrate_config.max_bitrate_bps); |
+} |
+ |
TEST_F(WebRtcVideoChannel2Test, |
SetMaxSendBandwidthShouldPreserveOtherBitrates) { |
SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", |