Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Side by Side Diff: webrtc/media/engine/webrtcvideoengine2_unittest.cc

Issue 1813763005: Updated structures and functions for setting the max bitrate limit to take rtc::Optional<int> Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: More code review feedback Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 912
913 FakeVideoReceiveStream* AddRecvStream(const StreamParams& sp) { 913 FakeVideoReceiveStream* AddRecvStream(const StreamParams& sp) {
914 size_t num_streams = fake_call_->GetVideoReceiveStreams().size(); 914 size_t num_streams = fake_call_->GetVideoReceiveStreams().size();
915 EXPECT_TRUE(channel_->AddRecvStream(sp)); 915 EXPECT_TRUE(channel_->AddRecvStream(sp));
916 std::vector<FakeVideoReceiveStream*> streams = 916 std::vector<FakeVideoReceiveStream*> streams =
917 fake_call_->GetVideoReceiveStreams(); 917 fake_call_->GetVideoReceiveStreams();
918 EXPECT_EQ(num_streams + 1, streams.size()); 918 EXPECT_EQ(num_streams + 1, streams.size());
919 return streams[streams.size() - 1]; 919 return streams[streams.size() - 1];
920 } 920 }
921 921
922 void SetSendCodecsShouldWorkForBitrates(const char* min_bitrate_kbps, 922 void SetSendCodecsShouldWorkForBitrates(
923 int expected_min_bitrate_bps, 923 const char* min_bitrate_kbps,
924 const char* start_bitrate_kbps, 924 int expected_min_bitrate_bps,
925 int expected_start_bitrate_bps, 925 const char* start_bitrate_kbps,
926 const char* max_bitrate_kbps, 926 int expected_start_bitrate_bps,
927 int expected_max_bitrate_bps) { 927 const char* max_bitrate_kbps,
928 rtc::Optional<int> expected_max_bitrate_bps) {
928 auto& codecs = send_parameters_.codecs; 929 auto& codecs = send_parameters_.codecs;
929 codecs.clear(); 930 codecs.clear();
930 codecs.push_back(kVp8Codec); 931 codecs.push_back(kVp8Codec);
931 codecs[0].params[kCodecParamMinBitrate] = min_bitrate_kbps; 932 codecs[0].params[kCodecParamMinBitrate] = min_bitrate_kbps;
932 codecs[0].params[kCodecParamStartBitrate] = start_bitrate_kbps; 933 codecs[0].params[kCodecParamStartBitrate] = start_bitrate_kbps;
933 codecs[0].params[kCodecParamMaxBitrate] = max_bitrate_kbps; 934 codecs[0].params[kCodecParamMaxBitrate] = max_bitrate_kbps;
934 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 935 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
935 936
936 EXPECT_EQ(expected_min_bitrate_bps, 937 EXPECT_EQ(expected_min_bitrate_bps,
937 fake_call_->GetConfig().bitrate_config.min_bitrate_bps); 938 fake_call_->GetConfig().bitrate_config.min_bitrate_bps);
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 fake_call_->GetVideoSendStreams(); 1088 fake_call_->GetVideoSendStreams();
1088 EXPECT_TRUE(streams.size() > 0); 1089 EXPECT_TRUE(streams.size() > 0);
1089 FakeVideoSendStream* stream = streams[streams.size() - 1]; 1090 FakeVideoSendStream* stream = streams[streams.size() - 1];
1090 1091
1091 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig(); 1092 webrtc::VideoEncoderConfig encoder_config = stream->GetEncoderConfig();
1092 EXPECT_EQ(1, encoder_config.streams.size()); 1093 EXPECT_EQ(1, encoder_config.streams.size());
1093 return encoder_config.streams[0].max_bitrate_bps; 1094 return encoder_config.streams[0].max_bitrate_bps;
1094 } 1095 }
1095 1096
1096 void SetAndExpectMaxBitrate(cricket::FakeVideoCapturer& capturer, 1097 void SetAndExpectMaxBitrate(cricket::FakeVideoCapturer& capturer,
1097 int global_max, 1098 rtc::Optional<int> global_max,
1098 int stream_max, 1099 rtc::Optional<int> stream_max,
1099 int expected_encoder_bitrate) { 1100 int expected_encoder_bitrate) {
1100 VideoSendParameters limited_send_params = send_parameters_; 1101 VideoSendParameters limited_send_params = send_parameters_;
1101 limited_send_params.max_bandwidth_bps = global_max; 1102 limited_send_params.max_bitrate_bps = global_max;
1102 EXPECT_TRUE(channel_->SetSendParameters(limited_send_params)); 1103 EXPECT_TRUE(channel_->SetSendParameters(limited_send_params));
1103 webrtc::RtpParameters parameters = channel_->GetRtpParameters(last_ssrc_); 1104 webrtc::RtpParameters parameters = channel_->GetRtpParameters(last_ssrc_);
1104 EXPECT_EQ(1UL, parameters.encodings.size()); 1105 EXPECT_EQ(1UL, parameters.encodings.size());
1105 parameters.encodings[0].max_bitrate_bps = stream_max; 1106 parameters.encodings[0].max_bitrate_bps = stream_max;
1106 EXPECT_TRUE(channel_->SetRtpParameters(last_ssrc_, parameters)); 1107 EXPECT_TRUE(channel_->SetRtpParameters(last_ssrc_, parameters));
1107 // Read back the parameteres and verify they have the correct value 1108 // Read back the parameteres and verify they have the correct value
1108 parameters = channel_->GetRtpParameters(last_ssrc_); 1109 parameters = channel_->GetRtpParameters(last_ssrc_);
1109 EXPECT_EQ(1UL, parameters.encodings.size()); 1110 EXPECT_EQ(1UL, parameters.encodings.size());
1110 EXPECT_EQ(stream_max, parameters.encodings[0].max_bitrate_bps); 1111 EXPECT_EQ(stream_max, parameters.encodings[0].max_bitrate_bps);
1111 // Verify that the new value propagated down to the encoder 1112 // Verify that the new value propagated down to the encoder
(...skipping 1074 matching lines...) Expand 10 before | Expand all | Expand 10 after
2186 parameters.codecs.push_back(kVp8Codec360p); 2187 parameters.codecs.push_back(kVp8Codec360p);
2187 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2188 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2188 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams(); 2189 streams = fake_call_->GetVideoSendStreams()[0]->GetVideoStreams();
2189 EXPECT_EQ(kVp8Codec360p.width, streams[0].width); 2190 EXPECT_EQ(kVp8Codec360p.width, streams[0].width);
2190 EXPECT_EQ(kVp8Codec360p.height, streams[0].height); 2191 EXPECT_EQ(kVp8Codec360p.height, streams[0].height);
2191 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 2192 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL));
2192 } 2193 }
2193 2194
2194 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) { 2195 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithBitrates) {
2195 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", 2196 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200",
2196 200000); 2197 rtc::Optional<int>(200000));
2197 } 2198 }
2198 2199
2199 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) { 2200 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsWithHighMaxBitrate) {
2200 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000", 10000000); 2201 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "10000",
2202 rtc::Optional<int>(10000000));
2201 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams(); 2203 std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams();
2202 ASSERT_EQ(1u, streams.size()); 2204 ASSERT_EQ(1u, streams.size());
2203 EXPECT_EQ(10000000, streams[0].max_bitrate_bps); 2205 EXPECT_EQ(10000000, streams[0].max_bitrate_bps);
2204 } 2206 }
2205 2207
2206 TEST_F(WebRtcVideoChannel2Test, 2208 TEST_F(WebRtcVideoChannel2Test,
2207 SetSendCodecsWithoutBitratesUsesCorrectDefaults) { 2209 SetSendCodecsWithoutBitratesUsesCorrectDefaults) {
2208 SetSendCodecsShouldWorkForBitrates( 2210 SetSendCodecsShouldWorkForBitrates("", 0, "", -1, "", rtc::Optional<int>());
2209 "", 0, "", -1, "", -1);
2210 } 2211 }
2211 2212
2212 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsCapsMinAndStartBitrate) { 2213 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsCapsMinAndStartBitrate) {
2213 SetSendCodecsShouldWorkForBitrates("-1", 0, "-100", -1, "", -1); 2214 SetSendCodecsShouldWorkForBitrates("-1", 0, "-100", -1, "",
2215 rtc::Optional<int>());
2214 } 2216 }
2215 2217
2216 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectsMaxLessThanMinBitrate) { 2218 TEST_F(WebRtcVideoChannel2Test, SetSendCodecsRejectsMaxLessThanMinBitrate) {
2217 send_parameters_.codecs[0].params[kCodecParamMinBitrate] = "300"; 2219 send_parameters_.codecs[0].params[kCodecParamMinBitrate] = "300";
2218 send_parameters_.codecs[0].params[kCodecParamMaxBitrate] = "200"; 2220 send_parameters_.codecs[0].params[kCodecParamMaxBitrate] = "200";
2219 EXPECT_FALSE(channel_->SetSendParameters(send_parameters_)); 2221 EXPECT_FALSE(channel_->SetSendParameters(send_parameters_));
2220 } 2222 }
2221 2223
2222 TEST_F(WebRtcVideoChannel2Test, 2224 TEST_F(WebRtcVideoChannel2Test,
2223 SetMaxSendBandwidthShouldPreserveOtherBitrates) { 2225 SetMaxSendBandwidthShouldPreserveOtherBitrates) {
2224 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200", 2226 SetSendCodecsShouldWorkForBitrates("100", 100000, "150", 150000, "200",
2225 200000); 2227 rtc::Optional<int>(200000));
2226 send_parameters_.max_bandwidth_bps = 300000; 2228 send_parameters_.max_bitrate_bps = rtc::Optional<int>(300000);
2227 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 2229 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2228 EXPECT_EQ(100000, fake_call_->GetConfig().bitrate_config.min_bitrate_bps) 2230 EXPECT_EQ(100000, fake_call_->GetConfig().bitrate_config.min_bitrate_bps)
2229 << "Setting max bitrate should keep previous min bitrate."; 2231 << "Setting max bitrate should keep previous min bitrate.";
2230 EXPECT_EQ(-1, fake_call_->GetConfig().bitrate_config.start_bitrate_bps) 2232 EXPECT_EQ(-1, fake_call_->GetConfig().bitrate_config.start_bitrate_bps)
2231 << "Setting max bitrate should not reset start bitrate."; 2233 << "Setting max bitrate should not reset start bitrate.";
2232 EXPECT_EQ(300000, fake_call_->GetConfig().bitrate_config.max_bitrate_bps); 2234 EXPECT_EQ(rtc::Optional<int>(300000),
2235 fake_call_->GetConfig().bitrate_config.max_bitrate_bps);
2233 } 2236 }
2234 2237
2235 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBandwidthShouldBeRemovable) { 2238 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBandwidthShouldBeRemovable) {
2236 send_parameters_.max_bandwidth_bps = 300000; 2239 send_parameters_.max_bitrate_bps = rtc::Optional<int>(300000);
2237 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 2240 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2238 EXPECT_EQ(300000, fake_call_->GetConfig().bitrate_config.max_bitrate_bps); 2241 EXPECT_EQ(rtc::Optional<int>(300000),
2239 // <= 0 means disable (infinite) max bitrate. 2242 fake_call_->GetConfig().bitrate_config.max_bitrate_bps);
2240 send_parameters_.max_bandwidth_bps = 0; 2243 // <not set> means disable (infinite) max bitrate.
2244 send_parameters_.max_bitrate_bps = rtc::Optional<int>();
2241 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 2245 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2242 EXPECT_EQ(-1, fake_call_->GetConfig().bitrate_config.max_bitrate_bps) 2246 EXPECT_EQ(rtc::Optional<int>(),
2247 fake_call_->GetConfig().bitrate_config.max_bitrate_bps)
2243 << "Setting zero max bitrate did not reset start bitrate."; 2248 << "Setting zero max bitrate did not reset start bitrate.";
2244 } 2249 }
2245 2250
2246 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) { 2251 TEST_F(WebRtcVideoChannel2Test, SetMaxSendBitrateCanIncreaseSenderBitrate) {
2247 cricket::VideoSendParameters parameters; 2252 cricket::VideoSendParameters parameters;
2248 parameters.codecs.push_back(kVp8Codec720p); 2253 parameters.codecs.push_back(kVp8Codec720p);
2249 ASSERT_TRUE(channel_->SetSendParameters(parameters)); 2254 ASSERT_TRUE(channel_->SetSendParameters(parameters));
2250 channel_->SetSend(true); 2255 channel_->SetSend(true);
2251 2256
2252 FakeVideoSendStream* stream = AddSendStream(); 2257 FakeVideoSendStream* stream = AddSendStream();
2253 2258
2254 cricket::FakeVideoCapturer capturer; 2259 cricket::FakeVideoCapturer capturer;
2255 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 2260 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer));
2256 EXPECT_EQ(cricket::CS_RUNNING, 2261 EXPECT_EQ(cricket::CS_RUNNING,
2257 capturer.Start(capturer.GetSupportedFormats()->front())); 2262 capturer.Start(capturer.GetSupportedFormats()->front()));
2258 2263
2259 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2264 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2260 int initial_max_bitrate_bps = streams[0].max_bitrate_bps; 2265 int initial_max_bitrate_bps = streams[0].max_bitrate_bps;
2261 EXPECT_GT(initial_max_bitrate_bps, 0); 2266 EXPECT_GT(initial_max_bitrate_bps, 0);
2262 2267
2263 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2268 parameters.max_bitrate_bps = rtc::Optional<int>(initial_max_bitrate_bps * 2);
2264 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2269 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2265 // Insert a frame to update the encoder config. 2270 // Insert a frame to update the encoder config.
2266 EXPECT_TRUE(capturer.CaptureFrame()); 2271 EXPECT_TRUE(capturer.CaptureFrame());
2267 streams = stream->GetVideoStreams(); 2272 streams = stream->GetVideoStreams();
2268 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps); 2273 EXPECT_EQ(initial_max_bitrate_bps * 2, streams[0].max_bitrate_bps);
2269 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr)); 2274 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, nullptr));
2270 } 2275 }
2271 2276
2272 TEST_F(WebRtcVideoChannel2Test, 2277 TEST_F(WebRtcVideoChannel2Test,
2273 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) { 2278 SetMaxSendBitrateCanIncreaseSimulcastSenderBitrate) {
(...skipping 11 matching lines...) Expand all
2285 EXPECT_EQ(cricket::CS_RUNNING, 2290 EXPECT_EQ(cricket::CS_RUNNING,
2286 capturer.Start(capturer.GetSupportedFormats()->front())); 2291 capturer.Start(capturer.GetSupportedFormats()->front()));
2287 EXPECT_TRUE(capturer.CaptureFrame()); 2292 EXPECT_TRUE(capturer.CaptureFrame());
2288 2293
2289 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams(); 2294 std::vector<webrtc::VideoStream> streams = stream->GetVideoStreams();
2290 ASSERT_GT(streams.size(), 1u) 2295 ASSERT_GT(streams.size(), 1u)
2291 << "Without simulcast this test doesn't make sense."; 2296 << "Without simulcast this test doesn't make sense.";
2292 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2297 int initial_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2293 EXPECT_GT(initial_max_bitrate_bps, 0); 2298 EXPECT_GT(initial_max_bitrate_bps, 0);
2294 2299
2295 parameters.max_bandwidth_bps = initial_max_bitrate_bps * 2; 2300 parameters.max_bitrate_bps = rtc::Optional<int>(initial_max_bitrate_bps * 2);
2296 EXPECT_TRUE(channel_->SetSendParameters(parameters)); 2301 EXPECT_TRUE(channel_->SetSendParameters(parameters));
2297 // Insert a frame to update the encoder config. 2302 // Insert a frame to update the encoder config.
2298 EXPECT_TRUE(capturer.CaptureFrame()); 2303 EXPECT_TRUE(capturer.CaptureFrame());
2299 streams = stream->GetVideoStreams(); 2304 streams = stream->GetVideoStreams();
2300 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams); 2305 int increased_max_bitrate_bps = GetTotalMaxBitrateBps(streams);
2301 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps); 2306 EXPECT_EQ(initial_max_bitrate_bps * 2, increased_max_bitrate_bps);
2302 2307
2303 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], nullptr)); 2308 EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], nullptr));
2304 } 2309 }
2305 2310
(...skipping 832 matching lines...) Expand 10 before | Expand all | Expand 10 after
3138 } 3143 }
3139 3144
3140 TEST_F(WebRtcVideoChannel2Test, UlpfecPacketDoesntCreateUnsignalledStream) { 3145 TEST_F(WebRtcVideoChannel2Test, UlpfecPacketDoesntCreateUnsignalledStream) {
3141 TestReceiveUnsignalledSsrcPacket(kDefaultUlpfecType, false); 3146 TestReceiveUnsignalledSsrcPacket(kDefaultUlpfecType, false);
3142 } 3147 }
3143 3148
3144 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) { 3149 TEST_F(WebRtcVideoChannel2Test, RedRtxPacketDoesntCreateUnsignalledStream) {
3145 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false); 3150 TestReceiveUnsignalledSsrcPacket(kRedRtxPayloadType, false);
3146 } 3151 }
3147 3152
3148 TEST_F(WebRtcVideoChannel2Test, CanSentMaxBitrateForExistingStream) { 3153 TEST_F(WebRtcVideoChannel2Test, CanSetMaxBitrateForExistingStream) {
3149 AddSendStream(); 3154 AddSendStream();
3150 3155
3151 cricket::FakeVideoCapturer capturer; 3156 cricket::FakeVideoCapturer capturer;
3152 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer)); 3157 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, &capturer));
3153 cricket::VideoFormat capture_format_hd = 3158 cricket::VideoFormat capture_format_hd =
3154 capturer.GetSupportedFormats()->front(); 3159 capturer.GetSupportedFormats()->front();
3155 EXPECT_EQ(1280, capture_format_hd.width); 3160 EXPECT_EQ(1280, capture_format_hd.width);
3156 EXPECT_EQ(720, capture_format_hd.height); 3161 EXPECT_EQ(720, capture_format_hd.height);
3157 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd)); 3162 EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(capture_format_hd));
3158 EXPECT_TRUE(channel_->SetSend(true)); 3163 EXPECT_TRUE(channel_->SetSend(true));
3159 3164
3160 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer); 3165 int default_encoder_bitrate = GetMaxEncoderBitrate(capturer);
3161 EXPECT_TRUE(default_encoder_bitrate > 1000); 3166 EXPECT_TRUE(default_encoder_bitrate > 1000);
3162 3167
3163 // TODO(skvlad): Resolve the inconsistency between the interpretation 3168 SetAndExpectMaxBitrate(capturer, rtc::Optional<int>(1000),
3164 // of the global bitrate limit for audio and video: 3169 rtc::Optional<int>(), 1000);
3165 // - Audio: max_bandwidth_bps = 0 - fail the operation, 3170 SetAndExpectMaxBitrate(capturer, rtc::Optional<int>(1000),
3166 // max_bandwidth_bps = -1 - remove the bandwidth limit 3171 rtc::Optional<int>(800), 800);
3167 // - Video: max_bandwidth_bps = 0 - remove the bandwidth limit, 3172 SetAndExpectMaxBitrate(capturer, rtc::Optional<int>(600),
3168 // max_bandwidth_bps = -1 - do not change the previously set 3173 rtc::Optional<int>(800), 600);
3169 // limit. 3174 SetAndExpectMaxBitrate(capturer, rtc::Optional<int>(),
3170 3175 rtc::Optional<int>(800), 800);
3171 SetAndExpectMaxBitrate(capturer, 1000, 0, 1000); 3176 SetAndExpectMaxBitrate(capturer, rtc::Optional<int>(), rtc::Optional<int>(),
3172 SetAndExpectMaxBitrate(capturer, 1000, 800, 800); 3177 default_encoder_bitrate);
3173 SetAndExpectMaxBitrate(capturer, 600, 800, 600);
3174 SetAndExpectMaxBitrate(capturer, 0, 800, 800);
3175 SetAndExpectMaxBitrate(capturer, 0, 0, default_encoder_bitrate);
3176 3178
3177 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); 3179 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL));
3178 } 3180 }
3179 3181
3182 TEST_F(WebRtcVideoChannel2Test, CannotSetNegativeOrZeroMaxBitrate) {
3183 AddSendStream();
3184 webrtc::RtpParameters bad_parameters;
3185 bad_parameters.encodings.push_back(webrtc::RtpEncodingParameters());
3186
3187 bad_parameters.encodings[0].max_bitrate_bps = rtc::Optional<int>(0);
3188 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, bad_parameters));
3189 bad_parameters.encodings[0].max_bitrate_bps = rtc::Optional<int>(-1);
3190 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, bad_parameters));
3191 }
3192
3180 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) { 3193 TEST_F(WebRtcVideoChannel2Test, CannotSetMaxBitrateForNonexistentStream) {
3181 webrtc::RtpParameters nonexistent_parameters = 3194 webrtc::RtpParameters nonexistent_parameters =
3182 channel_->GetRtpParameters(last_ssrc_); 3195 channel_->GetRtpParameters(last_ssrc_);
3183 EXPECT_EQ(0, nonexistent_parameters.encodings.size()); 3196 EXPECT_EQ(0, nonexistent_parameters.encodings.size());
3184 3197
3185 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters()); 3198 nonexistent_parameters.encodings.push_back(webrtc::RtpEncodingParameters());
3186 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters)); 3199 EXPECT_FALSE(channel_->SetRtpParameters(last_ssrc_, nonexistent_parameters));
3187 } 3200 }
3188 3201
3189 TEST_F(WebRtcVideoChannel2Test, 3202 TEST_F(WebRtcVideoChannel2Test,
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
3290 codec.width, codec.height, 3303 codec.width, codec.height,
3291 cricket::VideoFormat::FpsToInterval(30), 3304 cricket::VideoFormat::FpsToInterval(30),
3292 cricket::FOURCC_I420))); 3305 cricket::FOURCC_I420)));
3293 channel_->SetSend(true); 3306 channel_->SetSend(true);
3294 EXPECT_TRUE(capturer.CaptureFrame()); 3307 EXPECT_TRUE(capturer.CaptureFrame());
3295 3308
3296 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams(); 3309 std::vector<webrtc::VideoStream> video_streams = stream->GetVideoStreams();
3297 ASSERT_EQ(expected_num_streams, video_streams.size()); 3310 ASSERT_EQ(expected_num_streams, video_streams.size());
3298 3311
3299 std::vector<webrtc::VideoStream> expected_streams = GetSimulcastConfig( 3312 std::vector<webrtc::VideoStream> expected_streams = GetSimulcastConfig(
3300 num_configured_streams, codec.width, codec.height, 0, kDefaultQpMax, 3313 num_configured_streams, codec.width, codec.height, rtc::Optional<int>(),
3314 kDefaultQpMax,
3301 codec.framerate != 0 ? codec.framerate : kDefaultFramerate); 3315 codec.framerate != 0 ? codec.framerate : kDefaultFramerate);
3302 3316
3303 ASSERT_EQ(expected_streams.size(), video_streams.size()); 3317 ASSERT_EQ(expected_streams.size(), video_streams.size());
3304 3318
3305 size_t num_streams = video_streams.size(); 3319 size_t num_streams = video_streams.size();
3306 int total_max_bitrate_bps = 0; 3320 int total_max_bitrate_bps = 0;
3307 for (size_t i = 0; i < num_streams; ++i) { 3321 for (size_t i = 0; i < num_streams; ++i) {
3308 EXPECT_EQ(expected_streams[i].width, video_streams[i].width); 3322 EXPECT_EQ(expected_streams[i].width, video_streams[i].width);
3309 EXPECT_EQ(expected_streams[i].height, video_streams[i].height); 3323 EXPECT_EQ(expected_streams[i].height, video_streams[i].height);
3310 3324
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
3392 } 3406 }
3393 3407
3394 // Test that we normalize send codec format size in simulcast. 3408 // Test that we normalize send codec format size in simulcast.
3395 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { 3409 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
3396 cricket::VideoCodec codec(kVp8Codec270p); 3410 cricket::VideoCodec codec(kVp8Codec270p);
3397 codec.width += 1; 3411 codec.width += 1;
3398 codec.height += 1; 3412 codec.height += 1;
3399 VerifySimulcastSettings(codec, 2, 2); 3413 VerifySimulcastSettings(codec, 2, 2);
3400 } 3414 }
3401 } // namespace cricket 3415 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698