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

Side by Side Diff: webrtc/video/end_to_end_tests.cc

Issue 2250123002: Reland of Add task queue to Call. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased Created 4 years, 3 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
« no previous file with comments | « webrtc/video/encoder_state_feedback_unittest.cc ('k') | webrtc/video/overuse_frame_detector.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 #include <algorithm> 10 #include <algorithm>
(...skipping 1266 matching lines...) Expand 10 before | Expand all | Expand 10 after
1277 encoder_config.streams = test::CreateVideoStreams(1); 1277 encoder_config.streams = test::CreateVideoStreams(1);
1278 VideoStream* stream = &encoder_config.streams[0]; 1278 VideoStream* stream = &encoder_config.streams[0];
1279 stream->width = width; 1279 stream->width = width;
1280 stream->height = height; 1280 stream->height = height;
1281 stream->max_framerate = 5; 1281 stream->max_framerate = 5;
1282 stream->min_bitrate_bps = stream->target_bitrate_bps = 1282 stream->min_bitrate_bps = stream->target_bitrate_bps =
1283 stream->max_bitrate_bps = 100000; 1283 stream->max_bitrate_bps = 100000;
1284 1284
1285 UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]); 1285 UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]);
1286 1286
1287 send_streams[i] = 1287 send_streams[i] = sender_call->CreateVideoSendStream(
1288 sender_call->CreateVideoSendStream(send_config, encoder_config); 1288 send_config.Copy(), encoder_config.Copy());
1289 send_streams[i]->Start(); 1289 send_streams[i]->Start();
1290 1290
1291 VideoReceiveStream::Config receive_config(receiver_transport.get()); 1291 VideoReceiveStream::Config receive_config(receiver_transport.get());
1292 receive_config.rtp.remote_ssrc = ssrc; 1292 receive_config.rtp.remote_ssrc = ssrc;
1293 receive_config.rtp.local_ssrc = test::CallTest::kReceiverLocalVideoSsrc; 1293 receive_config.rtp.local_ssrc = test::CallTest::kReceiverLocalVideoSsrc;
1294 VideoReceiveStream::Decoder decoder = 1294 VideoReceiveStream::Decoder decoder =
1295 test::CreateMatchingDecoder(send_config.encoder_settings); 1295 test::CreateMatchingDecoder(send_config.encoder_settings);
1296 allocated_decoders.push_back( 1296 allocated_decoders.push_back(
1297 std::unique_ptr<VideoDecoder>(decoder.decoder)); 1297 std::unique_ptr<VideoDecoder>(decoder.decoder));
1298 receive_config.decoders.push_back(decoder); 1298 receive_config.decoders.push_back(decoder);
(...skipping 1183 matching lines...) Expand 10 before | Expand all | Expand 10 after
2482 VideoEncoderConfig* encoder_config) override { 2482 VideoEncoderConfig* encoder_config) override {
2483 if (num_ssrcs_ > 1) { 2483 if (num_ssrcs_ > 1) {
2484 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. 2484 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
2485 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { 2485 for (size_t i = 0; i < encoder_config->streams.size(); ++i) {
2486 encoder_config->streams[i].min_bitrate_bps = 10000; 2486 encoder_config->streams[i].min_bitrate_bps = 10000;
2487 encoder_config->streams[i].target_bitrate_bps = 15000; 2487 encoder_config->streams[i].target_bitrate_bps = 15000;
2488 encoder_config->streams[i].max_bitrate_bps = 20000; 2488 encoder_config->streams[i].max_bitrate_bps = 20000;
2489 } 2489 }
2490 } 2490 }
2491 2491
2492 video_encoder_config_all_streams_ = *encoder_config; 2492 video_encoder_config_all_streams_ = encoder_config->Copy();
2493 if (send_single_ssrc_first_) 2493 if (send_single_ssrc_first_)
2494 encoder_config->streams.resize(1); 2494 encoder_config->streams.resize(1);
2495 } 2495 }
2496 2496
2497 void OnVideoStreamsCreated( 2497 void OnVideoStreamsCreated(
2498 VideoSendStream* send_stream, 2498 VideoSendStream* send_stream,
2499 const std::vector<VideoReceiveStream*>& receive_streams) override { 2499 const std::vector<VideoReceiveStream*>& receive_streams) override {
2500 send_stream_ = send_stream; 2500 send_stream_ = send_stream;
2501 } 2501 }
2502 2502
2503 void PerformTest() override { 2503 void PerformTest() override {
2504 EXPECT_TRUE(Wait()) << "Timed out while waiting for " 2504 EXPECT_TRUE(Wait()) << "Timed out while waiting for "
2505 << (send_single_ssrc_first_ ? "first SSRC." 2505 << (send_single_ssrc_first_ ? "first SSRC."
2506 : "SSRCs."); 2506 : "SSRCs.");
2507 2507
2508 if (send_single_ssrc_first_) { 2508 if (send_single_ssrc_first_) {
2509 // Set full simulcast and continue with the rest of the SSRCs. 2509 // Set full simulcast and continue with the rest of the SSRCs.
2510 send_stream_->ReconfigureVideoEncoder( 2510 send_stream_->ReconfigureVideoEncoder(
2511 video_encoder_config_all_streams_); 2511 std::move(video_encoder_config_all_streams_));
2512 EXPECT_TRUE(Wait()) << "Timed out while waiting on additional SSRCs."; 2512 EXPECT_TRUE(Wait()) << "Timed out while waiting on additional SSRCs.";
2513 } 2513 }
2514 } 2514 }
2515 2515
2516 private: 2516 private:
2517 std::map<uint32_t, bool> valid_ssrcs_; 2517 std::map<uint32_t, bool> valid_ssrcs_;
2518 std::map<uint32_t, bool> is_observed_; 2518 std::map<uint32_t, bool> is_observed_;
2519 2519
2520 const size_t num_ssrcs_; 2520 const size_t num_ssrcs_;
2521 const bool send_single_ssrc_first_; 2521 const bool send_single_ssrc_first_;
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after
3196 3196
3197 // Lower bitrates so that all streams send initially. 3197 // Lower bitrates so that all streams send initially.
3198 for (size_t i = 0; i < video_encoder_config_.streams.size(); ++i) { 3198 for (size_t i = 0; i < video_encoder_config_.streams.size(); ++i) {
3199 video_encoder_config_.streams[i].min_bitrate_bps = 10000; 3199 video_encoder_config_.streams[i].min_bitrate_bps = 10000;
3200 video_encoder_config_.streams[i].target_bitrate_bps = 15000; 3200 video_encoder_config_.streams[i].target_bitrate_bps = 15000;
3201 video_encoder_config_.streams[i].max_bitrate_bps = 20000; 3201 video_encoder_config_.streams[i].max_bitrate_bps = 20000;
3202 } 3202 }
3203 3203
3204 // Use the same total bitrates when sending a single stream to avoid lowering 3204 // Use the same total bitrates when sending a single stream to avoid lowering
3205 // the bitrate estimate and requiring a subsequent rampup. 3205 // the bitrate estimate and requiring a subsequent rampup.
3206 VideoEncoderConfig one_stream = video_encoder_config_; 3206 VideoEncoderConfig one_stream = video_encoder_config_.Copy();
3207 one_stream.streams.resize(1); 3207 one_stream.streams.resize(1);
3208 for (size_t i = 1; i < video_encoder_config_.streams.size(); ++i) { 3208 for (size_t i = 1; i < video_encoder_config_.streams.size(); ++i) {
3209 one_stream.streams.front().min_bitrate_bps += 3209 one_stream.streams.front().min_bitrate_bps +=
3210 video_encoder_config_.streams[i].min_bitrate_bps; 3210 video_encoder_config_.streams[i].min_bitrate_bps;
3211 one_stream.streams.front().target_bitrate_bps += 3211 one_stream.streams.front().target_bitrate_bps +=
3212 video_encoder_config_.streams[i].target_bitrate_bps; 3212 video_encoder_config_.streams[i].target_bitrate_bps;
3213 one_stream.streams.front().max_bitrate_bps += 3213 one_stream.streams.front().max_bitrate_bps +=
3214 video_encoder_config_.streams[i].max_bitrate_bps; 3214 video_encoder_config_.streams[i].max_bitrate_bps;
3215 } 3215 }
3216 3216
3217 CreateMatchingReceiveConfigs(&receive_transport); 3217 CreateMatchingReceiveConfigs(&receive_transport);
3218 3218
3219 CreateVideoStreams(); 3219 CreateVideoStreams();
3220 CreateFrameGeneratorCapturer(); 3220 CreateFrameGeneratorCapturer();
3221 3221
3222 Start(); 3222 Start();
3223 EXPECT_TRUE(observer.Wait()) 3223 EXPECT_TRUE(observer.Wait())
3224 << "Timed out waiting for all SSRCs to send packets."; 3224 << "Timed out waiting for all SSRCs to send packets.";
3225 3225
3226 // Test stream resetting more than once to make sure that the state doesn't 3226 // Test stream resetting more than once to make sure that the state doesn't
3227 // get set once (this could be due to using std::map::insert for instance). 3227 // get set once (this could be due to using std::map::insert for instance).
3228 for (size_t i = 0; i < 3; ++i) { 3228 for (size_t i = 0; i < 3; ++i) {
3229 frame_generator_capturer_->Stop(); 3229 frame_generator_capturer_->Stop();
3230 sender_call_->DestroyVideoSendStream(video_send_stream_); 3230 sender_call_->DestroyVideoSendStream(video_send_stream_);
3231 3231
3232 // Re-create VideoSendStream with only one stream. 3232 // Re-create VideoSendStream with only one stream.
3233 video_send_stream_ = 3233 video_send_stream_ = sender_call_->CreateVideoSendStream(
3234 sender_call_->CreateVideoSendStream(video_send_config_, one_stream); 3234 video_send_config_.Copy(), one_stream.Copy());
3235 video_send_stream_->Start(); 3235 video_send_stream_->Start();
3236 if (provoke_rtcpsr_before_rtp) { 3236 if (provoke_rtcpsr_before_rtp) {
3237 // Rapid Resync Request forces sending RTCP Sender Report back. 3237 // Rapid Resync Request forces sending RTCP Sender Report back.
3238 // Using this request speeds up this test because then there is no need 3238 // Using this request speeds up this test because then there is no need
3239 // to wait for a second for periodic Sender Report. 3239 // to wait for a second for periodic Sender Report.
3240 rtcp::RapidResyncRequest force_send_sr_back_request; 3240 rtcp::RapidResyncRequest force_send_sr_back_request;
3241 rtc::Buffer packet = force_send_sr_back_request.Build(); 3241 rtc::Buffer packet = force_send_sr_back_request.Build();
3242 static_cast<webrtc::test::DirectTransport&>(receive_transport) 3242 static_cast<webrtc::test::DirectTransport&>(receive_transport)
3243 .SendRtcp(packet.data(), packet.size()); 3243 .SendRtcp(packet.data(), packet.size());
3244 } 3244 }
3245 CreateFrameGeneratorCapturer(); 3245 CreateFrameGeneratorCapturer();
3246 frame_generator_capturer_->Start(); 3246 frame_generator_capturer_->Start();
3247 3247
3248 observer.ResetExpectedSsrcs(1); 3248 observer.ResetExpectedSsrcs(1);
3249 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; 3249 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet.";
3250 3250
3251 // Reconfigure back to use all streams. 3251 // Reconfigure back to use all streams.
3252 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); 3252 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy());
3253 observer.ResetExpectedSsrcs(kNumSsrcs); 3253 observer.ResetExpectedSsrcs(kNumSsrcs);
3254 EXPECT_TRUE(observer.Wait()) 3254 EXPECT_TRUE(observer.Wait())
3255 << "Timed out waiting for all SSRCs to send packets."; 3255 << "Timed out waiting for all SSRCs to send packets.";
3256 3256
3257 // Reconfigure down to one stream. 3257 // Reconfigure down to one stream.
3258 video_send_stream_->ReconfigureVideoEncoder(one_stream); 3258 video_send_stream_->ReconfigureVideoEncoder(one_stream.Copy());
3259 observer.ResetExpectedSsrcs(1); 3259 observer.ResetExpectedSsrcs(1);
3260 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; 3260 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet.";
3261 3261
3262 // Reconfigure back to use all streams. 3262 // Reconfigure back to use all streams.
3263 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_); 3263 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy());
3264 observer.ResetExpectedSsrcs(kNumSsrcs); 3264 observer.ResetExpectedSsrcs(kNumSsrcs);
3265 EXPECT_TRUE(observer.Wait()) 3265 EXPECT_TRUE(observer.Wait())
3266 << "Timed out waiting for all SSRCs to send packets."; 3266 << "Timed out waiting for all SSRCs to send packets.";
3267 } 3267 }
3268 3268
3269 send_transport.StopSending(); 3269 send_transport.StopSending();
3270 receive_transport.StopSending(); 3270 receive_transport.StopSending();
3271 3271
3272 Stop(); 3272 Stop();
3273 DestroyStreams(); 3273 DestroyStreams();
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
3734 private: 3734 private:
3735 bool video_observed_; 3735 bool video_observed_;
3736 bool audio_observed_; 3736 bool audio_observed_;
3737 SequenceNumberUnwrapper unwrapper_; 3737 SequenceNumberUnwrapper unwrapper_;
3738 std::set<int64_t> received_packet_ids_; 3738 std::set<int64_t> received_packet_ids_;
3739 } test; 3739 } test;
3740 3740
3741 RunBaseTest(&test); 3741 RunBaseTest(&test);
3742 } 3742 }
3743 } // namespace webrtc 3743 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/encoder_state_feedback_unittest.cc ('k') | webrtc/video/overuse_frame_detector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698