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

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

Issue 2351633002: Let ViEEncoder handle resolution changes. (Closed)
Patch Set: Fix perf test Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
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 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 receiver_transport.SetReceiver(sender_call_->Receiver()); 251 receiver_transport.SetReceiver(sender_call_->Receiver());
252 252
253 CreateSendConfig(1, 0, &sender_transport); 253 CreateSendConfig(1, 0, &sender_transport);
254 CreateMatchingReceiveConfigs(&receiver_transport); 254 CreateMatchingReceiveConfigs(&receiver_transport);
255 video_receive_configs_[0].renderer = &renderer; 255 video_receive_configs_[0].renderer = &renderer;
256 256
257 CreateVideoStreams(); 257 CreateVideoStreams();
258 Start(); 258 Start();
259 259
260 std::unique_ptr<test::FrameGenerator> frame_generator( 260 std::unique_ptr<test::FrameGenerator> frame_generator(
261 test::FrameGenerator::CreateChromaGenerator( 261 test::FrameGenerator::CreateChromaGenerator(kDefaultWidth,
262 video_encoder_config_.streams[0].width, 262 kDefaultHeight));
263 video_encoder_config_.streams[0].height));
264 test::FrameForwarder frame_forwarder; 263 test::FrameForwarder frame_forwarder;
265 video_send_stream_->SetSource(&frame_forwarder); 264 video_send_stream_->SetSource(&frame_forwarder);
266 frame_forwarder.IncomingCapturedFrame(*frame_generator->NextFrame()); 265 frame_forwarder.IncomingCapturedFrame(*frame_generator->NextFrame());
267 266
268 EXPECT_TRUE(renderer.Wait()) 267 EXPECT_TRUE(renderer.Wait())
269 << "Timed out while waiting for the frame to render."; 268 << "Timed out while waiting for the frame to render.";
270 269
271 Stop(); 270 Stop();
272 271
273 sender_transport.StopSending(); 272 sender_transport.StopSending();
(...skipping 23 matching lines...) Expand all
297 << "Timed out while waiting for enough frames to be decoded."; 296 << "Timed out while waiting for enough frames to be decoded.";
298 } 297 }
299 298
300 void ModifyVideoConfigs( 299 void ModifyVideoConfigs(
301 VideoSendStream::Config* send_config, 300 VideoSendStream::Config* send_config,
302 std::vector<VideoReceiveStream::Config>* receive_configs, 301 std::vector<VideoReceiveStream::Config>* receive_configs,
303 VideoEncoderConfig* encoder_config) override { 302 VideoEncoderConfig* encoder_config) override {
304 send_config->encoder_settings.encoder = encoder_.get(); 303 send_config->encoder_settings.encoder = encoder_.get();
305 send_config->encoder_settings.payload_name = payload_name_; 304 send_config->encoder_settings.payload_name = payload_name_;
306 send_config->encoder_settings.payload_type = 126; 305 send_config->encoder_settings.payload_type = 126;
307 encoder_config->streams[0].min_bitrate_bps = 50000;
308 encoder_config->streams[0].target_bitrate_bps =
309 encoder_config->streams[0].max_bitrate_bps = 2000000;
310 306
311 (*receive_configs)[0].renderer = this; 307 (*receive_configs)[0].renderer = this;
312 (*receive_configs)[0].decoders.resize(1); 308 (*receive_configs)[0].decoders.resize(1);
313 (*receive_configs)[0].decoders[0].payload_type = 309 (*receive_configs)[0].decoders[0].payload_type =
314 send_config->encoder_settings.payload_type; 310 send_config->encoder_settings.payload_type;
315 (*receive_configs)[0].decoders[0].payload_name = 311 (*receive_configs)[0].decoders[0].payload_name =
316 send_config->encoder_settings.payload_name; 312 send_config->encoder_settings.payload_name;
317 (*receive_configs)[0].decoders[0].decoder = decoder_.get(); 313 (*receive_configs)[0].decoders[0].decoder = decoder_.get();
318 } 314 }
319 315
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 std::vector<VideoReceiveStream::Config>* receive_configs, 781 std::vector<VideoReceiveStream::Config>* receive_configs,
786 VideoEncoderConfig* encoder_config) override { 782 VideoEncoderConfig* encoder_config) override {
787 // Configure hybrid NACK/FEC. 783 // Configure hybrid NACK/FEC.
788 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 784 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
789 send_config->rtp.fec.red_payload_type = kRedPayloadType; 785 send_config->rtp.fec.red_payload_type = kRedPayloadType;
790 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; 786 send_config->rtp.fec.ulpfec_payload_type = kUlpfecPayloadType;
791 // Set codec to VP8, otherwise NACK/FEC hybrid will be disabled. 787 // Set codec to VP8, otherwise NACK/FEC hybrid will be disabled.
792 send_config->encoder_settings.encoder = encoder_.get(); 788 send_config->encoder_settings.encoder = encoder_.get();
793 send_config->encoder_settings.payload_name = "VP8"; 789 send_config->encoder_settings.payload_name = "VP8";
794 send_config->encoder_settings.payload_type = kFakeVideoSendPayloadType; 790 send_config->encoder_settings.payload_type = kFakeVideoSendPayloadType;
795 encoder_config->streams[0].min_bitrate_bps = 50000;
796 encoder_config->streams[0].max_bitrate_bps =
797 encoder_config->streams[0].target_bitrate_bps = 2000000;
798 791
799 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 792 (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
800 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType; 793 (*receive_configs)[0].rtp.fec.red_payload_type = kRedPayloadType;
801 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType; 794 (*receive_configs)[0].rtp.fec.ulpfec_payload_type = kUlpfecPayloadType;
802 795
803 (*receive_configs)[0].decoders.resize(1); 796 (*receive_configs)[0].decoders.resize(1);
804 (*receive_configs)[0].decoders[0].payload_type = 797 (*receive_configs)[0].decoders[0].payload_type =
805 send_config->encoder_settings.payload_type; 798 send_config->encoder_settings.payload_type;
806 (*receive_configs)[0].decoders[0].payload_name = 799 (*receive_configs)[0].decoders[0].payload_name =
807 send_config->encoder_settings.payload_name; 800 send_config->encoder_settings.payload_name;
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 test::DirectTransport send_transport(sender_call_.get()); 1106 test::DirectTransport send_transport(sender_call_.get());
1114 test::DirectTransport receive_transport(receiver_call_.get()); 1107 test::DirectTransport receive_transport(receiver_call_.get());
1115 PacketInputObserver input_observer(receiver_call_->Receiver()); 1108 PacketInputObserver input_observer(receiver_call_->Receiver());
1116 send_transport.SetReceiver(&input_observer); 1109 send_transport.SetReceiver(&input_observer);
1117 receive_transport.SetReceiver(sender_call_->Receiver()); 1110 receive_transport.SetReceiver(sender_call_->Receiver());
1118 1111
1119 CreateSendConfig(1, 0, &send_transport); 1112 CreateSendConfig(1, 0, &send_transport);
1120 CreateMatchingReceiveConfigs(&receive_transport); 1113 CreateMatchingReceiveConfigs(&receive_transport);
1121 1114
1122 CreateVideoStreams(); 1115 CreateVideoStreams();
1123 CreateFrameGeneratorCapturer(); 1116 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
1117 kDefaultHeight);
1124 Start(); 1118 Start();
1125 1119
1126 receiver_call_->DestroyVideoReceiveStream(video_receive_streams_[0]); 1120 receiver_call_->DestroyVideoReceiveStream(video_receive_streams_[0]);
1127 video_receive_streams_.clear(); 1121 video_receive_streams_.clear();
1128 1122
1129 // Wait() waits for a received packet. 1123 // Wait() waits for a received packet.
1130 EXPECT_TRUE(input_observer.Wait()); 1124 EXPECT_TRUE(input_observer.Wait());
1131 1125
1132 Stop(); 1126 Stop();
1133 1127
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 uint32_t ssrc = codec_settings[i].ssrc; 1264 uint32_t ssrc = codec_settings[i].ssrc;
1271 int width = codec_settings[i].width; 1265 int width = codec_settings[i].width;
1272 int height = codec_settings[i].height; 1266 int height = codec_settings[i].height;
1273 1267
1274 VideoSendStream::Config send_config(sender_transport.get()); 1268 VideoSendStream::Config send_config(sender_transport.get());
1275 send_config.rtp.ssrcs.push_back(ssrc); 1269 send_config.rtp.ssrcs.push_back(ssrc);
1276 send_config.encoder_settings.encoder = encoders[i].get(); 1270 send_config.encoder_settings.encoder = encoders[i].get();
1277 send_config.encoder_settings.payload_name = "VP8"; 1271 send_config.encoder_settings.payload_name = "VP8";
1278 send_config.encoder_settings.payload_type = 124; 1272 send_config.encoder_settings.payload_type = 124;
1279 VideoEncoderConfig encoder_config; 1273 VideoEncoderConfig encoder_config;
1280 encoder_config.streams = test::CreateVideoStreams(1); 1274 test::FillEncoderConfiguration(1, &encoder_config);
1281 VideoStream* stream = &encoder_config.streams[0]; 1275 encoder_config.max_bitrate_bps = 100000;
1282 stream->width = width;
1283 stream->height = height;
1284 stream->max_framerate = 5;
1285 stream->min_bitrate_bps = stream->target_bitrate_bps =
1286 stream->max_bitrate_bps = 100000;
1287 1276
1288 UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]); 1277 UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]);
1289 1278
1290 send_streams[i] = sender_call->CreateVideoSendStream( 1279 send_streams[i] = sender_call->CreateVideoSendStream(
1291 send_config.Copy(), encoder_config.Copy()); 1280 send_config.Copy(), encoder_config.Copy());
1292 send_streams[i]->Start(); 1281 send_streams[i]->Start();
1293 1282
1294 VideoReceiveStream::Config receive_config(receiver_transport.get()); 1283 VideoReceiveStream::Config receive_config(receiver_transport.get());
1295 receive_config.rtp.remote_ssrc = ssrc; 1284 receive_config.rtp.remote_ssrc = ssrc;
1296 receive_config.rtp.local_ssrc = test::CallTest::kReceiverLocalVideoSsrc; 1285 receive_config.rtp.local_ssrc = test::CallTest::kReceiverLocalVideoSsrc;
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
1554 size_t stream_index, 1543 size_t stream_index,
1555 VideoSendStream::Config* send_config, 1544 VideoSendStream::Config* send_config,
1556 VideoEncoderConfig* encoder_config, 1545 VideoEncoderConfig* encoder_config,
1557 test::FrameGeneratorCapturer** frame_generator) override { 1546 test::FrameGeneratorCapturer** frame_generator) override {
1558 send_config->rtp.extensions.clear(); 1547 send_config->rtp.extensions.clear();
1559 send_config->rtp.extensions.push_back(RtpExtension( 1548 send_config->rtp.extensions.push_back(RtpExtension(
1560 RtpExtension::kTransportSequenceNumberUri, kExtensionId)); 1549 RtpExtension::kTransportSequenceNumberUri, kExtensionId));
1561 1550
1562 // Force some padding to be sent. 1551 // Force some padding to be sent.
1563 const int kPaddingBitrateBps = 50000; 1552 const int kPaddingBitrateBps = 50000;
1564 int total_target_bitrate = 0; 1553 encoder_config->max_bitrate_bps = 1000000;
1565 for (const VideoStream& stream : encoder_config->streams)
1566 total_target_bitrate += stream.target_bitrate_bps;
1567 encoder_config->min_transmit_bitrate_bps = 1554 encoder_config->min_transmit_bitrate_bps =
1568 total_target_bitrate + kPaddingBitrateBps; 1555 encoder_config->max_bitrate_bps + kPaddingBitrateBps;
1569 1556
1570 // Configure RTX for redundant payload padding. 1557 // Configure RTX for redundant payload padding.
1571 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 1558 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
1572 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[stream_index]); 1559 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[stream_index]);
1573 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; 1560 send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
1574 rtx_to_media_ssrcs_[kSendRtxSsrcs[stream_index]] = 1561 rtx_to_media_ssrcs_[kSendRtxSsrcs[stream_index]] =
1575 send_config->rtp.ssrcs[0]; 1562 send_config->rtp.ssrcs[0];
1576 1563
1577 if (stream_index == 0) 1564 if (stream_index == 0)
1578 first_media_ssrc_ = send_config->rtp.ssrcs[0]; 1565 first_media_ssrc_ = send_config->rtp.ssrcs[0];
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1758 1745
1759 CreateSendConfig(1, 0, &sender_transport); 1746 CreateSendConfig(1, 0, &sender_transport);
1760 CreateMatchingReceiveConfigs(&receiver_transport); 1747 CreateMatchingReceiveConfigs(&receiver_transport);
1761 video_send_config_.post_encode_callback = &post_encode_observer; 1748 video_send_config_.post_encode_callback = &post_encode_observer;
1762 video_receive_configs_[0].pre_decode_callback = &pre_decode_observer; 1749 video_receive_configs_[0].pre_decode_callback = &pre_decode_observer;
1763 1750
1764 CreateVideoStreams(); 1751 CreateVideoStreams();
1765 Start(); 1752 Start();
1766 1753
1767 std::unique_ptr<test::FrameGenerator> frame_generator( 1754 std::unique_ptr<test::FrameGenerator> frame_generator(
1768 test::FrameGenerator::CreateChromaGenerator( 1755 test::FrameGenerator::CreateChromaGenerator(kDefaultWidth,
1769 video_encoder_config_.streams[0].width, 1756 kDefaultHeight));
1770 video_encoder_config_.streams[0].height));
1771 test::FrameForwarder forwarder; 1757 test::FrameForwarder forwarder;
1772 video_send_stream_->SetSource(&forwarder); 1758 video_send_stream_->SetSource(&forwarder);
1773 forwarder.IncomingCapturedFrame(*frame_generator->NextFrame()); 1759 forwarder.IncomingCapturedFrame(*frame_generator->NextFrame());
1774 1760
1775 EXPECT_TRUE(post_encode_observer.Wait()) 1761 EXPECT_TRUE(post_encode_observer.Wait())
1776 << "Timed out while waiting for send-side encoded-frame callback."; 1762 << "Timed out while waiting for send-side encoded-frame callback.";
1777 1763
1778 EXPECT_TRUE(pre_decode_observer.Wait()) 1764 EXPECT_TRUE(pre_decode_observer.Wait())
1779 << "Timed out while waiting for pre-decode encoded-frame callback."; 1765 << "Timed out while waiting for pre-decode encoded-frame callback.";
1780 1766
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1911 VideoSendStream::Config* send_config, 1897 VideoSendStream::Config* send_config,
1912 std::vector<VideoReceiveStream::Config>* receive_configs, 1898 std::vector<VideoReceiveStream::Config>* receive_configs,
1913 VideoEncoderConfig* encoder_config) override { 1899 VideoEncoderConfig* encoder_config) override {
1914 ASSERT_EQ(1u, send_config->rtp.ssrcs.size()); 1900 ASSERT_EQ(1u, send_config->rtp.ssrcs.size());
1915 send_config->rtp.extensions.clear(); 1901 send_config->rtp.extensions.clear();
1916 send_config->rtp.extensions.push_back( 1902 send_config->rtp.extensions.push_back(
1917 RtpExtension(RtpExtension::kTransportSequenceNumberUri, 1903 RtpExtension(RtpExtension::kTransportSequenceNumberUri,
1918 test::kTransportSequenceNumberExtensionId)); 1904 test::kTransportSequenceNumberExtensionId));
1919 sender_ssrc_ = send_config->rtp.ssrcs[0]; 1905 sender_ssrc_ = send_config->rtp.ssrcs[0];
1920 1906
1921 encoder_config->streams[0].max_bitrate_bps = 1907 encoder_config->max_bitrate_bps = 2000000;
1922 encoder_config->streams[0].target_bitrate_bps = 2000000;
1923 1908
1924 ASSERT_EQ(1u, receive_configs->size()); 1909 ASSERT_EQ(1u, receive_configs->size());
1925 (*receive_configs)[0].rtp.remb = false; 1910 (*receive_configs)[0].rtp.remb = false;
1926 (*receive_configs)[0].rtp.transport_cc = true; 1911 (*receive_configs)[0].rtp.transport_cc = true;
1927 (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions; 1912 (*receive_configs)[0].rtp.extensions = send_config->rtp.extensions;
1928 RtpRtcp::Configuration config; 1913 RtpRtcp::Configuration config;
1929 config.receiver_only = true; 1914 config.receiver_only = true;
1930 config.clock = clock_; 1915 config.clock = clock_;
1931 config.outgoing_transport = receive_transport_; 1916 config.outgoing_transport = receive_transport_;
1932 config.retransmission_rate_limiter = &retransmission_rate_limiter_; 1917 config.retransmission_rate_limiter = &retransmission_rate_limiter_;
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
2251 EXPECT_EQ(1, 2236 EXPECT_EQ(1,
2252 metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent")); 2237 metrics::NumSamples("WebRTC.Video.ReceivedPacketsLostInPercent"));
2253 2238
2254 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputWidthInPixels")); 2239 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputWidthInPixels"));
2255 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputHeightInPixels")); 2240 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputHeightInPixels"));
2256 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentWidthInPixels")); 2241 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentWidthInPixels"));
2257 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentHeightInPixels")); 2242 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentHeightInPixels"));
2258 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedWidthInPixels")); 2243 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedWidthInPixels"));
2259 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedHeightInPixels")); 2244 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.ReceivedHeightInPixels"));
2260 2245
2261 EXPECT_EQ(1, metrics::NumEvents( 2246 EXPECT_EQ(1, metrics::NumEvents(video_prefix + "InputWidthInPixels",
2262 video_prefix + "InputWidthInPixels", 2247 kDefaultWidth));
2263 static_cast<int>(video_encoder_config_.streams[0].width))); 2248 EXPECT_EQ(1, metrics::NumEvents(video_prefix + "InputHeightInPixels",
2264 EXPECT_EQ(1, metrics::NumEvents( 2249 kDefaultHeight));
2265 video_prefix + "InputHeightInPixels", 2250 EXPECT_EQ(
2266 static_cast<int>(video_encoder_config_.streams[0].height))); 2251 1, metrics::NumEvents(video_prefix + "SentWidthInPixels", kDefaultWidth));
2267 EXPECT_EQ(1, metrics::NumEvents( 2252 EXPECT_EQ(1, metrics::NumEvents(video_prefix + "SentHeightInPixels",
2268 video_prefix + "SentWidthInPixels", 2253 kDefaultHeight));
2269 static_cast<int>(video_encoder_config_.streams[0].width))); 2254 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.ReceivedWidthInPixels",
2270 EXPECT_EQ(1, metrics::NumEvents( 2255 kDefaultWidth));
2271 video_prefix + "SentHeightInPixels", 2256 EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.ReceivedHeightInPixels",
2272 static_cast<int>(video_encoder_config_.streams[0].height))); 2257 kDefaultHeight));
2273 EXPECT_EQ(1, metrics::NumEvents(
2274 "WebRTC.Video.ReceivedWidthInPixels",
2275 static_cast<int>(video_encoder_config_.streams[0].width)));
2276 EXPECT_EQ(1, metrics::NumEvents(
2277 "WebRTC.Video.ReceivedHeightInPixels",
2278 static_cast<int>(video_encoder_config_.streams[0].height)));
2279 2258
2280 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputFramesPerSecond")); 2259 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "InputFramesPerSecond"));
2281 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentFramesPerSecond")); 2260 EXPECT_EQ(1, metrics::NumSamples(video_prefix + "SentFramesPerSecond"));
2282 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DecodedFramesPerSecond")); 2261 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.DecodedFramesPerSecond"));
2283 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RenderFramesPerSecond")); 2262 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.RenderFramesPerSecond"));
2284 2263
2285 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.JitterBufferDelayInMs")); 2264 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.JitterBufferDelayInMs"));
2286 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.TargetDelayInMs")); 2265 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.TargetDelayInMs"));
2287 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.CurrentDelayInMs")); 2266 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.CurrentDelayInMs"));
2288 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.OnewayDelayInMs")); 2267 EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.OnewayDelayInMs"));
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
2473 } 2452 }
2474 2453
2475 if (ssrcs_to_observe_ == 0) 2454 if (ssrcs_to_observe_ == 0)
2476 observation_complete_.Set(); 2455 observation_complete_.Set();
2477 2456
2478 return SEND_PACKET; 2457 return SEND_PACKET;
2479 } 2458 }
2480 2459
2481 size_t GetNumVideoStreams() const override { return num_ssrcs_; } 2460 size_t GetNumVideoStreams() const override { return num_ssrcs_; }
2482 2461
2462 class VideoStreamFactory
2463 : public VideoEncoderConfig::VideoStreamFactoryInterface {
2464 public:
2465 VideoStreamFactory() {}
2466
2467 private:
2468 std::vector<VideoStream> CreateEncoderStreams(
2469 int width,
2470 int height,
2471 const VideoEncoderConfig& encoder_config) override {
2472 std::vector<VideoStream> streams =
2473 test::CreateVideoStreams(width, height, encoder_config);
2474 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
2475 for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
2476 streams[i].min_bitrate_bps = 10000;
2477 streams[i].target_bitrate_bps = 15000;
2478 streams[i].max_bitrate_bps = 20000;
2479 }
2480 return streams;
2481 }
2482 };
2483
2483 void ModifyVideoConfigs( 2484 void ModifyVideoConfigs(
2484 VideoSendStream::Config* send_config, 2485 VideoSendStream::Config* send_config,
2485 std::vector<VideoReceiveStream::Config>* receive_configs, 2486 std::vector<VideoReceiveStream::Config>* receive_configs,
2486 VideoEncoderConfig* encoder_config) override { 2487 VideoEncoderConfig* encoder_config) override {
2487 if (num_ssrcs_ > 1) { 2488 encoder_config->encoder_stream_factory =
2488 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. 2489 new rtc::RefCountedObject<VideoStreamFactory>();
2489 for (size_t i = 0; i < encoder_config->streams.size(); ++i) {
2490 encoder_config->streams[i].min_bitrate_bps = 10000;
2491 encoder_config->streams[i].target_bitrate_bps = 15000;
2492 encoder_config->streams[i].max_bitrate_bps = 20000;
2493 }
2494 }
2495
2496 video_encoder_config_all_streams_ = encoder_config->Copy(); 2490 video_encoder_config_all_streams_ = encoder_config->Copy();
2497 if (send_single_ssrc_first_) 2491 if (send_single_ssrc_first_)
2498 encoder_config->streams.resize(1); 2492 encoder_config->number_of_streams = 1;
2499 } 2493 }
2500 2494
2501 void OnVideoStreamsCreated( 2495 void OnVideoStreamsCreated(
2502 VideoSendStream* send_stream, 2496 VideoSendStream* send_stream,
2503 const std::vector<VideoReceiveStream*>& receive_streams) override { 2497 const std::vector<VideoReceiveStream*>& receive_streams) override {
2504 send_stream_ = send_stream; 2498 send_stream_ = send_stream;
2505 } 2499 }
2506 2500
2507 void PerformTest() override { 2501 void PerformTest() override {
2508 EXPECT_TRUE(Wait()) << "Timed out while waiting for " 2502 EXPECT_TRUE(Wait()) << "Timed out while waiting for "
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2548 VideoSendStream* send_stream, 2542 VideoSendStream* send_stream,
2549 const std::vector<VideoReceiveStream*>& receive_streams) override { 2543 const std::vector<VideoReceiveStream*>& receive_streams) override {
2550 send_stream_ = send_stream; 2544 send_stream_ = send_stream;
2551 } 2545 }
2552 2546
2553 void ModifyVideoConfigs( 2547 void ModifyVideoConfigs(
2554 VideoSendStream::Config* send_config, 2548 VideoSendStream::Config* send_config,
2555 std::vector<VideoReceiveStream::Config>* receive_configs, 2549 std::vector<VideoReceiveStream::Config>* receive_configs,
2556 VideoEncoderConfig* encoder_config) override { 2550 VideoEncoderConfig* encoder_config) override {
2557 send_config->encoder_settings.encoder = this; 2551 send_config->encoder_settings.encoder = this;
2558 RTC_DCHECK_EQ(1u, encoder_config->streams.size()); 2552 RTC_DCHECK_EQ(1u, encoder_config->number_of_streams);
2559 } 2553 }
2560 2554
2561 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override { 2555 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override {
2562 // Make sure not to trigger on any default zero bitrates. 2556 // Make sure not to trigger on any default zero bitrates.
2563 if (new_target_bitrate == 0) 2557 if (new_target_bitrate == 0)
2564 return 0; 2558 return 0;
2565 rtc::CritScope lock(&crit_); 2559 rtc::CritScope lock(&crit_);
2566 bitrate_kbps_ = new_target_bitrate; 2560 bitrate_kbps_ = new_target_bitrate;
2567 observation_complete_.Set(); 2561 observation_complete_.Set();
2568 return 0; 2562 return 0;
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
2817 return new test::PacketTransport( 2811 return new test::PacketTransport(
2818 sender_call, this, test::PacketTransport::kSender, network_config); 2812 sender_call, this, test::PacketTransport::kSender, network_config);
2819 } 2813 }
2820 2814
2821 Call::Config GetSenderCallConfig() override { 2815 Call::Config GetSenderCallConfig() override {
2822 Call::Config config = EndToEndTest::GetSenderCallConfig(); 2816 Call::Config config = EndToEndTest::GetSenderCallConfig();
2823 config.bitrate_config.start_bitrate_bps = kStartBitrateBps; 2817 config.bitrate_config.start_bitrate_bps = kStartBitrateBps;
2824 return config; 2818 return config;
2825 } 2819 }
2826 2820
2821 class VideoStreamFactory
2822 : public VideoEncoderConfig::VideoStreamFactoryInterface {
2823 public:
2824 VideoStreamFactory() {}
2825
2826 private:
2827 std::vector<VideoStream> CreateEncoderStreams(
2828 int width,
2829 int height,
2830 const VideoEncoderConfig& encoder_config) override {
2831 std::vector<VideoStream> streams =
2832 test::CreateVideoStreams(width, height, encoder_config);
2833 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
2834 for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
2835 streams[i].min_bitrate_bps = 10000;
2836 streams[i].target_bitrate_bps = 15000;
2837 streams[i].max_bitrate_bps = 20000;
2838 }
2839 return streams;
2840 }
2841 };
sprang_webrtc 2016/09/22 13:06:16 This looks like a duplicate from above. Also very
perkj_webrtc 2016/09/26 12:09:42 yes but these tests override the default. That is
sprang_webrtc 2016/09/26 13:47:37 Acknowledged.
2842
2827 void ModifyVideoConfigs( 2843 void ModifyVideoConfigs(
2828 VideoSendStream::Config* send_config, 2844 VideoSendStream::Config* send_config,
2829 std::vector<VideoReceiveStream::Config>* receive_configs, 2845 std::vector<VideoReceiveStream::Config>* receive_configs,
2830 VideoEncoderConfig* encoder_config) override { 2846 VideoEncoderConfig* encoder_config) override {
2831 // Set low rates to avoid waiting for rampup. 2847 encoder_config->encoder_stream_factory =
2832 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { 2848 new rtc::RefCountedObject<VideoStreamFactory>();
2833 encoder_config->streams[i].min_bitrate_bps = 10000;
2834 encoder_config->streams[i].target_bitrate_bps = 15000;
2835 encoder_config->streams[i].max_bitrate_bps = 20000;
2836 }
2837 send_config->pre_encode_callback = this; // Used to inject delay. 2849 send_config->pre_encode_callback = this; // Used to inject delay.
2838 expected_cname_ = send_config->rtp.c_name = "SomeCName"; 2850 expected_cname_ = send_config->rtp.c_name = "SomeCName";
2839 2851
2840 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 2852 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
2841 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; 2853 send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
2842 2854
2843 const std::vector<uint32_t>& ssrcs = send_config->rtp.ssrcs; 2855 const std::vector<uint32_t>& ssrcs = send_config->rtp.ssrcs;
2844 for (size_t i = 0; i < ssrcs.size(); ++i) { 2856 for (size_t i = 0; i < ssrcs.size(); ++i) {
2845 expected_send_ssrcs_.insert(ssrcs[i]); 2857 expected_send_ssrcs_.insert(ssrcs[i]);
2846 expected_receive_ssrcs_.push_back( 2858 expected_receive_ssrcs_.push_back(
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
3019 observed_redundant_retransmission_[header.ssrc] = true; 3031 observed_redundant_retransmission_[header.ssrc] = true;
3020 if (--ssrcs_to_observe_ == 0) 3032 if (--ssrcs_to_observe_ == 0)
3021 observation_complete_.Set(); 3033 observation_complete_.Set();
3022 } 3034 }
3023 3035
3024 return SEND_PACKET; 3036 return SEND_PACKET;
3025 } 3037 }
3026 3038
3027 size_t GetNumVideoStreams() const override { return kNumSsrcs; } 3039 size_t GetNumVideoStreams() const override { return kNumSsrcs; }
3028 3040
3041 class VideoStreamFactory
3042 : public VideoEncoderConfig::VideoStreamFactoryInterface {
3043 public:
3044 VideoStreamFactory() {}
3045
3046 private:
3047 std::vector<VideoStream> CreateEncoderStreams(
3048 int width,
3049 int height,
3050 const VideoEncoderConfig& encoder_config) override {
3051 std::vector<VideoStream> streams =
3052 test::CreateVideoStreams(width, height, encoder_config);
3053 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
3054 for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
3055 streams[i].min_bitrate_bps = 10000;
3056 streams[i].target_bitrate_bps = 15000;
3057 streams[i].max_bitrate_bps = 20000;
3058 }
3059 return streams;
3060 }
3061 };
3062
3029 void ModifyVideoConfigs( 3063 void ModifyVideoConfigs(
3030 VideoSendStream::Config* send_config, 3064 VideoSendStream::Config* send_config,
3031 std::vector<VideoReceiveStream::Config>* receive_configs, 3065 std::vector<VideoReceiveStream::Config>* receive_configs,
3032 VideoEncoderConfig* encoder_config) override { 3066 VideoEncoderConfig* encoder_config) override {
3033 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up. 3067 // Set low simulcast bitrates to not have to wait for bandwidth ramp-up.
3034 for (size_t i = 0; i < encoder_config->streams.size(); ++i) { 3068 encoder_config->encoder_stream_factory =
3035 encoder_config->streams[i].min_bitrate_bps = 10000; 3069 new rtc::RefCountedObject<VideoStreamFactory>();
3036 encoder_config->streams[i].target_bitrate_bps = 15000;
3037 encoder_config->streams[i].max_bitrate_bps = 20000;
3038 }
3039
3040 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; 3070 send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
3041 3071
3042 for (size_t i = 0; i < kNumSsrcs; ++i) 3072 for (size_t i = 0; i < kNumSsrcs; ++i)
3043 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); 3073 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]);
3044 3074
3045 // Significantly higher than max bitrates for all video streams -> forcing 3075 // Significantly higher than max bitrates for all video streams -> forcing
3046 // padding to trigger redundant padding on all RTX SSRCs. 3076 // padding to trigger redundant padding on all RTX SSRCs.
3047 encoder_config->min_transmit_bitrate_bps = 100000; 3077 encoder_config->min_transmit_bitrate_bps = 100000;
3048 } 3078 }
3049 3079
3050 void PerformTest() override { 3080 void PerformTest() override {
3051 EXPECT_TRUE(Wait()) 3081 EXPECT_TRUE(Wait())
3052 << "Timed out while waiting for redundant payloads on all SSRCs."; 3082 << "Timed out while waiting for redundant payloads on all SSRCs.";
3053 } 3083 }
3054 3084
3055 private: 3085 private:
3056 size_t ssrcs_to_observe_; 3086 size_t ssrcs_to_observe_;
3057 std::map<uint32_t, bool> observed_redundant_retransmission_; 3087 std::map<uint32_t, bool> observed_redundant_retransmission_;
3058 std::map<uint32_t, bool> registered_rtx_ssrc_; 3088 std::map<uint32_t, bool> registered_rtx_ssrc_;
3059 } test; 3089 } test;
3060 3090
3061 RunBaseTest(&test); 3091 RunBaseTest(&test);
3062 } 3092 }
3063 3093
3064 void EndToEndTest::TestRtpStatePreservation(bool use_rtx, 3094 void EndToEndTest::TestRtpStatePreservation(bool use_rtx,
3065 bool provoke_rtcpsr_before_rtp) { 3095 bool provoke_rtcpsr_before_rtp) {
3096 class VideoStreamFactory
3097 : public VideoEncoderConfig::VideoStreamFactoryInterface {
3098 public:
3099 VideoStreamFactory() {}
3100
3101 private:
3102 std::vector<VideoStream> CreateEncoderStreams(
3103 int width,
3104 int height,
3105 const VideoEncoderConfig& encoder_config) override {
3106 std::vector<VideoStream> streams =
3107 test::CreateVideoStreams(width, height, encoder_config);
3108
3109 if (encoder_config.number_of_streams > 1) {
3110 // Lower bitrates so that all streams send initially.
3111 RTC_DCHECK_EQ(3u, encoder_config.number_of_streams);
3112 for (size_t i = 0; i < encoder_config.number_of_streams; ++i) {
3113 streams[i].min_bitrate_bps = 10000;
3114 streams[i].target_bitrate_bps = 15000;
3115 streams[i].max_bitrate_bps = 20000;
3116 }
3117 } else {
3118 // Use the same total bitrates when sending a single stream to avoid
3119 // lowering
3120 // the bitrate estimate and requiring a subsequent rampup.
3121 streams[0].min_bitrate_bps = 3 * 10000;
3122 streams[0].target_bitrate_bps = 3 * 15000;
3123 streams[0].max_bitrate_bps = 3 * 20000;
3124 }
3125 return streams;
3126 }
3127 };
3128
3066 class RtpSequenceObserver : public test::RtpRtcpObserver { 3129 class RtpSequenceObserver : public test::RtpRtcpObserver {
3067 public: 3130 public:
3068 explicit RtpSequenceObserver(bool use_rtx) 3131 explicit RtpSequenceObserver(bool use_rtx)
3069 : test::RtpRtcpObserver(kDefaultTimeoutMs), 3132 : test::RtpRtcpObserver(kDefaultTimeoutMs),
3070 ssrcs_to_observe_(kNumSsrcs) { 3133 ssrcs_to_observe_(kNumSsrcs) {
3071 for (size_t i = 0; i < kNumSsrcs; ++i) { 3134 for (size_t i = 0; i < kNumSsrcs; ++i) {
3072 ssrc_is_rtx_[kVideoSendSsrcs[i]] = false; 3135 ssrc_is_rtx_[kVideoSendSsrcs[i]] = false;
3073 if (use_rtx) 3136 if (use_rtx)
3074 ssrc_is_rtx_[kSendRtxSsrcs[i]] = true; 3137 ssrc_is_rtx_[kSendRtxSsrcs[i]] = true;
3075 } 3138 }
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
3191 3254
3192 CreateSendConfig(kNumSsrcs, 0, &send_transport); 3255 CreateSendConfig(kNumSsrcs, 0, &send_transport);
3193 3256
3194 if (use_rtx) { 3257 if (use_rtx) {
3195 for (size_t i = 0; i < kNumSsrcs; ++i) { 3258 for (size_t i = 0; i < kNumSsrcs; ++i) {
3196 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); 3259 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]);
3197 } 3260 }
3198 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; 3261 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType;
3199 } 3262 }
3200 3263
3201 // Lower bitrates so that all streams send initially. 3264 video_encoder_config_.encoder_stream_factory =
3202 for (size_t i = 0; i < video_encoder_config_.streams.size(); ++i) { 3265 new rtc::RefCountedObject<VideoStreamFactory>();
3203 video_encoder_config_.streams[i].min_bitrate_bps = 10000;
3204 video_encoder_config_.streams[i].target_bitrate_bps = 15000;
3205 video_encoder_config_.streams[i].max_bitrate_bps = 20000;
3206 }
3207
3208 // Use the same total bitrates when sending a single stream to avoid lowering 3266 // Use the same total bitrates when sending a single stream to avoid lowering
3209 // the bitrate estimate and requiring a subsequent rampup. 3267 // the bitrate estimate and requiring a subsequent rampup.
3210 VideoEncoderConfig one_stream = video_encoder_config_.Copy(); 3268 VideoEncoderConfig one_stream = video_encoder_config_.Copy();
3211 one_stream.streams.resize(1); 3269 // one_stream.streams.resize(1);
3212 for (size_t i = 1; i < video_encoder_config_.streams.size(); ++i) { 3270 one_stream.number_of_streams = 1;
3213 one_stream.streams.front().min_bitrate_bps +=
3214 video_encoder_config_.streams[i].min_bitrate_bps;
3215 one_stream.streams.front().target_bitrate_bps +=
3216 video_encoder_config_.streams[i].target_bitrate_bps;
3217 one_stream.streams.front().max_bitrate_bps +=
3218 video_encoder_config_.streams[i].max_bitrate_bps;
3219 }
3220
3221 CreateMatchingReceiveConfigs(&receive_transport); 3271 CreateMatchingReceiveConfigs(&receive_transport);
3222 3272
3223 CreateVideoStreams(); 3273 CreateVideoStreams();
3224 CreateFrameGeneratorCapturer(); 3274 CreateFrameGeneratorCapturer(30, 1280, 720);
3225 3275
3226 Start(); 3276 Start();
3227 EXPECT_TRUE(observer.Wait()) 3277 EXPECT_TRUE(observer.Wait())
3228 << "Timed out waiting for all SSRCs to send packets."; 3278 << "Timed out waiting for all SSRCs to send packets.";
3229 3279
3230 // Test stream resetting more than once to make sure that the state doesn't 3280 // Test stream resetting more than once to make sure that the state doesn't
3231 // get set once (this could be due to using std::map::insert for instance). 3281 // get set once (this could be due to using std::map::insert for instance).
3232 for (size_t i = 0; i < 3; ++i) { 3282 for (size_t i = 0; i < 3; ++i) {
3233 frame_generator_capturer_->Stop(); 3283 frame_generator_capturer_->Stop();
3234 sender_call_->DestroyVideoSendStream(video_send_stream_); 3284 sender_call_->DestroyVideoSendStream(video_send_stream_);
3235 3285
3236 // Re-create VideoSendStream with only one stream. 3286 // Re-create VideoSendStream with only one stream.
3237 video_send_stream_ = sender_call_->CreateVideoSendStream( 3287 video_send_stream_ = sender_call_->CreateVideoSendStream(
3238 video_send_config_.Copy(), one_stream.Copy()); 3288 video_send_config_.Copy(), one_stream.Copy());
3239 video_send_stream_->Start(); 3289 video_send_stream_->Start();
3240 if (provoke_rtcpsr_before_rtp) { 3290 if (provoke_rtcpsr_before_rtp) {
3241 // Rapid Resync Request forces sending RTCP Sender Report back. 3291 // Rapid Resync Request forces sending RTCP Sender Report back.
3242 // Using this request speeds up this test because then there is no need 3292 // Using this request speeds up this test because then there is no need
3243 // to wait for a second for periodic Sender Report. 3293 // to wait for a second for periodic Sender Report.
3244 rtcp::RapidResyncRequest force_send_sr_back_request; 3294 rtcp::RapidResyncRequest force_send_sr_back_request;
3245 rtc::Buffer packet = force_send_sr_back_request.Build(); 3295 rtc::Buffer packet = force_send_sr_back_request.Build();
3246 static_cast<webrtc::test::DirectTransport&>(receive_transport) 3296 static_cast<webrtc::test::DirectTransport&>(receive_transport)
3247 .SendRtcp(packet.data(), packet.size()); 3297 .SendRtcp(packet.data(), packet.size());
3248 } 3298 }
3249 CreateFrameGeneratorCapturer(); 3299 CreateFrameGeneratorCapturer(30, 1280, 720);
3250 frame_generator_capturer_->Start(); 3300 frame_generator_capturer_->Start();
3251 3301
3252 observer.ResetExpectedSsrcs(1); 3302 observer.ResetExpectedSsrcs(1);
3253 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet."; 3303 EXPECT_TRUE(observer.Wait()) << "Timed out waiting for single RTP packet.";
3254 3304
3255 // Reconfigure back to use all streams. 3305 // Reconfigure back to use all streams.
3256 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy()); 3306 video_send_stream_->ReconfigureVideoEncoder(video_encoder_config_.Copy());
3257 observer.ResetExpectedSsrcs(kNumSsrcs); 3307 observer.ResetExpectedSsrcs(kNumSsrcs);
3258 EXPECT_TRUE(observer.Wait()) 3308 EXPECT_TRUE(observer.Wait())
3259 << "Timed out waiting for all SSRCs to send packets."; 3309 << "Timed out waiting for all SSRCs to send packets.";
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
3494 test::DirectTransport sender_transport(config, sender_call_.get()); 3544 test::DirectTransport sender_transport(config, sender_call_.get());
3495 config.queue_delay_ms = kReceiveDelayMs; 3545 config.queue_delay_ms = kReceiveDelayMs;
3496 test::DirectTransport receiver_transport(config, receiver_call_.get()); 3546 test::DirectTransport receiver_transport(config, receiver_call_.get());
3497 sender_transport.SetReceiver(receiver_call_->Receiver()); 3547 sender_transport.SetReceiver(receiver_call_->Receiver());
3498 receiver_transport.SetReceiver(sender_call_->Receiver()); 3548 receiver_transport.SetReceiver(sender_call_->Receiver());
3499 3549
3500 CreateSendConfig(1, 0, &sender_transport); 3550 CreateSendConfig(1, 0, &sender_transport);
3501 CreateMatchingReceiveConfigs(&receiver_transport); 3551 CreateMatchingReceiveConfigs(&receiver_transport);
3502 3552
3503 CreateVideoStreams(); 3553 CreateVideoStreams();
3504 CreateFrameGeneratorCapturer(); 3554 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
3555 kDefaultHeight);
3505 Start(); 3556 Start();
3506 3557
3507 int64_t start_time_ms = clock_->TimeInMilliseconds(); 3558 int64_t start_time_ms = clock_->TimeInMilliseconds();
3508 while (true) { 3559 while (true) {
3509 Call::Stats stats = sender_call_->GetStats(); 3560 Call::Stats stats = sender_call_->GetStats();
3510 ASSERT_GE(start_time_ms + kDefaultTimeoutMs, 3561 ASSERT_GE(start_time_ms + kDefaultTimeoutMs,
3511 clock_->TimeInMilliseconds()) 3562 clock_->TimeInMilliseconds())
3512 << "No RTT stats before timeout!"; 3563 << "No RTT stats before timeout!";
3513 if (stats.rtt_ms != -1) { 3564 if (stats.rtt_ms != -1) {
3514 // To avoid failures caused by rounding or minor ntp clock adjustments, 3565 // To avoid failures caused by rounding or minor ntp clock adjustments,
(...skipping 12 matching lines...) Expand all
3527 void EndToEndTest::VerifyNewVideoSendStreamsRespectNetworkState( 3578 void EndToEndTest::VerifyNewVideoSendStreamsRespectNetworkState(
3528 MediaType network_to_bring_down, 3579 MediaType network_to_bring_down,
3529 VideoEncoder* encoder, 3580 VideoEncoder* encoder,
3530 Transport* transport) { 3581 Transport* transport) {
3531 CreateSenderCall(Call::Config()); 3582 CreateSenderCall(Call::Config());
3532 sender_call_->SignalChannelNetworkState(network_to_bring_down, kNetworkDown); 3583 sender_call_->SignalChannelNetworkState(network_to_bring_down, kNetworkDown);
3533 3584
3534 CreateSendConfig(1, 0, transport); 3585 CreateSendConfig(1, 0, transport);
3535 video_send_config_.encoder_settings.encoder = encoder; 3586 video_send_config_.encoder_settings.encoder = encoder;
3536 CreateVideoStreams(); 3587 CreateVideoStreams();
3537 CreateFrameGeneratorCapturer(); 3588 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
3589 kDefaultHeight);
3538 3590
3539 Start(); 3591 Start();
3540 SleepMs(kSilenceTimeoutMs); 3592 SleepMs(kSilenceTimeoutMs);
3541 Stop(); 3593 Stop();
3542 3594
3543 DestroyStreams(); 3595 DestroyStreams();
3544 } 3596 }
3545 3597
3546 void EndToEndTest::VerifyNewVideoReceiveStreamsRespectNetworkState( 3598 void EndToEndTest::VerifyNewVideoReceiveStreamsRespectNetworkState(
3547 MediaType network_to_bring_down, 3599 MediaType network_to_bring_down,
3548 Transport* transport) { 3600 Transport* transport) {
3549 CreateCalls(Call::Config(), Call::Config()); 3601 CreateCalls(Call::Config(), Call::Config());
3550 receiver_call_->SignalChannelNetworkState(network_to_bring_down, 3602 receiver_call_->SignalChannelNetworkState(network_to_bring_down,
3551 kNetworkDown); 3603 kNetworkDown);
3552 3604
3553 test::DirectTransport sender_transport(sender_call_.get()); 3605 test::DirectTransport sender_transport(sender_call_.get());
3554 sender_transport.SetReceiver(receiver_call_->Receiver()); 3606 sender_transport.SetReceiver(receiver_call_->Receiver());
3555 CreateSendConfig(1, 0, &sender_transport); 3607 CreateSendConfig(1, 0, &sender_transport);
3556 CreateMatchingReceiveConfigs(transport); 3608 CreateMatchingReceiveConfigs(transport);
3557 CreateVideoStreams(); 3609 CreateVideoStreams();
3558 CreateFrameGeneratorCapturer(); 3610 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
3611 kDefaultHeight);
3559 3612
3560 Start(); 3613 Start();
3561 SleepMs(kSilenceTimeoutMs); 3614 SleepMs(kSilenceTimeoutMs);
3562 Stop(); 3615 Stop();
3563 3616
3564 sender_transport.StopSending(); 3617 sender_transport.StopSending();
3565 3618
3566 DestroyStreams(); 3619 DestroyStreams();
3567 } 3620 }
3568 3621
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
3741 private: 3794 private:
3742 bool video_observed_; 3795 bool video_observed_;
3743 bool audio_observed_; 3796 bool audio_observed_;
3744 SequenceNumberUnwrapper unwrapper_; 3797 SequenceNumberUnwrapper unwrapper_;
3745 std::set<int64_t> received_packet_ids_; 3798 std::set<int64_t> received_packet_ids_;
3746 } test; 3799 } test;
3747 3800
3748 RunBaseTest(&test); 3801 RunBaseTest(&test);
3749 } 3802 }
3750 } // namespace webrtc 3803 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698