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

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

Issue 2794243002: Making FakeNetworkPipe demux audio and video packets. (Closed)
Patch Set: fixing android Created 3 years, 8 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 #if defined(MEMORY_SANITIZER) 59 #if defined(MEMORY_SANITIZER)
60 // Flaky under MemorySanitizer, see 60 // Flaky under MemorySanitizer, see
61 // https://bugs.chromium.org/p/webrtc/issues/detail?id=7419 61 // https://bugs.chromium.org/p/webrtc/issues/detail?id=7419
62 #define MAYBE_InitialProbing DISABLED_InitialProbing 62 #define MAYBE_InitialProbing DISABLED_InitialProbing
63 #else 63 #else
64 #define MAYBE_InitialProbing InitialProbing 64 #define MAYBE_InitialProbing InitialProbing
65 #endif 65 #endif
66 66
67 namespace webrtc { 67 namespace webrtc {
68 68
69 static const int kSilenceTimeoutMs = 2000; 69 namespace {
70 constexpr int kSilenceTimeoutMs = 2000;
71 }
70 72
71 class EndToEndTest : public test::CallTest { 73 class EndToEndTest : public test::CallTest {
72 public: 74 public:
73 EndToEndTest() {} 75 EndToEndTest() {}
74 76
75 virtual ~EndToEndTest() { 77 virtual ~EndToEndTest() {
76 EXPECT_EQ(nullptr, video_send_stream_); 78 EXPECT_EQ(nullptr, video_send_stream_);
77 EXPECT_TRUE(video_receive_streams_.empty()); 79 EXPECT_TRUE(video_receive_streams_.empty());
78 } 80 }
79 81
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 event_.Set(); 205 event_.Set();
204 } 206 }
205 207
206 bool Wait() { return event_.Wait(kDefaultTimeoutMs); } 208 bool Wait() { return event_.Wait(kDefaultTimeoutMs); }
207 209
208 rtc::Event event_; 210 rtc::Event event_;
209 } renderer; 211 } renderer;
210 212
211 CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get())); 213 CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get()));
212 214
213 test::DirectTransport sender_transport( 215 test::DirectTransport sender_transport(sender_call_.get(), payload_type_map_);
214 sender_call_.get(), MediaType::VIDEO); 216 test::DirectTransport receiver_transport(receiver_call_.get(),
215 test::DirectTransport receiver_transport( 217 payload_type_map_);
216 receiver_call_.get(), MediaType::VIDEO);
217 sender_transport.SetReceiver(receiver_call_->Receiver()); 218 sender_transport.SetReceiver(receiver_call_->Receiver());
218 receiver_transport.SetReceiver(sender_call_->Receiver()); 219 receiver_transport.SetReceiver(sender_call_->Receiver());
219 220
220 CreateSendConfig(1, 0, 0, &sender_transport); 221 CreateSendConfig(1, 0, 0, &sender_transport);
221 CreateMatchingReceiveConfigs(&receiver_transport); 222 CreateMatchingReceiveConfigs(&receiver_transport);
222 223
223 video_receive_configs_[0].renderer = &renderer; 224 video_receive_configs_[0].renderer = &renderer;
224 225
225 CreateVideoStreams(); 226 CreateVideoStreams();
226 Start(); 227 Start();
(...skipping 26 matching lines...) Expand all
253 254
254 void OnFrame(const VideoFrame& video_frame) override { event_.Set(); } 255 void OnFrame(const VideoFrame& video_frame) override { event_.Set(); }
255 256
256 bool Wait() { return event_.Wait(kDefaultTimeoutMs); } 257 bool Wait() { return event_.Wait(kDefaultTimeoutMs); }
257 258
258 rtc::Event event_; 259 rtc::Event event_;
259 } renderer; 260 } renderer;
260 261
261 CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get())); 262 CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get()));
262 263
263 test::DirectTransport sender_transport( 264 test::DirectTransport sender_transport(sender_call_.get(), payload_type_map_);
264 sender_call_.get(), MediaType::VIDEO); 265 test::DirectTransport receiver_transport(receiver_call_.get(),
265 test::DirectTransport receiver_transport( 266 payload_type_map_);
266 receiver_call_.get(), MediaType::VIDEO);
267 sender_transport.SetReceiver(receiver_call_->Receiver()); 267 sender_transport.SetReceiver(receiver_call_->Receiver());
268 receiver_transport.SetReceiver(sender_call_->Receiver()); 268 receiver_transport.SetReceiver(sender_call_->Receiver());
269 269
270 CreateSendConfig(1, 0, 0, &sender_transport); 270 CreateSendConfig(1, 0, 0, &sender_transport);
271 CreateMatchingReceiveConfigs(&receiver_transport); 271 CreateMatchingReceiveConfigs(&receiver_transport);
272 video_receive_configs_[0].renderer = &renderer; 272 video_receive_configs_[0].renderer = &renderer;
273 273
274 CreateVideoStreams(); 274 CreateVideoStreams();
275 Start(); 275 Start();
276 276
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 EXPECT_TRUE(Wait()) 316 EXPECT_TRUE(Wait())
317 << "Timed out while waiting for enough frames to be decoded."; 317 << "Timed out while waiting for enough frames to be decoded.";
318 } 318 }
319 319
320 void ModifyVideoConfigs( 320 void ModifyVideoConfigs(
321 VideoSendStream::Config* send_config, 321 VideoSendStream::Config* send_config,
322 std::vector<VideoReceiveStream::Config>* receive_configs, 322 std::vector<VideoReceiveStream::Config>* receive_configs,
323 VideoEncoderConfig* encoder_config) override { 323 VideoEncoderConfig* encoder_config) override {
324 send_config->encoder_settings.encoder = encoder_.get(); 324 send_config->encoder_settings.encoder = encoder_.get();
325 send_config->encoder_settings.payload_name = payload_name_; 325 send_config->encoder_settings.payload_name = payload_name_;
326 send_config->encoder_settings.payload_type = 126; 326 send_config->encoder_settings.payload_type =
327 test::CallTest::kVideoSendPayloadType;
327 328
328 (*receive_configs)[0].renderer = this; 329 (*receive_configs)[0].renderer = this;
329 (*receive_configs)[0].decoders.resize(1); 330 (*receive_configs)[0].decoders.resize(1);
330 (*receive_configs)[0].decoders[0].payload_type = 331 (*receive_configs)[0].decoders[0].payload_type =
331 send_config->encoder_settings.payload_type; 332 send_config->encoder_settings.payload_type;
332 (*receive_configs)[0].decoders[0].payload_name = 333 (*receive_configs)[0].decoders[0].payload_name =
333 send_config->encoder_settings.payload_name; 334 send_config->encoder_settings.payload_name;
334 (*receive_configs)[0].decoders[0].decoder = decoder_.get(); 335 (*receive_configs)[0].decoders[0].decoder = decoder_.get();
335 } 336 }
336 337
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 local_ssrc_(0), 528 local_ssrc_(0),
528 remote_ssrc_(0), 529 remote_ssrc_(0),
529 receive_transport_(nullptr) {} 530 receive_transport_(nullptr) {}
530 531
531 private: 532 private:
532 size_t GetNumVideoStreams() const override { return 0; } 533 size_t GetNumVideoStreams() const override { return 0; }
533 size_t GetNumAudioStreams() const override { return 1; } 534 size_t GetNumAudioStreams() const override { return 1; }
534 535
535 test::PacketTransport* CreateReceiveTransport() override { 536 test::PacketTransport* CreateReceiveTransport() override {
536 test::PacketTransport* receive_transport = new test::PacketTransport( 537 test::PacketTransport* receive_transport = new test::PacketTransport(
537 nullptr, this, test::PacketTransport::kReceiver, 538 nullptr, this, test::PacketTransport::kReceiver, payload_type_map_,
538 MediaType::AUDIO,
539 FakeNetworkPipe::Config()); 539 FakeNetworkPipe::Config());
540 receive_transport_ = receive_transport; 540 receive_transport_ = receive_transport;
541 return receive_transport; 541 return receive_transport;
542 } 542 }
543 543
544 Action OnSendRtp(const uint8_t* packet, size_t length) override { 544 Action OnSendRtp(const uint8_t* packet, size_t length) override {
545 RTPHeader header; 545 RTPHeader header;
546 EXPECT_TRUE(parser_->Parse(packet, length, &header)); 546 EXPECT_TRUE(parser_->Parse(packet, length, &header));
547 547
548 if (!sequence_number_to_retransmit_) { 548 if (!sequence_number_to_retransmit_) {
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 return SEND_PACKET; 791 return SEND_PACKET;
792 } 792 }
793 793
794 test::PacketTransport* CreateSendTransport(Call* sender_call) override { 794 test::PacketTransport* CreateSendTransport(Call* sender_call) override {
795 // At low RTT (< kLowRttNackMs) -> NACK only, no FEC. 795 // At low RTT (< kLowRttNackMs) -> NACK only, no FEC.
796 const int kNetworkDelayMs = 100; 796 const int kNetworkDelayMs = 100;
797 FakeNetworkPipe::Config config; 797 FakeNetworkPipe::Config config;
798 config.queue_delay_ms = kNetworkDelayMs; 798 config.queue_delay_ms = kNetworkDelayMs;
799 return new test::PacketTransport(sender_call, this, 799 return new test::PacketTransport(sender_call, this,
800 test::PacketTransport::kSender, 800 test::PacketTransport::kSender,
801 MediaType::VIDEO, config); 801 test::CallTest::payload_type_map_, config);
802 } 802 }
803 803
804 void OnFrame(const VideoFrame& video_frame) override { 804 void OnFrame(const VideoFrame& video_frame) override {
805 rtc::CritScope lock(&crit_); 805 rtc::CritScope lock(&crit_);
806 // Rendering frame with timestamp of packet that was dropped -> FEC 806 // Rendering frame with timestamp of packet that was dropped -> FEC
807 // protection worked. 807 // protection worked.
808 auto it = dropped_timestamps_.find(video_frame.timestamp()); 808 auto it = dropped_timestamps_.find(video_frame.timestamp());
809 if (it != dropped_timestamps_.end()) { 809 if (it != dropped_timestamps_.end()) {
810 if (!expect_flexfec_rtcp_ || received_flexfec_rtcp_) { 810 if (!expect_flexfec_rtcp_ || received_flexfec_rtcp_) {
811 observation_complete_.Set(); 811 observation_complete_.Set();
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 } 971 }
972 972
973 test::PacketTransport* CreateSendTransport(Call* sender_call) override { 973 test::PacketTransport* CreateSendTransport(Call* sender_call) override {
974 // At low RTT (< kLowRttNackMs) -> NACK only, no FEC. 974 // At low RTT (< kLowRttNackMs) -> NACK only, no FEC.
975 // Configure some network delay. 975 // Configure some network delay.
976 const int kNetworkDelayMs = 50; 976 const int kNetworkDelayMs = 50;
977 FakeNetworkPipe::Config config; 977 FakeNetworkPipe::Config config;
978 config.queue_delay_ms = kNetworkDelayMs; 978 config.queue_delay_ms = kNetworkDelayMs;
979 return new test::PacketTransport(sender_call, this, 979 return new test::PacketTransport(sender_call, this,
980 test::PacketTransport::kSender, 980 test::PacketTransport::kSender,
981 MediaType::VIDEO, config); 981 payload_type_map_, config);
982 } 982 }
983 983
984 // TODO(holmer): Investigate why we don't send FEC packets when the bitrate 984 // TODO(holmer): Investigate why we don't send FEC packets when the bitrate
985 // is 10 kbps. 985 // is 10 kbps.
986 Call::Config GetSenderCallConfig() override { 986 Call::Config GetSenderCallConfig() override {
987 Call::Config config(event_log_.get()); 987 Call::Config config(event_log_.get());
988 const int kMinBitrateBps = 30000; 988 const int kMinBitrateBps = 30000;
989 config.bitrate_config.min_bitrate_bps = kMinBitrateBps; 989 config.bitrate_config.min_bitrate_bps = kMinBitrateBps;
990 return config; 990 return config;
991 } 991 }
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
1313 return delivery_status; 1313 return delivery_status;
1314 } 1314 }
1315 } 1315 }
1316 1316
1317 PacketReceiver* receiver_; 1317 PacketReceiver* receiver_;
1318 rtc::Event delivered_packet_; 1318 rtc::Event delivered_packet_;
1319 }; 1319 };
1320 1320
1321 CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get())); 1321 CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get()));
1322 1322
1323 test::DirectTransport send_transport( 1323 test::DirectTransport send_transport(sender_call_.get(), payload_type_map_);
1324 sender_call_.get(), MediaType::VIDEO); 1324 test::DirectTransport receive_transport(receiver_call_.get(),
1325 test::DirectTransport receive_transport( 1325 payload_type_map_);
1326 receiver_call_.get(), MediaType::VIDEO);
1327 PacketInputObserver input_observer(receiver_call_->Receiver()); 1326 PacketInputObserver input_observer(receiver_call_->Receiver());
1328 send_transport.SetReceiver(&input_observer); 1327 send_transport.SetReceiver(&input_observer);
1329 receive_transport.SetReceiver(sender_call_->Receiver()); 1328 receive_transport.SetReceiver(sender_call_->Receiver());
1330 1329
1331 CreateSendConfig(1, 0, 0, &send_transport); 1330 CreateSendConfig(1, 0, 0, &send_transport);
1332 CreateMatchingReceiveConfigs(&receive_transport); 1331 CreateMatchingReceiveConfigs(&receive_transport);
1333 1332
1334 CreateVideoStreams(); 1333 CreateVideoStreams();
1335 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth, 1334 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
1336 kDefaultHeight); 1335 kDefaultHeight);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1436 } 1435 }
1437 1436
1438 TEST_F(EndToEndTest, UsesRtcpReducedSizeMode) { 1437 TEST_F(EndToEndTest, UsesRtcpReducedSizeMode) {
1439 RespectsRtcpMode(RtcpMode::kReducedSize); 1438 RespectsRtcpMode(RtcpMode::kReducedSize);
1440 } 1439 }
1441 1440
1442 // Test sets up a Call multiple senders with different resolutions and SSRCs. 1441 // Test sets up a Call multiple senders with different resolutions and SSRCs.
1443 // Another is set up to receive all three of these with different renderers. 1442 // Another is set up to receive all three of these with different renderers.
1444 class MultiStreamTest { 1443 class MultiStreamTest {
1445 public: 1444 public:
1446 static const size_t kNumStreams = 3; 1445 static constexpr size_t kNumStreams = 3;
1446 const uint8_t kVideoPayloadType = 124;
1447 const std::map<uint8_t, MediaType> payload_type_map_ = {
1448 {kVideoPayloadType, MediaType::VIDEO}};
1449
1447 struct CodecSettings { 1450 struct CodecSettings {
1448 uint32_t ssrc; 1451 uint32_t ssrc;
1449 int width; 1452 int width;
1450 int height; 1453 int height;
1451 } codec_settings[kNumStreams]; 1454 } codec_settings[kNumStreams];
1452 1455
1453 MultiStreamTest() { 1456 MultiStreamTest() {
1454 // TODO(sprang): Cleanup when msvc supports explicit initializers for array. 1457 // TODO(sprang): Cleanup when msvc supports explicit initializers for array.
1455 codec_settings[0] = {1, 640, 480}; 1458 codec_settings[0] = {1, 640, 480};
1456 codec_settings[1] = {2, 320, 240}; 1459 codec_settings[1] = {2, 320, 240};
(...skipping 25 matching lines...) Expand all
1482 std::vector<std::unique_ptr<VideoDecoder>> allocated_decoders; 1485 std::vector<std::unique_ptr<VideoDecoder>> allocated_decoders;
1483 for (size_t i = 0; i < kNumStreams; ++i) { 1486 for (size_t i = 0; i < kNumStreams; ++i) {
1484 uint32_t ssrc = codec_settings[i].ssrc; 1487 uint32_t ssrc = codec_settings[i].ssrc;
1485 int width = codec_settings[i].width; 1488 int width = codec_settings[i].width;
1486 int height = codec_settings[i].height; 1489 int height = codec_settings[i].height;
1487 1490
1488 VideoSendStream::Config send_config(sender_transport.get()); 1491 VideoSendStream::Config send_config(sender_transport.get());
1489 send_config.rtp.ssrcs.push_back(ssrc); 1492 send_config.rtp.ssrcs.push_back(ssrc);
1490 send_config.encoder_settings.encoder = encoders[i].get(); 1493 send_config.encoder_settings.encoder = encoders[i].get();
1491 send_config.encoder_settings.payload_name = "VP8"; 1494 send_config.encoder_settings.payload_name = "VP8";
1492 send_config.encoder_settings.payload_type = 124; 1495 send_config.encoder_settings.payload_type = kVideoPayloadType;
1493 VideoEncoderConfig encoder_config; 1496 VideoEncoderConfig encoder_config;
1494 test::FillEncoderConfiguration(1, &encoder_config); 1497 test::FillEncoderConfiguration(1, &encoder_config);
1495 encoder_config.max_bitrate_bps = 100000; 1498 encoder_config.max_bitrate_bps = 100000;
1496 1499
1497 UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]); 1500 UpdateSendConfig(i, &send_config, &encoder_config, &frame_generators[i]);
1498 1501
1499 send_streams[i] = sender_call->CreateVideoSendStream( 1502 send_streams[i] = sender_call->CreateVideoSendStream(
1500 send_config.Copy(), encoder_config.Copy()); 1503 send_config.Copy(), encoder_config.Copy());
1501 send_streams[i]->Start(); 1504 send_streams[i]->Start();
1502 1505
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1543 // start flowing should this be dereferenced. 1546 // start flowing should this be dereferenced.
1544 virtual void UpdateSendConfig( 1547 virtual void UpdateSendConfig(
1545 size_t stream_index, 1548 size_t stream_index,
1546 VideoSendStream::Config* send_config, 1549 VideoSendStream::Config* send_config,
1547 VideoEncoderConfig* encoder_config, 1550 VideoEncoderConfig* encoder_config,
1548 test::FrameGeneratorCapturer** frame_generator) {} 1551 test::FrameGeneratorCapturer** frame_generator) {}
1549 virtual void UpdateReceiveConfig(size_t stream_index, 1552 virtual void UpdateReceiveConfig(size_t stream_index,
1550 VideoReceiveStream::Config* receive_config) { 1553 VideoReceiveStream::Config* receive_config) {
1551 } 1554 }
1552 virtual test::DirectTransport* CreateSendTransport(Call* sender_call) { 1555 virtual test::DirectTransport* CreateSendTransport(Call* sender_call) {
1553 return new test::DirectTransport(sender_call, MediaType::VIDEO); 1556 return new test::DirectTransport(sender_call, payload_type_map_);
1554 } 1557 }
1555 virtual test::DirectTransport* CreateReceiveTransport(Call* receiver_call) { 1558 virtual test::DirectTransport* CreateReceiveTransport(Call* receiver_call) {
1556 return new test::DirectTransport(receiver_call, MediaType::VIDEO); 1559 return new test::DirectTransport(receiver_call, payload_type_map_);
1557 } 1560 }
1558 }; 1561 };
1559 1562
1560 // Each renderer verifies that it receives the expected resolution, and as soon 1563 // Each renderer verifies that it receives the expected resolution, and as soon
1561 // as every renderer has received a frame, the test finishes. 1564 // as every renderer has received a frame, the test finishes.
1562 TEST_F(EndToEndTest, SendsAndReceivesMultipleStreams) { 1565 TEST_F(EndToEndTest, SendsAndReceivesMultipleStreams) {
1563 class VideoOutputObserver : public rtc::VideoSinkInterface<VideoFrame> { 1566 class VideoOutputObserver : public rtc::VideoSinkInterface<VideoFrame> {
1564 public: 1567 public:
1565 VideoOutputObserver(const MultiStreamTest::CodecSettings& settings, 1568 VideoOutputObserver(const MultiStreamTest::CodecSettings& settings,
1566 uint32_t ssrc, 1569 uint32_t ssrc,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1622 } tester; 1625 } tester;
1623 1626
1624 tester.RunTest(); 1627 tester.RunTest();
1625 } 1628 }
1626 1629
1627 TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) { 1630 TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) {
1628 static const int kExtensionId = 5; 1631 static const int kExtensionId = 5;
1629 1632
1630 class RtpExtensionHeaderObserver : public test::DirectTransport { 1633 class RtpExtensionHeaderObserver : public test::DirectTransport {
1631 public: 1634 public:
1632 RtpExtensionHeaderObserver(Call* sender_call, 1635 RtpExtensionHeaderObserver(
1633 const uint32_t& first_media_ssrc, 1636 Call* sender_call,
1634 const std::map<uint32_t, uint32_t>& ssrc_map) 1637 const uint32_t& first_media_ssrc,
1635 : DirectTransport(sender_call, MediaType::VIDEO), 1638 const std::map<uint32_t, uint32_t>& ssrc_map,
1639 const std::map<uint8_t, MediaType>& payload_type_map)
1640 : DirectTransport(sender_call, payload_type_map),
1636 done_(false, false), 1641 done_(false, false),
1637 parser_(RtpHeaderParser::Create()), 1642 parser_(RtpHeaderParser::Create()),
1638 first_media_ssrc_(first_media_ssrc), 1643 first_media_ssrc_(first_media_ssrc),
1639 rtx_to_media_ssrcs_(ssrc_map), 1644 rtx_to_media_ssrcs_(ssrc_map),
1640 padding_observed_(false), 1645 padding_observed_(false),
1641 rtx_padding_observed_(false), 1646 rtx_padding_observed_(false),
1642 retransmit_observed_(false), 1647 retransmit_observed_(false),
1643 started_(false) { 1648 started_(false) {
1644 parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber, 1649 parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber,
1645 kExtensionId); 1650 kExtensionId);
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
1789 size_t stream_index, 1794 size_t stream_index,
1790 VideoReceiveStream::Config* receive_config) override { 1795 VideoReceiveStream::Config* receive_config) override {
1791 receive_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 1796 receive_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
1792 receive_config->rtp.extensions.clear(); 1797 receive_config->rtp.extensions.clear();
1793 receive_config->rtp.extensions.push_back(RtpExtension( 1798 receive_config->rtp.extensions.push_back(RtpExtension(
1794 RtpExtension::kTransportSequenceNumberUri, kExtensionId)); 1799 RtpExtension::kTransportSequenceNumberUri, kExtensionId));
1795 receive_config->renderer = &fake_renderer_; 1800 receive_config->renderer = &fake_renderer_;
1796 } 1801 }
1797 1802
1798 test::DirectTransport* CreateSendTransport(Call* sender_call) override { 1803 test::DirectTransport* CreateSendTransport(Call* sender_call) override {
1799 observer_ = new RtpExtensionHeaderObserver(sender_call, first_media_ssrc_, 1804 std::map<uint8_t, MediaType> payload_type_map =
1800 rtx_to_media_ssrcs_); 1805 MultiStreamTest::payload_type_map_;
1806 RTC_DCHECK(payload_type_map.find(kSendRtxPayloadType) ==
1807 payload_type_map.end());
1808 payload_type_map[kSendRtxPayloadType] = MediaType::VIDEO;
1809 observer_ =
1810 new RtpExtensionHeaderObserver(sender_call, first_media_ssrc_,
1811 rtx_to_media_ssrcs_, payload_type_map);
1801 return observer_; 1812 return observer_;
1802 } 1813 }
1803 1814
1804 private: 1815 private:
1805 test::FakeVideoRenderer fake_renderer_; 1816 test::FakeVideoRenderer fake_renderer_;
1806 uint32_t first_media_ssrc_; 1817 uint32_t first_media_ssrc_;
1807 std::map<uint32_t, uint32_t> rtx_to_media_ssrcs_; 1818 std::map<uint32_t, uint32_t> rtx_to_media_ssrcs_;
1808 RtpExtensionHeaderObserver* observer_; 1819 RtpExtensionHeaderObserver* observer_;
1809 } tester; 1820 } tester;
1810 1821
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1941 size_t length_; 1952 size_t length_;
1942 FrameType frame_type_; 1953 FrameType frame_type_;
1943 rtc::Event called_; 1954 rtc::Event called_;
1944 }; 1955 };
1945 1956
1946 EncodedFrameTestObserver post_encode_observer; 1957 EncodedFrameTestObserver post_encode_observer;
1947 EncodedFrameTestObserver pre_decode_observer; 1958 EncodedFrameTestObserver pre_decode_observer;
1948 1959
1949 CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get())); 1960 CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get()));
1950 1961
1951 test::DirectTransport sender_transport( 1962 test::DirectTransport sender_transport(sender_call_.get(), payload_type_map_);
1952 sender_call_.get(), MediaType::VIDEO); 1963 test::DirectTransport receiver_transport(receiver_call_.get(),
1953 test::DirectTransport receiver_transport( 1964 payload_type_map_);
1954 receiver_call_.get(), MediaType::VIDEO);
1955 sender_transport.SetReceiver(receiver_call_->Receiver()); 1965 sender_transport.SetReceiver(receiver_call_->Receiver());
1956 receiver_transport.SetReceiver(sender_call_->Receiver()); 1966 receiver_transport.SetReceiver(sender_call_->Receiver());
1957 1967
1958 CreateSendConfig(1, 0, 0, &sender_transport); 1968 CreateSendConfig(1, 0, 0, &sender_transport);
1959 CreateMatchingReceiveConfigs(&receiver_transport); 1969 CreateMatchingReceiveConfigs(&receiver_transport);
1960 video_send_config_.post_encode_callback = &post_encode_observer; 1970 video_send_config_.post_encode_callback = &post_encode_observer;
1961 video_receive_configs_[0].pre_decode_callback = &pre_decode_observer; 1971 video_receive_configs_[0].pre_decode_callback = &pre_decode_observer;
1962 1972
1963 CreateVideoStreams(); 1973 CreateVideoStreams();
1964 Start(); 1974 Start();
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
2107 poller_thread_(&BitrateStatsPollingThread, 2117 poller_thread_(&BitrateStatsPollingThread,
2108 this, 2118 this,
2109 "BitrateStatsPollingThread"), 2119 "BitrateStatsPollingThread"),
2110 state_(kWaitForFirstRampUp), 2120 state_(kWaitForFirstRampUp),
2111 retransmission_rate_limiter_(clock_, 1000) {} 2121 retransmission_rate_limiter_(clock_, 1000) {}
2112 2122
2113 ~BweObserver() {} 2123 ~BweObserver() {}
2114 2124
2115 test::PacketTransport* CreateReceiveTransport() override { 2125 test::PacketTransport* CreateReceiveTransport() override {
2116 receive_transport_ = new test::PacketTransport( 2126 receive_transport_ = new test::PacketTransport(
2117 nullptr, this, test::PacketTransport::kReceiver, 2127 nullptr, this, test::PacketTransport::kReceiver, payload_type_map_,
2118 MediaType::VIDEO,
2119 FakeNetworkPipe::Config()); 2128 FakeNetworkPipe::Config());
2120 return receive_transport_; 2129 return receive_transport_;
2121 } 2130 }
2122 2131
2123 Call::Config GetSenderCallConfig() override { 2132 Call::Config GetSenderCallConfig() override {
2124 Call::Config config(event_log_.get()); 2133 Call::Config config(event_log_.get());
2125 // Set a high start bitrate to reduce the test completion time. 2134 // Set a high start bitrate to reduce the test completion time.
2126 config.bitrate_config.start_bitrate_bps = remb_bitrate_bps_; 2135 config.bitrate_config.start_bitrate_bps = remb_bitrate_bps_;
2127 return config; 2136 return config;
2128 } 2137 }
(...skipping 971 matching lines...) Expand 10 before | Expand all | Expand 10 after
3100 for (const auto& stat : stats_map) { 3109 for (const auto& stat : stats_map) {
3101 if (!stat.second) 3110 if (!stat.second)
3102 return false; 3111 return false;
3103 } 3112 }
3104 return true; 3113 return true;
3105 } 3114 }
3106 3115
3107 test::PacketTransport* CreateSendTransport(Call* sender_call) override { 3116 test::PacketTransport* CreateSendTransport(Call* sender_call) override {
3108 FakeNetworkPipe::Config network_config; 3117 FakeNetworkPipe::Config network_config;
3109 network_config.loss_percent = 5; 3118 network_config.loss_percent = 5;
3110 return new test::PacketTransport( 3119 return new test::PacketTransport(sender_call, this,
3111 sender_call, this, test::PacketTransport::kSender, MediaType::VIDEO, 3120 test::PacketTransport::kSender,
3112 network_config); 3121 payload_type_map_, network_config);
3113 } 3122 }
3114 3123
3115 Call::Config GetSenderCallConfig() override { 3124 Call::Config GetSenderCallConfig() override {
3116 Call::Config config = EndToEndTest::GetSenderCallConfig(); 3125 Call::Config config = EndToEndTest::GetSenderCallConfig();
3117 config.bitrate_config.start_bitrate_bps = kStartBitrateBps; 3126 config.bitrate_config.start_bitrate_bps = kStartBitrateBps;
3118 return config; 3127 return config;
3119 } 3128 }
3120 3129
3121 // This test use other VideoStream settings than the the default settings 3130 // This test use other VideoStream settings than the the default settings
3122 // implemented in DefaultVideoStreamFactory. Therefore this test implement 3131 // implemented in DefaultVideoStreamFactory. Therefore this test implement
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
3654 std::map<uint32_t, bool> ssrc_is_rtx_; 3663 std::map<uint32_t, bool> ssrc_is_rtx_;
3655 3664
3656 rtc::CriticalSection crit_; 3665 rtc::CriticalSection crit_;
3657 size_t ssrcs_to_observe_ GUARDED_BY(crit_); 3666 size_t ssrcs_to_observe_ GUARDED_BY(crit_);
3658 std::map<uint32_t, bool> ssrc_observed_ GUARDED_BY(crit_); 3667 std::map<uint32_t, bool> ssrc_observed_ GUARDED_BY(crit_);
3659 } observer(use_rtx); 3668 } observer(use_rtx);
3660 3669
3661 Call::Config config(event_log_.get()); 3670 Call::Config config(event_log_.get());
3662 CreateCalls(config, config); 3671 CreateCalls(config, config);
3663 3672
3664 test::PacketTransport send_transport(sender_call_.get(), &observer, 3673 test::PacketTransport send_transport(
3665 test::PacketTransport::kSender, 3674 sender_call_.get(), &observer, test::PacketTransport::kSender,
3666 MediaType::VIDEO, 3675 payload_type_map_, FakeNetworkPipe::Config());
3667 FakeNetworkPipe::Config()); 3676 test::PacketTransport receive_transport(
3668 test::PacketTransport receive_transport(nullptr, &observer, 3677 nullptr, &observer, test::PacketTransport::kReceiver, payload_type_map_,
3669 test::PacketTransport::kReceiver, 3678 FakeNetworkPipe::Config());
3670 MediaType::VIDEO,
3671 FakeNetworkPipe::Config());
3672 send_transport.SetReceiver(receiver_call_->Receiver()); 3679 send_transport.SetReceiver(receiver_call_->Receiver());
3673 receive_transport.SetReceiver(sender_call_->Receiver()); 3680 receive_transport.SetReceiver(sender_call_->Receiver());
3674 3681
3675 CreateSendConfig(kNumSsrcs, 0, 0, &send_transport); 3682 CreateSendConfig(kNumSsrcs, 0, 0, &send_transport);
3676 3683
3677 if (use_rtx) { 3684 if (use_rtx) {
3678 for (size_t i = 0; i < kNumSsrcs; ++i) { 3685 for (size_t i = 0; i < kNumSsrcs; ++i) {
3679 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); 3686 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]);
3680 } 3687 }
3681 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; 3688 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType;
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
3953 RunBaseTest(&test); 3960 RunBaseTest(&test);
3954 } 3961 }
3955 3962
3956 TEST_F(EndToEndTest, CallReportsRttForSender) { 3963 TEST_F(EndToEndTest, CallReportsRttForSender) {
3957 static const int kSendDelayMs = 30; 3964 static const int kSendDelayMs = 30;
3958 static const int kReceiveDelayMs = 70; 3965 static const int kReceiveDelayMs = 70;
3959 CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get())); 3966 CreateCalls(Call::Config(event_log_.get()), Call::Config(event_log_.get()));
3960 3967
3961 FakeNetworkPipe::Config config; 3968 FakeNetworkPipe::Config config;
3962 config.queue_delay_ms = kSendDelayMs; 3969 config.queue_delay_ms = kSendDelayMs;
3963 test::DirectTransport sender_transport( 3970 test::DirectTransport sender_transport(config, sender_call_.get(),
3964 config, sender_call_.get(), MediaType::VIDEO); 3971 payload_type_map_);
3965 config.queue_delay_ms = kReceiveDelayMs; 3972 config.queue_delay_ms = kReceiveDelayMs;
3966 test::DirectTransport receiver_transport( 3973 test::DirectTransport receiver_transport(config, receiver_call_.get(),
3967 config, receiver_call_.get(), MediaType::VIDEO); 3974 payload_type_map_);
3968 sender_transport.SetReceiver(receiver_call_->Receiver()); 3975 sender_transport.SetReceiver(receiver_call_->Receiver());
3969 receiver_transport.SetReceiver(sender_call_->Receiver()); 3976 receiver_transport.SetReceiver(sender_call_->Receiver());
3970 3977
3971 CreateSendConfig(1, 0, 0, &sender_transport); 3978 CreateSendConfig(1, 0, 0, &sender_transport);
3972 CreateMatchingReceiveConfigs(&receiver_transport); 3979 CreateMatchingReceiveConfigs(&receiver_transport);
3973 3980
3974 CreateVideoStreams(); 3981 CreateVideoStreams();
3975 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth, 3982 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
3976 kDefaultHeight); 3983 kDefaultHeight);
3977 Start(); 3984 Start();
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
4019 DestroyStreams(); 4026 DestroyStreams();
4020 } 4027 }
4021 4028
4022 void EndToEndTest::VerifyNewVideoReceiveStreamsRespectNetworkState( 4029 void EndToEndTest::VerifyNewVideoReceiveStreamsRespectNetworkState(
4023 MediaType network_to_bring_up, 4030 MediaType network_to_bring_up,
4024 Transport* transport) { 4031 Transport* transport) {
4025 Call::Config config(event_log_.get()); 4032 Call::Config config(event_log_.get());
4026 CreateCalls(config, config); 4033 CreateCalls(config, config);
4027 receiver_call_->SignalChannelNetworkState(network_to_bring_up, kNetworkUp); 4034 receiver_call_->SignalChannelNetworkState(network_to_bring_up, kNetworkUp);
4028 4035
4029 test::DirectTransport sender_transport(sender_call_.get(), MediaType::VIDEO); 4036 test::DirectTransport sender_transport(sender_call_.get(), payload_type_map_);
4030 sender_transport.SetReceiver(receiver_call_->Receiver()); 4037 sender_transport.SetReceiver(receiver_call_->Receiver());
4031 CreateSendConfig(1, 0, 0, &sender_transport); 4038 CreateSendConfig(1, 0, 0, &sender_transport);
4032 CreateMatchingReceiveConfigs(transport); 4039 CreateMatchingReceiveConfigs(transport);
4033 CreateVideoStreams(); 4040 CreateVideoStreams();
4034 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth, 4041 CreateFrameGeneratorCapturer(kDefaultFramerate, kDefaultWidth,
4035 kDefaultHeight); 4042 kDefaultHeight);
4036 4043
4037 Start(); 4044 Start();
4038 SleepMs(kSilenceTimeoutMs); 4045 SleepMs(kSilenceTimeoutMs);
4039 Stop(); 4046 Stop();
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
4343 std::unique_ptr<VideoEncoder> encoder_; 4350 std::unique_ptr<VideoEncoder> encoder_;
4344 std::unique_ptr<VideoDecoder> decoder_; 4351 std::unique_ptr<VideoDecoder> decoder_;
4345 rtc::CriticalSection crit_; 4352 rtc::CriticalSection crit_;
4346 int recorded_frames_ GUARDED_BY(crit_); 4353 int recorded_frames_ GUARDED_BY(crit_);
4347 } test(this); 4354 } test(this);
4348 4355
4349 RunBaseTest(&test); 4356 RunBaseTest(&test);
4350 } 4357 }
4351 4358
4352 } // namespace webrtc 4359 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698