| Index: webrtc/video/end_to_end_tests.cc
|
| diff --git a/webrtc/video/end_to_end_tests.cc b/webrtc/video/end_to_end_tests.cc
|
| index 86c181bdf46fc8cd2eba6d086dc8ac9e694d7504..4de6db49cdc7d36c8b9b0b58ae715263ef56098d 100644
|
| --- a/webrtc/video/end_to_end_tests.cc
|
| +++ b/webrtc/video/end_to_end_tests.cc
|
| @@ -125,7 +125,6 @@ class EndToEndTest : public test::CallTest,
|
| void DecodesRetransmittedFrame(bool enable_rtx, bool enable_red);
|
| void ReceivesPliAndRecovers(int rtp_history_ms);
|
| void RespectsRtcpMode(RtcpMode rtcp_mode);
|
| - void TestXrReceiverReferenceTimeReport(bool enable_rrtr);
|
| void TestSendsSetSsrcs(size_t num_ssrcs, bool send_single_ssrc_first);
|
| void TestRtpStatePreservation(bool use_rtx, bool provoke_rtcpsr_before_rtp);
|
| void VerifyHistogramStats(bool use_rtx, bool use_red, bool screenshare);
|
| @@ -2435,89 +2434,6 @@ TEST_P(EndToEndTest, VerifyHistogramStatsWithScreenshare) {
|
| VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare);
|
| }
|
|
|
| -void EndToEndTest::TestXrReceiverReferenceTimeReport(bool enable_rrtr) {
|
| - static const int kNumRtcpReportPacketsToObserve = 5;
|
| - class RtcpXrObserver : public test::EndToEndTest {
|
| - public:
|
| - explicit RtcpXrObserver(bool enable_rrtr)
|
| - : EndToEndTest(kDefaultTimeoutMs),
|
| - enable_rrtr_(enable_rrtr),
|
| - sent_rtcp_sr_(0),
|
| - sent_rtcp_rr_(0),
|
| - sent_rtcp_rrtr_(0),
|
| - sent_rtcp_dlrr_(0) {}
|
| -
|
| - private:
|
| - // Receive stream should send RR packets (and RRTR packets if enabled).
|
| - Action OnReceiveRtcp(const uint8_t* packet, size_t length) override {
|
| - rtc::CritScope lock(&crit_);
|
| - test::RtcpPacketParser parser;
|
| - EXPECT_TRUE(parser.Parse(packet, length));
|
| -
|
| - sent_rtcp_rr_ += parser.receiver_report()->num_packets();
|
| - EXPECT_EQ(0, parser.sender_report()->num_packets());
|
| - EXPECT_GE(1, parser.xr()->num_packets());
|
| - if (parser.xr()->num_packets() > 0) {
|
| - if (parser.xr()->rrtr())
|
| - ++sent_rtcp_rrtr_;
|
| - EXPECT_FALSE(parser.xr()->dlrr());
|
| - }
|
| -
|
| - return SEND_PACKET;
|
| - }
|
| - // Send stream should send SR packets (and DLRR packets if enabled).
|
| - Action OnSendRtcp(const uint8_t* packet, size_t length) override {
|
| - rtc::CritScope lock(&crit_);
|
| - test::RtcpPacketParser parser;
|
| - EXPECT_TRUE(parser.Parse(packet, length));
|
| -
|
| - sent_rtcp_sr_ += parser.sender_report()->num_packets();
|
| - EXPECT_GE(1, parser.xr()->num_packets());
|
| - if (parser.xr()->num_packets() > 0) {
|
| - EXPECT_FALSE(parser.xr()->rrtr());
|
| - if (parser.xr()->dlrr())
|
| - ++sent_rtcp_dlrr_;
|
| - }
|
| -
|
| - if (sent_rtcp_sr_ > kNumRtcpReportPacketsToObserve &&
|
| - sent_rtcp_rr_ > kNumRtcpReportPacketsToObserve) {
|
| - if (enable_rrtr_) {
|
| - EXPECT_LT(0, sent_rtcp_rrtr_);
|
| - EXPECT_LT(0, sent_rtcp_dlrr_);
|
| - } else {
|
| - EXPECT_EQ(0, sent_rtcp_rrtr_);
|
| - EXPECT_EQ(0, sent_rtcp_dlrr_);
|
| - }
|
| - observation_complete_.Set();
|
| - }
|
| - return SEND_PACKET;
|
| - }
|
| -
|
| - void ModifyVideoConfigs(
|
| - VideoSendStream::Config* send_config,
|
| - std::vector<VideoReceiveStream::Config>* receive_configs,
|
| - VideoEncoderConfig* encoder_config) override {
|
| - (*receive_configs)[0].rtp.rtcp_mode = RtcpMode::kReducedSize;
|
| - (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report =
|
| - enable_rrtr_;
|
| - }
|
| -
|
| - void PerformTest() override {
|
| - EXPECT_TRUE(Wait())
|
| - << "Timed out while waiting for RTCP SR/RR packets to be sent.";
|
| - }
|
| -
|
| - rtc::CriticalSection crit_;
|
| - bool enable_rrtr_;
|
| - int sent_rtcp_sr_;
|
| - int sent_rtcp_rr_ GUARDED_BY(&crit_);
|
| - int sent_rtcp_rrtr_ GUARDED_BY(&crit_);
|
| - int sent_rtcp_dlrr_;
|
| - } test(enable_rrtr);
|
| -
|
| - RunBaseTest(&test);
|
| -}
|
| -
|
| void EndToEndTest::TestSendsSetSsrcs(size_t num_ssrcs,
|
| bool send_single_ssrc_first) {
|
| class SendsSetSsrcs : public test::EndToEndTest {
|
| @@ -3064,12 +2980,99 @@ TEST_P(EndToEndTest, GetStats) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_P(EndToEndTest, ReceiverReferenceTimeReportEnabled) {
|
| - TestXrReceiverReferenceTimeReport(true);
|
| +class RtcpXrObserver : public test::EndToEndTest {
|
| + public:
|
| + explicit RtcpXrObserver(bool enable_rrtr)
|
| + : EndToEndTest(test::CallTest::kDefaultTimeoutMs),
|
| + enable_rrtr_(enable_rrtr),
|
| + sent_rtcp_sr_(0),
|
| + sent_rtcp_rr_(0),
|
| + sent_rtcp_rrtr_(0),
|
| + sent_rtcp_target_bitrate_(false),
|
| + sent_rtcp_dlrr_(0) {}
|
| +
|
| + private:
|
| + // Receive stream should send RR packets (and RRTR packets if enabled).
|
| + Action OnReceiveRtcp(const uint8_t* packet, size_t length) override {
|
| + rtc::CritScope lock(&crit_);
|
| + test::RtcpPacketParser parser;
|
| + EXPECT_TRUE(parser.Parse(packet, length));
|
| +
|
| + sent_rtcp_rr_ += parser.receiver_report()->num_packets();
|
| + EXPECT_EQ(0, parser.sender_report()->num_packets());
|
| + EXPECT_GE(1, parser.xr()->num_packets());
|
| + if (parser.xr()->num_packets() > 0) {
|
| + if (parser.xr()->rrtr())
|
| + ++sent_rtcp_rrtr_;
|
| + EXPECT_FALSE(parser.xr()->dlrr());
|
| + }
|
| +
|
| + return SEND_PACKET;
|
| + }
|
| + // Send stream should send SR packets (and DLRR packets if enabled).
|
| + Action OnSendRtcp(const uint8_t* packet, size_t length) override {
|
| + rtc::CritScope lock(&crit_);
|
| + test::RtcpPacketParser parser;
|
| + EXPECT_TRUE(parser.Parse(packet, length));
|
| +
|
| + sent_rtcp_sr_ += parser.sender_report()->num_packets();
|
| + EXPECT_LE(parser.xr()->num_packets(), 1);
|
| + if (parser.xr()->num_packets() > 0) {
|
| + EXPECT_FALSE(parser.xr()->rrtr());
|
| + if (parser.xr()->dlrr())
|
| + ++sent_rtcp_dlrr_;
|
| + if (parser.xr()->target_bitrate())
|
| + sent_rtcp_target_bitrate_ = true;
|
| + }
|
| +
|
| + if (sent_rtcp_sr_ > kNumRtcpReportPacketsToObserve &&
|
| + sent_rtcp_rr_ > kNumRtcpReportPacketsToObserve &&
|
| + sent_rtcp_target_bitrate_) {
|
| + if (enable_rrtr_) {
|
| + EXPECT_GT(sent_rtcp_rrtr_, 0);
|
| + EXPECT_GT(sent_rtcp_dlrr_, 0);
|
| + } else {
|
| + EXPECT_EQ(sent_rtcp_rrtr_, 0);
|
| + EXPECT_EQ(sent_rtcp_dlrr_, 0);
|
| + }
|
| + observation_complete_.Set();
|
| + }
|
| + return SEND_PACKET;
|
| + }
|
| +
|
| + void ModifyVideoConfigs(
|
| + VideoSendStream::Config* send_config,
|
| + std::vector<VideoReceiveStream::Config>* receive_configs,
|
| + VideoEncoderConfig* encoder_config) override {
|
| + (*receive_configs)[0].rtp.rtcp_mode = RtcpMode::kReducedSize;
|
| + (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report =
|
| + enable_rrtr_;
|
| + }
|
| +
|
| + void PerformTest() override {
|
| + EXPECT_TRUE(Wait())
|
| + << "Timed out while waiting for RTCP SR/RR packets to be sent.";
|
| + }
|
| +
|
| + static const int kNumRtcpReportPacketsToObserve = 5;
|
| +
|
| + rtc::CriticalSection crit_;
|
| + bool enable_rrtr_;
|
| + int sent_rtcp_sr_;
|
| + int sent_rtcp_rr_ GUARDED_BY(&crit_);
|
| + int sent_rtcp_rrtr_ GUARDED_BY(&crit_);
|
| + bool sent_rtcp_target_bitrate_ GUARDED_BY(&crit_);
|
| + int sent_rtcp_dlrr_;
|
| +};
|
| +
|
| +TEST_P(EndToEndTest, TestExtendedReportsWithRrtr) {
|
| + RtcpXrObserver test(true);
|
| + RunBaseTest(&test);
|
| }
|
|
|
| -TEST_P(EndToEndTest, ReceiverReferenceTimeReportDisabled) {
|
| - TestXrReceiverReferenceTimeReport(false);
|
| +TEST_P(EndToEndTest, TestExtendedReportsWithoutRrtr) {
|
| + RtcpXrObserver test(false);
|
| + RunBaseTest(&test);
|
| }
|
|
|
| TEST_P(EndToEndTest, TestReceivedRtpPacketStats) {
|
|
|