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

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

Issue 2523993002: Try to deflake VideoSendStream tests with FlexFEC. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 #include <algorithm> // max 10 #include <algorithm> // max
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 // TODO(brandtr): Move these FlexFEC tests when we have created 539 // TODO(brandtr): Move these FlexFEC tests when we have created
540 // FlexfecSendStream. 540 // FlexfecSendStream.
541 class FlexfecObserver : public test::EndToEndTest { 541 class FlexfecObserver : public test::EndToEndTest {
542 public: 542 public:
543 FlexfecObserver(bool header_extensions_enabled, 543 FlexfecObserver(bool header_extensions_enabled,
544 bool use_nack, 544 bool use_nack,
545 const std::string& codec) 545 const std::string& codec)
546 : EndToEndTest(VideoSendStreamTest::kDefaultTimeoutMs), 546 : EndToEndTest(VideoSendStreamTest::kDefaultTimeoutMs),
547 payload_name_(codec), 547 payload_name_(codec),
548 use_nack_(use_nack), 548 use_nack_(use_nack),
549 send_count_(0),
550 sent_media_(false), 549 sent_media_(false),
551 sent_flexfec_(false), 550 sent_flexfec_(false),
552 header_extensions_enabled_(header_extensions_enabled) { 551 header_extensions_enabled_(header_extensions_enabled) {
553 if (codec == "H264") { 552 if (codec == "H264") {
554 encoder_.reset(new test::FakeH264Encoder(Clock::GetRealTimeClock())); 553 encoder_.reset(new test::FakeH264Encoder(Clock::GetRealTimeClock()));
555 } else if (codec == "VP8") { 554 } else if (codec == "VP8") {
556 encoder_.reset(VP8Encoder::Create()); 555 encoder_.reset(VP8Encoder::Create());
557 } else if (codec == "VP9") { 556 } else if (codec == "VP9") {
558 encoder_.reset(VP9Encoder::Create()); 557 encoder_.reset(VP9Encoder::Create());
559 } else { 558 } else {
560 RTC_NOTREACHED(); 559 RTC_NOTREACHED();
561 } 560 }
562 } 561 }
563 562
564 size_t GetNumFlexfecStreams() const override { return 1; } 563 size_t GetNumFlexfecStreams() const override { return 1; }
565 564
566 private: 565 private:
567 Action OnSendRtp(const uint8_t* packet, size_t length) override { 566 Action OnSendRtp(const uint8_t* packet, size_t length) override {
568 RTPHeader header; 567 RTPHeader header;
569 EXPECT_TRUE(parser_->Parse(packet, length, &header)); 568 EXPECT_TRUE(parser_->Parse(packet, length, &header));
570 569
571 ++send_count_;
572 if (header.payloadType == VideoSendStreamTest::kFlexfecPayloadType) { 570 if (header.payloadType == VideoSendStreamTest::kFlexfecPayloadType) {
573 EXPECT_EQ(VideoSendStreamTest::kFlexfecSendSsrc, header.ssrc); 571 EXPECT_EQ(VideoSendStreamTest::kFlexfecSendSsrc, header.ssrc);
574 sent_flexfec_ = true; 572 sent_flexfec_ = true;
575 } else { 573 } else {
576 EXPECT_EQ(VideoSendStreamTest::kFakeVideoSendPayloadType, 574 EXPECT_EQ(VideoSendStreamTest::kFakeVideoSendPayloadType,
577 header.payloadType); 575 header.payloadType);
578 EXPECT_EQ(VideoSendStreamTest::kVideoSendSsrcs[0], header.ssrc); 576 EXPECT_EQ(VideoSendStreamTest::kVideoSendSsrcs[0], header.ssrc);
579 sent_media_ = true; 577 sent_media_ = true;
580 } 578 }
581 579
582 if (header_extensions_enabled_) { 580 if (header_extensions_enabled_) {
583 EXPECT_TRUE(header.extension.hasAbsoluteSendTime); 581 EXPECT_TRUE(header.extension.hasAbsoluteSendTime);
584 EXPECT_TRUE(header.extension.hasTransmissionTimeOffset); 582 EXPECT_TRUE(header.extension.hasTransmissionTimeOffset);
585 EXPECT_TRUE(header.extension.hasTransportSequenceNumber); 583 EXPECT_TRUE(header.extension.hasTransportSequenceNumber);
586 } 584 }
587 585
588 if (send_count_ > 100 && sent_media_ && sent_flexfec_) { 586 if (sent_media_ && sent_flexfec_) {
589 observation_complete_.Set(); 587 observation_complete_.Set();
590 } 588 }
591 589
592 return SEND_PACKET; 590 return SEND_PACKET;
593 } 591 }
594 592
595 test::PacketTransport* CreateSendTransport(Call* sender_call) override { 593 test::PacketTransport* CreateSendTransport(Call* sender_call) override {
596 // At low RTT (< kLowRttNackMs) -> NACK only, no FEC. 594 // At low RTT (< kLowRttNackMs) -> NACK only, no FEC.
597 // Therefore we need some network delay. 595 // Therefore we need some network delay.
598 const int kNetworkDelayMs = 100; 596 const int kNetworkDelayMs = 100;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 628
631 void PerformTest() override { 629 void PerformTest() override {
632 EXPECT_TRUE(Wait()) 630 EXPECT_TRUE(Wait())
633 << "Timed out waiting for FlexFEC and/or media packets."; 631 << "Timed out waiting for FlexFEC and/or media packets.";
634 } 632 }
635 633
636 std::unique_ptr<internal::TransportAdapter> transport_adapter_; 634 std::unique_ptr<internal::TransportAdapter> transport_adapter_;
637 std::unique_ptr<VideoEncoder> encoder_; 635 std::unique_ptr<VideoEncoder> encoder_;
638 const std::string payload_name_; 636 const std::string payload_name_;
639 const bool use_nack_; 637 const bool use_nack_;
640 int send_count_;
641 bool sent_media_; 638 bool sent_media_;
642 bool sent_flexfec_; 639 bool sent_flexfec_;
643 bool header_extensions_enabled_; 640 bool header_extensions_enabled_;
644 }; 641 };
645 642
646 TEST_F(VideoSendStreamTest, SupportsFlexfecWithRtpExtensionsVp8) { 643 TEST_F(VideoSendStreamTest, SupportsFlexfecWithRtpExtensionsVp8) {
647 FlexfecObserver test(true, false, "VP8"); 644 FlexfecObserver test(true, false, "VP8");
648 RunBaseTest(&test); 645 RunBaseTest(&test);
649 } 646 }
650 647
(...skipping 2517 matching lines...) Expand 10 before | Expand all | Expand 10 after
3168 RequestSourceRotateIfVideoOrientationExtensionNotSupported) { 3165 RequestSourceRotateIfVideoOrientationExtensionNotSupported) {
3169 TestRequestSourceRotateVideo(false); 3166 TestRequestSourceRotateVideo(false);
3170 } 3167 }
3171 3168
3172 TEST_F(VideoSendStreamTest, 3169 TEST_F(VideoSendStreamTest,
3173 DoNotRequestsRotationIfVideoOrientationExtensionSupported) { 3170 DoNotRequestsRotationIfVideoOrientationExtensionSupported) {
3174 TestRequestSourceRotateVideo(true); 3171 TestRequestSourceRotateVideo(true);
3175 } 3172 }
3176 3173
3177 } // namespace webrtc 3174 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698