OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |