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

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

Issue 1452883002: Require negotiation to send transport cc feedback over RTCP. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Comments addressed Created 5 years, 1 month 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 | « talk/media/webrtc/webrtcvideoengine2_unittest.cc ('k') | webrtc/video/rampup_tests.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 #include <algorithm> 10 #include <algorithm>
(...skipping 1515 matching lines...) Expand 10 before | Expand all | Expand 10 after
1526 1526
1527 private: 1527 private:
1528 uint32_t first_media_ssrc_; 1528 uint32_t first_media_ssrc_;
1529 std::map<uint32_t, uint32_t> rtx_to_media_ssrcs_; 1529 std::map<uint32_t, uint32_t> rtx_to_media_ssrcs_;
1530 RtpExtensionHeaderObserver* observer_; 1530 RtpExtensionHeaderObserver* observer_;
1531 } tester; 1531 } tester;
1532 1532
1533 tester.RunTest(); 1533 tester.RunTest();
1534 } 1534 }
1535 1535
1536 TEST_F(EndToEndTest, ReceivesTransportFeedback) { 1536 void TransportFeedbackTest(bool feedback_enabled) {
1537 static const int kExtensionId = 5; 1537 static const int kExtensionId = 5;
1538
1539 class TransportFeedbackObserver : public test::DirectTransport { 1538 class TransportFeedbackObserver : public test::DirectTransport {
1540 public: 1539 public:
1541 TransportFeedbackObserver(Call* receiver_call, rtc::Event* done_event) 1540 TransportFeedbackObserver(Call* receiver_call, rtc::Event* done_event)
1542 : DirectTransport(receiver_call), done_(done_event) {} 1541 : DirectTransport(receiver_call), done_(done_event) {}
1543 virtual ~TransportFeedbackObserver() {} 1542 virtual ~TransportFeedbackObserver() {}
1544 1543
1545 bool SendRtcp(const uint8_t* data, size_t length) override { 1544 bool SendRtcp(const uint8_t* data, size_t length) override {
1546 RTCPUtility::RTCPParserV2 parser(data, length, true); 1545 RTCPUtility::RTCPParserV2 parser(data, length, true);
1547 EXPECT_TRUE(parser.IsValid()); 1546 EXPECT_TRUE(parser.IsValid());
1548 1547
1549 RTCPUtility::RTCPPacketTypes packet_type = parser.Begin(); 1548 RTCPUtility::RTCPPacketTypes packet_type = parser.Begin();
1550 while (packet_type != RTCPUtility::RTCPPacketTypes::kInvalid) { 1549 while (packet_type != RTCPUtility::RTCPPacketTypes::kInvalid) {
1551 if (packet_type == RTCPUtility::RTCPPacketTypes::kTransportFeedback) { 1550 if (packet_type == RTCPUtility::RTCPPacketTypes::kTransportFeedback) {
1552 done_->Set(); 1551 done_->Set();
1553 break; 1552 break;
1554 } 1553 }
1555 packet_type = parser.Iterate(); 1554 packet_type = parser.Iterate();
1556 } 1555 }
1557 1556
1558 return test::DirectTransport::SendRtcp(data, length); 1557 return test::DirectTransport::SendRtcp(data, length);
1559 } 1558 }
1560 1559
1561 rtc::Event* done_; 1560 rtc::Event* done_;
1562 }; 1561 };
1563 1562
1564 class TransportFeedbackTester : public MultiStreamTest { 1563 class TransportFeedbackTester : public MultiStreamTest {
1565 public: 1564 public:
1566 TransportFeedbackTester() : done_(false, false) {} 1565 explicit TransportFeedbackTester(bool feedback_enabled)
1566 : feedback_enabled_(feedback_enabled), done_(false, false) {}
1567 virtual ~TransportFeedbackTester() {} 1567 virtual ~TransportFeedbackTester() {}
1568 1568
1569 protected: 1569 protected:
1570 void Wait() override { 1570 void Wait() override {
1571 EXPECT_TRUE(done_.Wait(CallTest::kDefaultTimeoutMs)); 1571 const int64_t kDisabledFeedbackTimeoutMs = 5000;
1572 EXPECT_EQ(feedback_enabled_, done_.Wait(feedback_enabled_
1573 ? test::CallTest::kDefaultTimeoutMs
1574 : kDisabledFeedbackTimeoutMs));
1572 } 1575 }
1573 1576
1574 void UpdateSendConfig( 1577 void UpdateSendConfig(
1575 size_t stream_index, 1578 size_t stream_index,
1576 VideoSendStream::Config* send_config, 1579 VideoSendStream::Config* send_config,
1577 VideoEncoderConfig* encoder_config, 1580 VideoEncoderConfig* encoder_config,
1578 test::FrameGeneratorCapturer** frame_generator) override { 1581 test::FrameGeneratorCapturer** frame_generator) override {
1579 send_config->rtp.extensions.push_back( 1582 send_config->rtp.extensions.push_back(
1580 RtpExtension(RtpExtension::kTransportSequenceNumber, kExtensionId)); 1583 RtpExtension(RtpExtension::kTransportSequenceNumber, kExtensionId));
1581 } 1584 }
1582 1585
1583 void UpdateReceiveConfig( 1586 void UpdateReceiveConfig(
1584 size_t stream_index, 1587 size_t stream_index,
1585 VideoReceiveStream::Config* receive_config) override { 1588 VideoReceiveStream::Config* receive_config) override {
1586 receive_config->rtp.extensions.push_back( 1589 receive_config->rtp.extensions.push_back(
1587 RtpExtension(RtpExtension::kTransportSequenceNumber, kExtensionId)); 1590 RtpExtension(RtpExtension::kTransportSequenceNumber, kExtensionId));
1591 receive_config->rtp.transport_cc = feedback_enabled_;
1588 } 1592 }
1589 1593
1590 test::DirectTransport* CreateReceiveTransport( 1594 test::DirectTransport* CreateReceiveTransport(
1591 Call* receiver_call) override { 1595 Call* receiver_call) override {
1592 return new TransportFeedbackObserver(receiver_call, &done_); 1596 return new TransportFeedbackObserver(receiver_call, &done_);
1593 } 1597 }
1594 1598
1595 private: 1599 private:
1600 const bool feedback_enabled_;
1596 rtc::Event done_; 1601 rtc::Event done_;
1597 } tester; 1602 } tester(feedback_enabled);
1598 tester.RunTest(); 1603 tester.RunTest();
1599 } 1604 }
1605
1606 TEST_F(EndToEndTest, ReceivesTransportFeedback) {
1607 TransportFeedbackTest(true);
1608 }
1609
1610 TEST_F(EndToEndTest, TransportFeedbackNotConfigured) {
1611 TransportFeedbackTest(false);
1612 }
1613
1600 TEST_F(EndToEndTest, ObserversEncodedFrames) { 1614 TEST_F(EndToEndTest, ObserversEncodedFrames) {
1601 class EncodedFrameTestObserver : public EncodedFrameObserver { 1615 class EncodedFrameTestObserver : public EncodedFrameObserver {
1602 public: 1616 public:
1603 EncodedFrameTestObserver() 1617 EncodedFrameTestObserver()
1604 : length_(0), 1618 : length_(0),
1605 frame_type_(kEmptyFrame), 1619 frame_type_(kEmptyFrame),
1606 called_(EventWrapper::Create()) {} 1620 called_(EventWrapper::Create()) {}
1607 virtual ~EncodedFrameTestObserver() {} 1621 virtual ~EncodedFrameTestObserver() {}
1608 1622
1609 virtual void EncodedFrameCallback(const EncodedFrame& encoded_frame) { 1623 virtual void EncodedFrameCallback(const EncodedFrame& encoded_frame) {
(...skipping 1570 matching lines...) Expand 10 before | Expand all | Expand 10 after
3180 EXPECT_TRUE(default_receive_config.rtp.rtx.empty()) 3194 EXPECT_TRUE(default_receive_config.rtp.rtx.empty())
3181 << "Enabling RTX requires rtpmap: rtx negotiation."; 3195 << "Enabling RTX requires rtpmap: rtx negotiation.";
3182 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) 3196 EXPECT_TRUE(default_receive_config.rtp.extensions.empty())
3183 << "Enabling RTP extensions require negotiation."; 3197 << "Enabling RTP extensions require negotiation.";
3184 3198
3185 VerifyEmptyNackConfig(default_receive_config.rtp.nack); 3199 VerifyEmptyNackConfig(default_receive_config.rtp.nack);
3186 VerifyEmptyFecConfig(default_receive_config.rtp.fec); 3200 VerifyEmptyFecConfig(default_receive_config.rtp.fec);
3187 } 3201 }
3188 3202
3189 } // namespace webrtc 3203 } // namespace webrtc
OLDNEW
« no previous file with comments | « talk/media/webrtc/webrtcvideoengine2_unittest.cc ('k') | webrtc/video/rampup_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698