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

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

Issue 2351633002: Let ViEEncoder handle resolution changes. (Closed)
Patch Set: rebased Created 4 years, 2 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/test/frame_generator_capturer.cc ('k') | webrtc/video/video_quality_test.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 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 receiver_transport.SetReceiver(sender_call_->Receiver()); 252 receiver_transport.SetReceiver(sender_call_->Receiver());
253 253
254 CreateSendConfig(1, 0, &sender_transport); 254 CreateSendConfig(1, 0, &sender_transport);
255 CreateMatchingReceiveConfigs(&receiver_transport); 255 CreateMatchingReceiveConfigs(&receiver_transport);
256 video_receive_configs_[0].renderer = &renderer; 256 video_receive_configs_[0].renderer = &renderer;
257 257
258 CreateVideoStreams(); 258 CreateVideoStreams();
259 Start(); 259 Start();
260 260
261 std::unique_ptr<test::FrameGenerator> frame_generator( 261 std::unique_ptr<test::FrameGenerator> frame_generator(
262 test::FrameGenerator::CreateChromaGenerator( 262 test::FrameGenerator::CreateChromaGenerator(kDefaultWidth,
263 video_encoder_config_.streams[0].width, 263 kDefaultHeight));
264 video_encoder_config_.streams[0].height));
265 test::FrameForwarder frame_forwarder; 264 test::FrameForwarder frame_forwarder;
266 video_send_stream_->SetSource(&frame_forwarder); 265 video_send_stream_->SetSource(&frame_forwarder);
267 frame_forwarder.IncomingCapturedFrame(*frame_generator->NextFrame()); 266 frame_forwarder.IncomingCapturedFrame(*frame_generator->NextFrame());
268 267
269 EXPECT_TRUE(renderer.Wait()) 268 EXPECT_TRUE(renderer.Wait())
270 << "Timed out while waiting for the frame to render."; 269 << "Timed out while waiting for the frame to render.";
271 270
272 Stop(); 271 Stop();
273 272
274 sender_transport.StopSending(); 273 sender_transport.StopSending();
(...skipping 23 matching lines...) Expand all
298 << "Timed out while waiting for enough frames to be decoded."; 297 << "Timed out while waiting for enough frames to be decoded.";
299 } 298 }
300 299
301 void ModifyVideoConfigs( 300 void ModifyVideoConfigs(
302 VideoSendStream::Config* send_config, 301 VideoSendStream::Config* send_config,
303 std::vector<VideoReceiveStream::Config>* receive_configs, 302 std::vector<VideoReceiveStream::Config>* receive_configs,
304 VideoEncoderConfig* encoder_config) override { 303 VideoEncoderConfig* encoder_config) override {
305 send_config->encoder_settings.encoder = encoder_.get(); 304 send_config->encoder_settings.encoder = encoder_.get();
306 send_config->encoder_settings.payload_name = payload_name_; 305 send_config->encoder_settings.payload_name = payload_name_;
307 send_config->encoder_settings.payload_type = 126; 306 send_config->encoder_settings.payload_type = 126;
308 encoder_config->streams[0].min_bitrate_bps = 50000;
309 encoder_config->streams[0].target_bitrate_bps =
310 encoder_config->streams[0].max_bitrate_bps = 2000000;
311 307
312 (*receive_configs)[0].renderer = this; 308 (*receive_configs)[0].renderer = this;
313 (*receive_configs)[0].decoders.resize(1); 309 (*receive_configs)[0].decoders.resize(1);
314 (*receive_configs)[0].decoders[0].payload_type = 310 (*receive_configs)[0].decoders[0].payload_type =
315 send_config->encoder_settings.payload_type; 311 send_config->encoder_settings.payload_type;
316 (*receive_configs)[0].decoders[0].payload_name = 312 (*receive_configs)[0].decoders[0].payload_name =
317 send_config->encoder_settings.payload_name; 313 send_config->encoder_settings.payload_name;
318 (*receive_configs)[0].decoders[0].decoder = decoder_.get(); 314 (*receive_configs)[0].decoders[0].decoder = decoder_.get();
319 } 315 }
320 316
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 std::vector<VideoReceiveStream::Config>* receive_configs, 782 std::vector<VideoReceiveStream::Config>* receive_configs,
787 VideoEncoderConfig* encoder_config) override { 783 VideoEncoderConfig* encoder_config) override {
788 // Configure hybrid NACK/FEC. 784 // Configure hybrid NACK/FEC.
789 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 785 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
790 send_config->rtp.fec.red_payload_type = kRedPayloadType; 786 send_config->rtp.fec.red_payload_type = kRedPayloadType;
791 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; 787 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType;
792 // Set codec to VP8, otherwise NACK/FEC hybrid will be disabled. 788 // Set codec to VP8, otherwise NACK/FEC hybrid will be disabled.
793 send_config->encoder_settings.encoder = encoder_.get(); 789 send_config->encoder_settings.encoder = encoder_.get();
794 send_config->encoder_settings.payload_name = "VP8"; 790 send_config->encoder_settings.payload_name = "VP8";
795 send_config->encoder_settings.payload_type = kFakeVideoSendPayloadType; 791 send_config->encoder_settings.payload_type = kFakeVideoSendPayloadType;
796 encoder_config->streams[0].min_bitrate_bps = 50000;
797 encoder_config->streams[0].max_bitrate_bps =
798 encoder_config->streams[0].target_bitrate_bps = 2000000;
799 792
800 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 793 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
801 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType; 794 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType;
802 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; 795 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType;
803 796
804 (*receive_configs)[0].decoders.resize(1); 797 (*receive_configs)[0].decoders.resize(1);
805 (*receive_configs)[0].decoders[0].payload_type = 798 (*receive_configs)[0].decoders[0].payload_type =
806 send_config->encoder_settings.payload_type; 799 send_config->encoder_settings.payload_type;
807 (*receive_configs)[0].decoders[0].payload_name = 800 (*receive_configs)[0].decoders[0].payload_name =
808 send_config->encoder_settings.payload_name; 801 send_config->encoder_settings.payload_name;
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
1114 test::DirectTransport send_transport(sender_call_.get()); 1107 test::DirectTransport send_transport(sender_call_.get());
1115 test::DirectTransport receive_transport(receiver_call_.get()); 1108 test::DirectTransport receive_transport(receiver_call_.get());
1116 PacketInputObserver input_observer(receiver_call_->Receiver()); 1109 PacketInputObserver input_observer(receiver_call_->Receiver());
1117 send_transport.SetReceiver(&input_observer); 1110 send_transport.SetReceiver(&input_observer);
1118 receive_transport.SetReceiver(sender_call_->Receiver()); 1111 receive_transport.SetReceiver(sender_call_->Receiver());
1119 1112
1120 CreateSendConfig(1, 0, &send_transport); 1113 CreateSendConfig(1, 0, &send_transport);
1121 CreateMatchingReceiveConfigs(&receive_transport); 1114 CreateMatchingReceiveConfigs(&receive_transport);
1122 1115
1123 CreateVideoStreams(); 1116 CreateVideoStreams();
1124 CreateFrameGeneratorCapturer(); 1117 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
1118 kDefaultHeight);
1125 Start(); 1119 Start();
1126 1120
1127 receiver_call_->DestroyVideoReceiveStream(video_receive_streams_[0]); 1121 receiver_call_->DestroyVideoReceiveStream(video_receive_streams_[0]);
1128 video_receive_streams_.clear(); 1122 video_receive_streams_.clear();
1129 1123
1130 // Wait() waits for a received packet. 1124 // Wait() waits for a received packet.
1131 EXPECT_TRUE(input_observer.Wait()); 1125 EXPECT_TRUE(input_observer.Wait());
1132 1126
1133 Stop(); 1127 Stop();
1134 1128
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1271 uint32_t ssrc = codec_settings[i].ssrc; 1265 uint32_t ssrc = codec_settings[i].ssrc;
1272 int width = codec_settings[i].width; 1266 int width = codec_settings[i].width;
1273 int height = codec_settings[i].height; 1267 int height = codec_settings[i].height;
1274 1268
1275 VideoSendStream::Config send_config(sender_transport.get()); 1269 VideoSendStream::Config send_config(sender_transport.get());
1276 send_config.rtp.ssrcs.push_back(ssrc); 1270 send_config.rtp.ssrcs.push_back(ssrc);
1277 send_config.encoder_settings.encoder = encoders[i].get(); 1271 send_config.encoder_settings.encoder = encoders[i].get();
1278 send_config.encoder_settings.payload_name = "VP8"; 1272 send_config.encoder_settings.payload_name = "VP8";
1279 send_config.encoder_settings.payload_type = 124; 1273 send_config.encoder_settings.payload_type = 124;
1280 VideoEncoderConfig encoder_config; 1274 VideoEncoderConfig encoder_config;
1281 encoder_config.streams = test::CreateVideoStreams(1); 1275 test::FillEncoderConfiguration(1, &encoder_config);
1282 VideoStream* stream = &encoder_config.streams[0]; 1276 encoder_config.max_bitrate_bps = 100000;
1283 stream->width = width;
1284 stream->height = height;
1285 stream->max_framerate = 5;
1286 stream->min_bitrate_bps = stream->target_bitrate_bps =
1287 stream->max_bitrate_bps = 100000;
1288 1277
1289 UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]); 1278 UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]);
1290 1279
1291 send_streams[i] = sender_call->CreateVideoSendStream( 1280 send_streams[i] = sender_call->CreateVideoSendStream(
1292 send_config.Copy(), encoder_config.Copy()); 1281 send_config.Copy(), encoder_config.Copy());
1293 send_streams[i]->Start(); 1282 send_streams[i]->Start();
1294 1283
1295 VideoReceiveStream::Config receive_config(receiver_transport.get()); 1284 VideoReceiveStream::Config receive_config(receiver_transport.get());
1296 receive_config.rtp.remote_ssrc = ssrc; 1285 receive_config.rtp.remote_ssrc = ssrc;
1297 receive_config.rtp.local_ssrc = test::CallTest::kReceiverLocalVideoSsrc; 1286 receive_config.rtp.local_ssrc = test::CallTest::kReceiverLocalVideoSsrc;
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
1555 size_t stream_index, 1544 size_t stream_index,
1556 VideoSendStream::Config* send_config, 1545 VideoSendStream::Config* send_config,
1557 VideoEncoderConfig* encoder_config, 1546 VideoEncoderConfig* encoder_config,
1558 test::FrameGeneratorCapturer** frame_generator) override { 1547 test::FrameGeneratorCapturer** frame_generator) override {
1559 send_config->rtp.extensions.clear(); 1548 send_config->rtp.extensions.clear();
1560 send_config->rtp.extensions.push_back(RtpExtension( 1549 send_config->rtp.extensions.push_back(RtpExtension(
1561 RtpExtension::kTransportSequenceNumberUri, kExtensionId)); 1550 RtpExtension::kTransportSequenceNumberUri, kExtensionId));
1562 1551
1563 // Force some padding to be sent. 1552 // Force some padding to be sent.
1564 const int kPaddingBitrateBps = 50000; 1553 const int kPaddingBitrateBps = 50000;
1565 int total_target_bitrate = 0; 1554 encoder_config->max_bitrate_bps = 1000000;
1566 for (const VideoStream& stream : encoder_config->streams)
1567 total_target_bitrate += stream.target_bitrate_bps;
1568 encoder_config->min_transmit_bitrate_bps = 1555 encoder_config->min_transmit_bitrate_bps =
1569 total_target_bitrate + kPaddingBitrateBps; 1556 encoder_config->max_bitrate_bps + kPaddingBitrateBps;
1570 1557
1571 // Configure RTX for redundant payload padding. 1558 // Configure RTX for redundant payload padding.
1572 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 1559 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
1573 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[stream_index]); 1560 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[stream_index]);
1574 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; 1561 send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
1575 rtx_to_media_ssrcs_[kSendRtxSsrcs[stream_index]] = 1562 rtx_to_media_ssrcs_[kSendRtxSsrcs[stream_index]] =
1576 send_config->rtp.ssrcs[0]; 1563 send_config->rtp.ssrcs[0];
1577 1564
1578 if (stream_index == 0) 1565 if (stream_index == 0)
1579 first_media_ssrc_ = send_config->rtp.ssrcs[0]; 1566 first_media_ssrc_ = send_config->rtp.ssrcs[0];
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
1761 1748
1762 CreateSendConfig(1, 0, &sender_transport); 1749 CreateSendConfig(1, 0, &sender_transport);
1763 CreateMatchingReceiveConfigs(&receiver_transport); 1750 CreateMatchingReceiveConfigs(&receiver_transport);
1764 video_send_config_.post_encode_callback = &post_encode_observer; 1751 video_send_config_.post_encode_callback = &post_encode_observer;
1765 video_receive_configs_[0].pre_decode_callback = &pre_decode_observer; 1752 video_receive_configs_[0].pre_decode_callback = &pre_decode_observer;
1766 1753
1767 CreateVideoStreams(); 1754 CreateVideoStreams();
1768 Start(); 1755 Start();
1769 1756
1770 std::unique_ptr<test::FrameGenerator> frame_generator( 1757 std::unique_ptr<test::FrameGenerator> frame_generator(
1771 test::FrameGenerator::CreateChromaGenerator( 1758 test::FrameGenerator::CreateChromaGenerator(kDefaultWidth,
1772 video_encoder_config_.streams[0].width, 1759 kDefaultHeight));
1773 video_encoder_config_.streams[0].height));
1774 test::FrameForwarder forwarder; 1760 test::FrameForwarder forwarder;
1775 video_send_stream_->SetSource(&forwarder); 1761 video_send_stream_->SetSource(&forwarder);
1776 forwarder.IncomingCapturedFrame(*frame_generator->NextFrame()); 1762 forwarder.IncomingCapturedFrame(*frame_generator->NextFrame());
1777 1763
1778 EXPECT_TRUE(post_encode_observer.Wait()) 1764 EXPECT_TRUE(post_encode_observer.Wait())
1779 << "Timed out while waiting for send-side encoded-frame callback."; 1765 << "Timed out while waiting for send-side encoded-frame callback.";
1780 1766
1781 EXPECT_TRUE(pre_decode_observer.Wait()) 1767 EXPECT_TRUE(pre_decode_observer.Wait())
1782 << "Timed out while waiting for pre-decode encoded-frame callback."; 1768 << "Timed out while waiting for pre-decode encoded-frame callback.";
1783 1769
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1914 VideoSendStream::Config* send_config, 1900 VideoSendStream::Config* send_config,
1915 std::vector<VideoReceiveStream::Config>* receive_configs, 1901 std::vector<VideoReceiveStream::Config>* receive_configs,
1916 VideoEncoderConfig* encoder_config) override { 1902 VideoEncoderConfig* encoder_config) override {
1917 ASSERT_EQ(1u, send_config->rtp.ssrcs.size()); 1903 ASSERT_EQ(1u, send_config->rtp.ssrcs.size());
1918 send_config->rtp.extensions.clear(); 1904 send_config->rtp.extensions.clear();
1919 send_config->rtp.extensions.push_back( 1905 send_config->rtp.extensions.push_back(
1920 RtpExtension(RtpExtension::kTransportSequenceNumberUri, 1906 RtpExtension(RtpExtension::kTransportSequenceNumberUri,
1921 test::kTransportSequenceNumberExtensionId)); 1907 test::kTransportSequenceNumberExtensionId));
1922 sender_ssrc_ = send_config->rtp.ssrcs[0]; 1908 sender_ssrc_ = send_config->rtp.ssrcs[0];
1923 1909
1924 encoder_config->streams[0].max_bitrate_bps = 1910 encoder_config->max_bitrate_bps = 2000000;
1925 encoder_config->streams[0].target_bitrate_bps = 2000000;
1926 1911
1927 ASSERT_EQ(1u, receive_configs->size()); 1912 ASSERT_EQ(1u, receive_configs->size());
1928 (*receive_configs)[0].rtp.remb = false; 1913 (*receive_configs)[0].rtp.remb = false;
1929 (*receive_configs)[0].rtp.transport_cc = true; 1914 (*receive_configs)[0].rtp.transport_cc = true;
1930 (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions; 1915 (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions;
1931 RtpRtcp::Configuration config; 1916 RtpRtcp::Configuration config;
1932 config.receiver_only = true; 1917 config.receiver_only = true;
1933 config.clock = clock_; 1918 config.clock = clock_;
1934 config.outgoing_transport = receive_transport_; 1919 config.outgoing_transport = receive_transport_;
1935 config.retransmission_rate_limiter = &retransmission_rate_limiter_; 1920 config.retransmission_rate_limiter = &retransmission_rate_limiter_;
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
2258 EXPECT_EQ(1, 2243 EXPECT_EQ(1,
2259 metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent")); 2244 metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent"));
2260 2245
2261 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputWidthInPixels")); 2246 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputWidthInPixels"));
2262 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputHeightInPixels")); 2247 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputHeightInPixels"));
2263 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentWidthInPixels")); 2248 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentWidthInPixels"));
2264 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentHeightInPixels")); 2249 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentHeightInPixels"));
2265 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedWidthInPixels")); 2250 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedWidthInPixels"));
2266 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedHeightInPixels")); 2251 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedHeightInPixels"));
2267 2252
2268 EXPECT_EQ(1, metrics::NumEvents( 2253 EXPECT_EQ(1, metrics::NumEvents(video_prefix + "InputWidthInPixels",
2269 video_prefix + "InputWidthInPixels", 2254 kDefaultWidth));
2270 static_cast<int>(video_encoder_config_.streams[0].width))); 2255 EXPECT_EQ(1, metrics::NumEvents(video_prefix + "InputHeightInPixels",
2271 EXPECT_EQ(1, metrics::NumEvents( 2256 kDefaultHeight));
2272 video_prefix + "InputHeightInPixels", 2257 EXPECT_EQ(
2273 static_cast<int>(video_encoder_config_.streams[0].height))); 2258 1, metrics::NumEvents(video_prefix + "SentWidthInPixels", kDefaultWidth));
2274 EXPECT_EQ(1, metrics::NumEvents( 2259 EXPECT_EQ(1, metrics::NumEvents(video_prefix + "SentHeightInPixels",
2275 video_prefix + "SentWidthInPixels", 2260 kDefaultHeight));
2276 static_cast<int>(video_encoder_config_.streams[0].width))); 2261 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.ReceivedWidthInPixels",
2277 EXPECT_EQ(1, metrics::NumEvents( 2262 kDefaultWidth));
2278 video_prefix + "SentHeightInPixels", 2263 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.ReceivedHeightInPixels",
2279 static_cast<int>(video_encoder_config_.streams[0].height))); 2264 kDefaultHeight));
2280 EXPECT_EQ(1, metrics::NumEvents(
2281 "WebRTC.Video.ReceivedWidthInPixels",
2282 static_cast<int>(video_encoder_config_.streams[0].width)));
2283 EXPECT_EQ(1, metrics::NumEvents(
2284 "WebRTC.Video.ReceivedHeightInPixels",
2285 static_cast<int>(video_encoder_config_.streams[0].height)));
2286 2265
2287 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputFramesPerSecond")); 2266 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputFramesPerSecond"));
2288 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentFramesPerSecond")); 2267 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentFramesPerSecond"));
2289 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DecodedFramesPerSecond")); 2268 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DecodedFramesPerSecond"));
2290 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RenderFramesPerSecond")); 2269 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RenderFramesPerSecond"));
2291 2270
2292 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.JitterBufferDelayInMs")); 2271 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.JitterBufferDelayInMs"));
2293 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.TargetDelayInMs")); 2272 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.TargetDelayInMs"));
2294 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.CurrentDelayInMs")); 2273 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.CurrentDelayInMs"));
2295 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.OnewayDelayInMs")); 2274 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.OnewayDelayInMs"));
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
2481 } 2460 }
2482 2461
2483 if (ssrcs_to_observe_ == 0) 2462 if (ssrcs_to_observe_ == 0)
2484 observation_complete_.Set(); 2463 observation_complete_.Set();
2485 2464
2486 return SEND_PACKET; 2465 return SEND_PACKET;
2487 } 2466 }
2488 2467
2489 size_t GetNumVideoStreams() const override { return num_ssrcs_; } 2468 size_t GetNumVideoStreams() const override { return num_ssrcs_; }
2490 2469
2470 // This test use other VideoStream settings than the the default settings
2471 // implemented in DefaultVideoStreamFactory. Therefore this test implement
2472 // its own VideoEncoderConfig::VideoStreamFactoryInterface which is created
2473 // in ModifyVideoConfigs.
2474 class VideoStreamFactory
2475 : public VideoEncoderConfig::VideoStreamFactoryInterface {
2476 public:
2477 VideoStreamFactory() {}
2478
2479 private:
2480 std::vector<VideoStream> CreateEncoderStreams(
2481 int width,
2482 int height,
2483 const VideoEncoderConfig& encoder_config) override {
2484 std::vector<VideoStream> streams =
2485 test::CreateVideoStreams(width, height, encoder_config);
2486 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
2487 for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
2488 streams[i].min_bitrate_bps = 10000;
2489 streams[i].target_bitrate_bps = 15000;
2490 streams[i].max_bitrate_bps = 20000;
2491 }
2492 return streams;
2493 }
2494 };
2495
2491 void ModifyVideoConfigs( 2496 void ModifyVideoConfigs(
2492 VideoSendStream::Config* send_config, 2497 VideoSendStream::Config* send_config,
2493 std::vector<VideoReceiveStream::Config>* receive_configs, 2498 std::vector<VideoReceiveStream::Config>* receive_configs,
2494 VideoEncoderConfig* encoder_config) override { 2499 VideoEncoderConfig* encoder_config) override {
2495 if (num_ssrcs_ > 1) { 2500 encoder_config->video_stream_factory =
2496 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. 2501 new rtc::RefCountedObject<VideoStreamFactory>();
2497 for (size_t i = 0; i < encoder_config->streams.size(); ++i) {
2498 encoder_config->streams[i].min_bitrate_bps = 10000;
2499 encoder_config->streams[i].target_bitrate_bps = 15000;
2500 encoder_config->streams[i].max_bitrate_bps = 20000;
2501 }
2502 }
2503
2504 video_encoder_config_all_streams_ = encoder_config->Copy(); 2502 video_encoder_config_all_streams_ = encoder_config->Copy();
2505 if (send_single_ssrc_first_) 2503 if (send_single_ssrc_first_)
2506 encoder_config->streams.resize(1); 2504 encoder_config->number_of_streams = 1;
2507 } 2505 }
2508 2506
2509 void OnVideoStreamsCreated( 2507 void OnVideoStreamsCreated(
2510 VideoSendStream* send_stream, 2508 VideoSendStream* send_stream,
2511 const std::vector<VideoReceiveStream*>& receive_streams) override { 2509 const std::vector<VideoReceiveStream*>& receive_streams) override {
2512 send_stream_ = send_stream; 2510 send_stream_ = send_stream;
2513 } 2511 }
2514 2512
2515 void PerformTest() override { 2513 void PerformTest() override {
2516 EXPECT_TRUE(Wait()) << "Timed out while waiting for " 2514 EXPECT_TRUE(Wait()) << "Timed out while waiting for "
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2556 VideoSendStream* send_stream, 2554 VideoSendStream* send_stream,
2557 const std::vector<VideoReceiveStream*>& receive_streams) override { 2555 const std::vector<VideoReceiveStream*>& receive_streams) override {
2558 send_stream_ = send_stream; 2556 send_stream_ = send_stream;
2559 } 2557 }
2560 2558
2561 void ModifyVideoConfigs( 2559 void ModifyVideoConfigs(
2562 VideoSendStream::Config* send_config, 2560 VideoSendStream::Config* send_config,
2563 std::vector<VideoReceiveStream::Config>* receive_configs, 2561 std::vector<VideoReceiveStream::Config>* receive_configs,
2564 VideoEncoderConfig* encoder_config) override { 2562 VideoEncoderConfig* encoder_config) override {
2565 send_config->encoder_settings.encoder = this; 2563 send_config->encoder_settings.encoder = this;
2566 RTC_DCHECK_EQ(1u, encoder_config->streams.size()); 2564 RTC_DCHECK_EQ(1u, encoder_config->number_of_streams);
2567 } 2565 }
2568 2566
2569 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override { 2567 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override {
2570 // Make sure not to trigger on any default zero bitrates. 2568 // Make sure not to trigger on any default zero bitrates.
2571 if (new_target_bitrate == 0) 2569 if (new_target_bitrate == 0)
2572 return 0; 2570 return 0;
2573 rtc::CritScope lock(&crit_); 2571 rtc::CritScope lock(&crit_);
2574 bitrate_kbps_ = new_target_bitrate; 2572 bitrate_kbps_ = new_target_bitrate;
2575 observation_complete_.Set(); 2573 observation_complete_.Set();
2576 return 0; 2574 return 0;
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
2828 return new test::PacketTransport( 2826 return new test::PacketTransport(
2829 sender_call, this, test::PacketTransport::kSender, network_config); 2827 sender_call, this, test::PacketTransport::kSender, network_config);
2830 } 2828 }
2831 2829
2832 Call::Config GetSenderCallConfig() override { 2830 Call::Config GetSenderCallConfig() override {
2833 Call::Config config = EndToEndTest::GetSenderCallConfig(); 2831 Call::Config config = EndToEndTest::GetSenderCallConfig();
2834 config.bitrate_config.start_bitrate_bps = kStartBitrateBps; 2832 config.bitrate_config.start_bitrate_bps = kStartBitrateBps;
2835 return config; 2833 return config;
2836 } 2834 }
2837 2835
2836 // This test use other VideoStream settings than the the default settings
2837 // implemented in DefaultVideoStreamFactory. Therefore this test implement
2838 // its own VideoEncoderConfig::VideoStreamFactoryInterface which is created
2839 // in ModifyVideoConfigs.
2840 class VideoStreamFactory
2841 : public VideoEncoderConfig::VideoStreamFactoryInterface {
2842 public:
2843 VideoStreamFactory() {}
2844
2845 private:
2846 std::vector<VideoStream> CreateEncoderStreams(
2847 int width,
2848 int height,
2849 const VideoEncoderConfig& encoder_config) override {
2850 std::vector<VideoStream> streams =
2851 test::CreateVideoStreams(width, height, encoder_config);
2852 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
2853 for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
2854 streams[i].min_bitrate_bps = 10000;
2855 streams[i].target_bitrate_bps = 15000;
2856 streams[i].max_bitrate_bps = 20000;
2857 }
2858 return streams;
2859 }
2860 };
2861
2838 void ModifyVideoConfigs( 2862 void ModifyVideoConfigs(
2839 VideoSendStream::Config* send_config, 2863 VideoSendStream::Config* send_config,
2840 std::vector<VideoReceiveStream::Config>* receive_configs, 2864 std::vector<VideoReceiveStream::Config>* receive_configs,
2841 VideoEncoderConfig* encoder_config) override { 2865 VideoEncoderConfig* encoder_config) override {
2842 // Set low rates to avoid waiting for rampup. 2866 encoder_config->video_stream_factory =
2843 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { 2867 new rtc::RefCountedObject<VideoStreamFactory>();
2844 encoder_config->streams[i].min_bitrate_bps = 10000;
2845 encoder_config->streams[i].target_bitrate_bps = 15000;
2846 encoder_config->streams[i].max_bitrate_bps = 20000;
2847 }
2848 send_config->pre_encode_callback = this; // Used to inject delay. 2868 send_config->pre_encode_callback = this; // Used to inject delay.
2849 expected_cname_ = send_config->rtp.c_name = "SomeCName"; 2869 expected_cname_ = send_config->rtp.c_name = "SomeCName";
2850 2870
2851 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 2871 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
2852 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; 2872 send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
2853 2873
2854 const std::vector<uint32_t>& ssrcs = send_config->rtp.ssrcs; 2874 const std::vector<uint32_t>& ssrcs = send_config->rtp.ssrcs;
2855 for (size_t i = 0; i < ssrcs.size(); ++i) { 2875 for (size_t i = 0; i < ssrcs.size(); ++i) {
2856 expected_send_ssrcs_.insert(ssrcs[i]); 2876 expected_send_ssrcs_.insert(ssrcs[i]);
2857 expected_receive_ssrcs_.push_back( 2877 expected_receive_ssrcs_.push_back(
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
3030 observed_redundant_retransmission_[header.ssrc] = true; 3050 observed_redundant_retransmission_[header.ssrc] = true;
3031 if (--ssrcs_to_observe_ == 0) 3051 if (--ssrcs_to_observe_ == 0)
3032 observation_complete_.Set(); 3052 observation_complete_.Set();
3033 } 3053 }
3034 3054
3035 return SEND_PACKET; 3055 return SEND_PACKET;
3036 } 3056 }
3037 3057
3038 size_t GetNumVideoStreams() const override { return kNumSsrcs; } 3058 size_t GetNumVideoStreams() const override { return kNumSsrcs; }
3039 3059
3060 // This test use other VideoStream settings than the the default settings
3061 // implemented in DefaultVideoStreamFactory. Therefore this test implement
3062 // its own VideoEncoderConfig::VideoStreamFactoryInterface which is created
3063 // in ModifyVideoConfigs.
3064 class VideoStreamFactory
3065 : public VideoEncoderConfig::VideoStreamFactoryInterface {
3066 public:
3067 VideoStreamFactory() {}
3068
3069 private:
3070 std::vector<VideoStream> CreateEncoderStreams(
3071 int width,
3072 int height,
3073 const VideoEncoderConfig& encoder_config) override {
3074 std::vector<VideoStream> streams =
3075 test::CreateVideoStreams(width, height, encoder_config);
3076 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
3077 for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
3078 streams[i].min_bitrate_bps = 10000;
3079 streams[i].target_bitrate_bps = 15000;
3080 streams[i].max_bitrate_bps = 20000;
3081 }
3082 return streams;
3083 }
3084 };
3085
3040 void ModifyVideoConfigs( 3086 void ModifyVideoConfigs(
3041 VideoSendStream::Config* send_config, 3087 VideoSendStream::Config* send_config,
3042 std::vector<VideoReceiveStream::Config>* receive_configs, 3088 std::vector<VideoReceiveStream::Config>* receive_configs,
3043 VideoEncoderConfig* encoder_config) override { 3089 VideoEncoderConfig* encoder_config) override {
3044 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. 3090 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
3045 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { 3091 encoder_config->video_stream_factory =
3046 encoder_config->streams[i].min_bitrate_bps = 10000; 3092 new rtc::RefCountedObject<VideoStreamFactory>();
3047 encoder_config->streams[i].target_bitrate_bps = 15000;
3048 encoder_config->streams[i].max_bitrate_bps = 20000;
3049 }
3050
3051 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; 3093 send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
3052 3094
3053 for (size_t i = 0; i < kNumSsrcs; ++i) 3095 for (size_t i = 0; i < kNumSsrcs; ++i)
3054 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); 3096 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]);
3055 3097
3056 // Significantly higher than max bitrates for all video streams -> forcing 3098 // Significantly higher than max bitrates for all video streams -> forcing
3057 // padding to trigger redundant padding on all RTX SSRCs. 3099 // padding to trigger redundant padding on all RTX SSRCs.
3058 encoder_config->min_transmit_bitrate_bps = 100000; 3100 encoder_config->min_transmit_bitrate_bps = 100000;
3059 } 3101 }
3060 3102
3061 void PerformTest() override { 3103 void PerformTest() override {
3062 EXPECT_TRUE(Wait()) 3104 EXPECT_TRUE(Wait())
3063 << "Timed out while waiting for redundant payloads on all SSRCs."; 3105 << "Timed out while waiting for redundant payloads on all SSRCs.";
3064 } 3106 }
3065 3107
3066 private: 3108 private:
3067 size_t ssrcs_to_observe_; 3109 size_t ssrcs_to_observe_;
3068 std::map<uint32_t, bool> observed_redundant_retransmission_; 3110 std::map<uint32_t, bool> observed_redundant_retransmission_;
3069 std::map<uint32_t, bool> registered_rtx_ssrc_; 3111 std::map<uint32_t, bool> registered_rtx_ssrc_;
3070 } test; 3112 } test;
3071 3113
3072 RunBaseTest(&test); 3114 RunBaseTest(&test);
3073 } 3115 }
3074 3116
3075 void EndToEndTest::TestRtpStatePreservation(bool use_rtx, 3117 void EndToEndTest::TestRtpStatePreservation(bool use_rtx,
3076 bool provoke_rtcpsr_before_rtp) { 3118 bool provoke_rtcpsr_before_rtp) {
3119 // This test use other VideoStream settings than the the default settings
3120 // implemented in DefaultVideoStreamFactory. Therefore this test implement
3121 // its own VideoEncoderConfig::VideoStreamFactoryInterface which is created
3122 // in ModifyVideoConfigs.
3123 class VideoStreamFactory
3124 : public VideoEncoderConfig::VideoStreamFactoryInterface {
3125 public:
3126 VideoStreamFactory() {}
3127
3128 private:
3129 std::vector<VideoStream> CreateEncoderStreams(
3130 int width,
3131 int height,
3132 const VideoEncoderConfig& encoder_config) override {
3133 std::vector<VideoStream> streams =
3134 test::CreateVideoStreams(width, height, encoder_config);
3135
3136 if (encoder_config.number_of_streams > 1) {
3137 // Lower bitrates so that all streams send initially.
3138 RTC_DCHECK_EQ(3u, encoder_config.number_of_streams);
3139 for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
3140 streams[i].min_bitrate_bps = 10000;
3141 streams[i].target_bitrate_bps = 15000;
3142 streams[i].max_bitrate_bps = 20000;
3143 }
3144 } else {
3145 // Use the same total bitrates when sending a single stream to avoid
3146 // lowering
3147 // the bitrate estimate and requiring a subsequent rampup.
3148 streams[0].min_bitrate_bps = 3 * 10000;
3149 streams[0].target_bitrate_bps = 3 * 15000;
3150 streams[0].max_bitrate_bps = 3 * 20000;
3151 }
3152 return streams;
3153 }
3154 };
3155
3077 class RtpSequenceObserver : public test::RtpRtcpObserver { 3156 class RtpSequenceObserver : public test::RtpRtcpObserver {
3078 public: 3157 public:
3079 explicit RtpSequenceObserver(bool use_rtx) 3158 explicit RtpSequenceObserver(bool use_rtx)
3080 : test::RtpRtcpObserver(kDefaultTimeoutMs), 3159 : test::RtpRtcpObserver(kDefaultTimeoutMs),
3081 ssrcs_to_observe_(kNumSsrcs) { 3160 ssrcs_to_observe_(kNumSsrcs) {
3082 for (size_t i = 0; i < kNumSsrcs; ++i) { 3161 for (size_t i = 0; i < kNumSsrcs; ++i) {
3083 ssrc_is_rtx_[kVideoSendSsrcs[i]] = false; 3162 ssrc_is_rtx_[kVideoSendSsrcs[i]] = false;
3084 if (use_rtx) 3163 if (use_rtx)
3085 ssrc_is_rtx_[kSendRtxSsrcs[i]] = true; 3164 ssrc_is_rtx_[kSendRtxSsrcs[i]] = true;
3086 } 3165 }
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
3202 3281
3203 CreateSendConfig(kNumSsrcs, 0, &send_transport); 3282 CreateSendConfig(kNumSsrcs, 0, &send_transport);
3204 3283
3205 if (use_rtx) { 3284 if (use_rtx) {
3206 for (size_t i = 0; i < kNumSsrcs; ++i) { 3285 for (size_t i = 0; i < kNumSsrcs; ++i) {
3207 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); 3286 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]);
3208 } 3287 }
3209 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; 3288 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType;
3210 } 3289 }
3211 3290
3212 // Lower bitrates so that all streams send initially. 3291 video_encoder_config_.video_stream_factory =
3213 for (size_t i = 0; i < video_encoder_config_.streams.size(); ++i) { 3292 new rtc::RefCountedObject<VideoStreamFactory>();
3214 video_encoder_config_.streams[i].min_bitrate_bps = 10000;
3215 video_encoder_config_.streams[i].target_bitrate_bps = 15000;
3216 video_encoder_config_.streams[i].max_bitrate_bps = 20000;
3217 }
3218
3219 // Use the same total bitrates when sending a single stream to avoid lowering 3293 // Use the same total bitrates when sending a single stream to avoid lowering
3220 // the bitrate estimate and requiring a subsequent rampup. 3294 // the bitrate estimate and requiring a subsequent rampup.
3221 VideoEncoderConfig one_stream = video_encoder_config_.Copy(); 3295 VideoEncoderConfig one_stream = video_encoder_config_.Copy();
3222 one_stream.streams.resize(1); 3296 // one_stream.streams.resize(1);
3223 for (size_t i = 1; i < video_encoder_config_.streams.size(); ++i) { 3297 one_stream.number_of_streams = 1;
3224 one_stream.streams.front().min_bitrate_bps +=
3225 video_encoder_config_.streams[i].min_bitrate_bps;
3226 one_stream.streams.front().target_bitrate_bps +=
3227 video_encoder_config_.streams[i].target_bitrate_bps;
3228 one_stream.streams.front().max_bitrate_bps +=
3229 video_encoder_config_.streams[i].max_bitrate_bps;
3230 }
3231
3232 CreateMatchingReceiveConfigs(&receive_transport); 3298 CreateMatchingReceiveConfigs(&receive_transport);
3233 3299
3234 CreateVideoStreams(); 3300 CreateVideoStreams();
3235 CreateFrameGeneratorCapturer(); 3301 CreateFrameGeneratorCapturer(30, 1280, 720);
3236 3302
3237 Start(); 3303 Start();
3238 EXPECT_TRUE(observer.Wait()) 3304 EXPECT_TRUE(observer.Wait())
3239 << "Timed out waiting for all SSRCs to send packets."; 3305 << "Timed out waiting for all SSRCs to send packets.";
3240 3306
3241 // Test stream resetting more than once to make sure that the state doesn't 3307 // Test stream resetting more than once to make sure that the state doesn't
3242 // get set once (this could be due to using std::map::insert for instance). 3308 // get set once (this could be due to using std::map::insert for instance).
3243 for (size_t i = 0; i < 3; ++i) { 3309 for (size_t i = 0; i < 3; ++i) {
3244 frame_generator_capturer_->Stop(); 3310 frame_generator_capturer_->Stop();
3245 sender_call_->DestroyVideoSendStream(video_send_stream_); 3311 sender_call_->DestroyVideoSendStream(video_send_stream_);
3246 3312
3247 // Re-create VideoSendStream with only one stream. 3313 // Re-create VideoSendStream with only one stream.
3248 video_send_stream_ = sender_call_->CreateVideoSendStream( 3314 video_send_stream_ = sender_call_->CreateVideoSendStream(
3249 video_send_config_.Copy(), one_stream.Copy()); 3315 video_send_config_.Copy(), one_stream.Copy());
3250 video_send_stream_->Start(); 3316 video_send_stream_->Start();
3251 if (provoke_rtcpsr_before_rtp) { 3317 if (provoke_rtcpsr_before_rtp) {
3252 // Rapid Resync Request forces sending RTCP Sender Report back. 3318 // Rapid Resync Request forces sending RTCP Sender Report back.
3253 // Using this request speeds up this test because then there is no need 3319 // Using this request speeds up this test because then there is no need
3254 // to wait for a second for periodic Sender Report. 3320 // to wait for a second for periodic Sender Report.
3255 rtcp::RapidResyncRequest force_send_sr_back_request; 3321 rtcp::RapidResyncRequest force_send_sr_back_request;
3256 rtc::Buffer packet = force_send_sr_back_request.Build(); 3322 rtc::Buffer packet = force_send_sr_back_request.Build();
3257 static_cast<webrtc::test::DirectTransport&>(receive_transport) 3323 static_cast<webrtc::test::DirectTransport&>(receive_transport)
3258 .SendRtcp(packet.data(), packet.size()); 3324 .SendRtcp(packet.data(), packet.size());
3259 } 3325 }
3260 CreateFrameGeneratorCapturer(); 3326 CreateFrameGeneratorCapturer(30, 1280, 720);
3261 frame_generator_capturer_->Start(); 3327 frame_generator_capturer_->Start();
3262 3328
3263 observer.ResetExpectedSsrcs(1); 3329 observer.ResetExpectedSsrcs(1);
3264 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; 3330 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet.";
3265 3331
3266 // Reconfigure back to use all streams. 3332 // Reconfigure back to use all streams.
3267 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy()); 3333 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy());
3268 observer.ResetExpectedSsrcs(kNumSsrcs); 3334 observer.ResetExpectedSsrcs(kNumSsrcs);
3269 EXPECT_TRUE(observer.Wait()) 3335 EXPECT_TRUE(observer.Wait())
3270 << "Timed out waiting for all SSRCs to send packets."; 3336 << "Timed out waiting for all SSRCs to send packets.";
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
3505 test::DirectTransport sender_transport(config, sender_call_.get()); 3571 test::DirectTransport sender_transport(config, sender_call_.get());
3506 config.queue_delay_ms = kReceiveDelayMs; 3572 config.queue_delay_ms = kReceiveDelayMs;
3507 test::DirectTransport receiver_transport(config, receiver_call_.get()); 3573 test::DirectTransport receiver_transport(config, receiver_call_.get());
3508 sender_transport.SetReceiver(receiver_call_->Receiver()); 3574 sender_transport.SetReceiver(receiver_call_->Receiver());
3509 receiver_transport.SetReceiver(sender_call_->Receiver()); 3575 receiver_transport.SetReceiver(sender_call_->Receiver());
3510 3576
3511 CreateSendConfig(1, 0, &sender_transport); 3577 CreateSendConfig(1, 0, &sender_transport);
3512 CreateMatchingReceiveConfigs(&receiver_transport); 3578 CreateMatchingReceiveConfigs(&receiver_transport);
3513 3579
3514 CreateVideoStreams(); 3580 CreateVideoStreams();
3515 CreateFrameGeneratorCapturer(); 3581 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
3582 kDefaultHeight);
3516 Start(); 3583 Start();
3517 3584
3518 int64_t start_time_ms = clock_->TimeInMilliseconds(); 3585 int64_t start_time_ms = clock_->TimeInMilliseconds();
3519 while (true) { 3586 while (true) {
3520 Call::Stats stats = sender_call_->GetStats(); 3587 Call::Stats stats = sender_call_->GetStats();
3521 ASSERT_GE(start_time_ms + kDefaultTimeoutMs, 3588 ASSERT_GE(start_time_ms + kDefaultTimeoutMs,
3522 clock_->TimeInMilliseconds()) 3589 clock_->TimeInMilliseconds())
3523 << "No RTT stats before timeout!"; 3590 << "No RTT stats before timeout!";
3524 if (stats.rtt_ms != -1) { 3591 if (stats.rtt_ms != -1) {
3525 // To avoid failures caused by rounding or minor ntp clock adjustments, 3592 // To avoid failures caused by rounding or minor ntp clock adjustments,
(...skipping 12 matching lines...) Expand all
3538 void EndToEndTest::VerifyNewVideoSendStreamsRespectNetworkState( 3605 void EndToEndTest::VerifyNewVideoSendStreamsRespectNetworkState(
3539 MediaType network_to_bring_down, 3606 MediaType network_to_bring_down,
3540 VideoEncoder* encoder, 3607 VideoEncoder* encoder,
3541 Transport* transport) { 3608 Transport* transport) {
3542 CreateSenderCall(Call::Config()); 3609 CreateSenderCall(Call::Config());
3543 sender_call_->SignalChannelNetworkState(network_to_bring_down, kNetworkDown); 3610 sender_call_->SignalChannelNetworkState(network_to_bring_down, kNetworkDown);
3544 3611
3545 CreateSendConfig(1, 0, transport); 3612 CreateSendConfig(1, 0, transport);
3546 video_send_config_.encoder_settings.encoder = encoder; 3613 video_send_config_.encoder_settings.encoder = encoder;
3547 CreateVideoStreams(); 3614 CreateVideoStreams();
3548 CreateFrameGeneratorCapturer(); 3615 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
3616 kDefaultHeight);
3549 3617
3550 Start(); 3618 Start();
3551 SleepMs(kSilenceTimeoutMs); 3619 SleepMs(kSilenceTimeoutMs);
3552 Stop(); 3620 Stop();
3553 3621
3554 DestroyStreams(); 3622 DestroyStreams();
3555 } 3623 }
3556 3624
3557 void EndToEndTest::VerifyNewVideoReceiveStreamsRespectNetworkState( 3625 void EndToEndTest::VerifyNewVideoReceiveStreamsRespectNetworkState(
3558 MediaType network_to_bring_down, 3626 MediaType network_to_bring_down,
3559 Transport* transport) { 3627 Transport* transport) {
3560 CreateCalls(Call::Config(), Call::Config()); 3628 CreateCalls(Call::Config(), Call::Config());
3561 receiver_call_->SignalChannelNetworkState(network_to_bring_down, 3629 receiver_call_->SignalChannelNetworkState(network_to_bring_down,
3562 kNetworkDown); 3630 kNetworkDown);
3563 3631
3564 test::DirectTransport sender_transport(sender_call_.get()); 3632 test::DirectTransport sender_transport(sender_call_.get());
3565 sender_transport.SetReceiver(receiver_call_->Receiver()); 3633 sender_transport.SetReceiver(receiver_call_->Receiver());
3566 CreateSendConfig(1, 0, &sender_transport); 3634 CreateSendConfig(1, 0, &sender_transport);
3567 CreateMatchingReceiveConfigs(transport); 3635 CreateMatchingReceiveConfigs(transport);
3568 CreateVideoStreams(); 3636 CreateVideoStreams();
3569 CreateFrameGeneratorCapturer(); 3637 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
3638 kDefaultHeight);
3570 3639
3571 Start(); 3640 Start();
3572 SleepMs(kSilenceTimeoutMs); 3641 SleepMs(kSilenceTimeoutMs);
3573 Stop(); 3642 Stop();
3574 3643
3575 sender_transport.StopSending(); 3644 sender_transport.StopSending();
3576 3645
3577 DestroyStreams(); 3646 DestroyStreams();
3578 } 3647 }
3579 3648
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
3853 std::unique_ptr<VideoEncoder> encoder_; 3922 std::unique_ptr<VideoEncoder> encoder_;
3854 std::unique_ptr<VideoDecoder> decoder_; 3923 std::unique_ptr<VideoDecoder> decoder_;
3855 rtc::CriticalSection crit_; 3924 rtc::CriticalSection crit_;
3856 int recorded_frames_ GUARDED_BY(crit_); 3925 int recorded_frames_ GUARDED_BY(crit_);
3857 } test(this); 3926 } test(this);
3858 3927
3859 RunBaseTest(&test); 3928 RunBaseTest(&test);
3860 } 3929 }
3861 3930
3862 } // namespace webrtc 3931 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/test/frame_generator_capturer.cc ('k') | webrtc/video/video_quality_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698