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

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

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