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

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

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

Powered by Google App Engine
This is Rietveld 408576698