| Index: video/end_to_end_tests.cc
|
| diff --git a/video/end_to_end_tests.cc b/video/end_to_end_tests.cc
|
| index 06a711822814c264936f0797619498673cae819f..2ae3ceefbc2f6190508e7df2e8a8befcb7878648 100644
|
| --- a/video/end_to_end_tests.cc
|
| +++ b/video/end_to_end_tests.cc
|
| @@ -140,7 +140,7 @@ class EndToEndTest : public test::CallTest {
|
| void RespectsRtcpMode(RtcpMode rtcp_mode);
|
| 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);
|
| + void VerifyHistogramStats(bool use_rtx, bool use_fec, bool screenshare);
|
| void VerifyNewVideoSendStreamsRespectNetworkState(
|
| MediaType network_to_bring_up,
|
| VideoEncoder* encoder,
|
| @@ -696,8 +696,8 @@ TEST_F(EndToEndTest, ReceivesUlpfec) {
|
| // Enable ULPFEC over RED.
|
| send_config->rtp.ulpfec.red_payload_type = kRedPayloadType;
|
| send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType;
|
| - (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType;
|
| - (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType;
|
| + (*receive_configs)[0].rtp.red_payload_type = kRedPayloadType;
|
| + (*receive_configs)[0].rtp.ulpfec_payload_type = kUlpfecPayloadType;
|
|
|
| (*receive_configs)[0].renderer = this;
|
| }
|
| @@ -853,16 +853,11 @@ class FlexfecRenderObserver : public test::EndToEndTest,
|
|
|
| if (enable_nack_) {
|
| send_config->rtp.nack.rtp_history_ms = test::CallTest::kNackRtpHistoryMs;
|
| - send_config->rtp.ulpfec.red_rtx_payload_type =
|
| - test::CallTest::kRtxRedPayloadType;
|
| send_config->rtp.rtx.ssrcs.push_back(test::CallTest::kSendRtxSsrcs[0]);
|
| send_config->rtp.rtx.payload_type = test::CallTest::kSendRtxPayloadType;
|
|
|
| (*receive_configs)[0].rtp.nack.rtp_history_ms =
|
| test::CallTest::kNackRtpHistoryMs;
|
| - (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type =
|
| - test::CallTest::kRtxRedPayloadType;
|
| -
|
| (*receive_configs)[0].rtp.rtx_ssrc = test::CallTest::kSendRtxSsrcs[0];
|
| (*receive_configs)[0]
|
| .rtp
|
| @@ -1043,8 +1038,8 @@ TEST_F(EndToEndTest, ReceivedUlpfecPacketsNotNacked) {
|
| send_config->encoder_settings.payload_type = kFakeVideoSendPayloadType;
|
|
|
| (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
|
| - (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType;
|
| - (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType;
|
| + (*receive_configs)[0].rtp.red_payload_type = kRedPayloadType;
|
| + (*receive_configs)[0].rtp.ulpfec_payload_type = kUlpfecPayloadType;
|
|
|
| (*receive_configs)[0].decoders.resize(1);
|
| (*receive_configs)[0].decoders[0].payload_type =
|
| @@ -1171,12 +1166,10 @@ void EndToEndTest::DecodesRetransmittedFrame(bool enable_rtx, bool enable_red) {
|
| send_config->rtp.ulpfec.red_payload_type = kRedPayloadType;
|
| if (retransmission_ssrc_ == kSendRtxSsrcs[0])
|
| send_config->rtp.ulpfec.red_rtx_payload_type = kRtxRedPayloadType;
|
| - (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type =
|
| + (*receive_configs)[0].rtp.ulpfec_payload_type =
|
| send_config->rtp.ulpfec.ulpfec_payload_type;
|
| - (*receive_configs)[0].rtp.ulpfec.red_payload_type =
|
| + (*receive_configs)[0].rtp.red_payload_type =
|
| send_config->rtp.ulpfec.red_payload_type;
|
| - (*receive_configs)[0].rtp.ulpfec.red_rtx_payload_type =
|
| - send_config->rtp.ulpfec.red_rtx_payload_type;
|
| }
|
|
|
| if (retransmission_ssrc_ == kSendRtxSsrcs[0]) {
|
| @@ -1207,8 +1200,8 @@ void EndToEndTest::DecodesRetransmittedFrame(bool enable_rtx, bool enable_red) {
|
| << "Timed out while waiting for retransmission to render.";
|
| }
|
|
|
| - int GetPayloadType(bool use_rtx, bool use_red) {
|
| - if (use_red) {
|
| + int GetPayloadType(bool use_rtx, bool use_fec) {
|
| + if (use_fec) {
|
| if (use_rtx)
|
| return kRtxRedPayloadType;
|
| return kRedPayloadType;
|
| @@ -2700,18 +2693,18 @@ TEST_F(EndToEndTest, VerifyNackStats) {
|
| }
|
|
|
| void EndToEndTest::VerifyHistogramStats(bool use_rtx,
|
| - bool use_red,
|
| + bool use_fec,
|
| bool screenshare) {
|
| class StatsObserver : public test::EndToEndTest,
|
| public rtc::VideoSinkInterface<VideoFrame> {
|
| public:
|
| - StatsObserver(bool use_rtx, bool use_red, bool screenshare)
|
| + StatsObserver(bool use_rtx, bool use_fec, bool screenshare)
|
| : EndToEndTest(kLongTimeoutMs),
|
| use_rtx_(use_rtx),
|
| - use_red_(use_red),
|
| + use_fec_(use_fec),
|
| screenshare_(screenshare),
|
| // This test uses NACK, so to send FEC we can't use a fake encoder.
|
| - vp8_encoder_(use_red ? VP8Encoder::Create() : nullptr),
|
| + vp8_encoder_(use_fec ? VP8Encoder::Create() : nullptr),
|
| sender_call_(nullptr),
|
| receiver_call_(nullptr),
|
| start_runtime_ms_(-1),
|
| @@ -2762,15 +2755,14 @@ void EndToEndTest::VerifyHistogramStats(bool use_rtx,
|
| (*receive_configs)[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
|
| (*receive_configs)[0].renderer = this;
|
| // FEC
|
| - if (use_red_) {
|
| + if (use_fec_) {
|
| send_config->rtp.ulpfec.ulpfec_payload_type = kUlpfecPayloadType;
|
| send_config->rtp.ulpfec.red_payload_type = kRedPayloadType;
|
| send_config->encoder_settings.encoder = vp8_encoder_.get();
|
| send_config->encoder_settings.payload_name = "VP8";
|
| (*receive_configs)[0].decoders[0].payload_name = "VP8";
|
| - (*receive_configs)[0].rtp.ulpfec.red_payload_type = kRedPayloadType;
|
| - (*receive_configs)[0].rtp.ulpfec.ulpfec_payload_type =
|
| - kUlpfecPayloadType;
|
| + (*receive_configs)[0].rtp.red_payload_type = kRedPayloadType;
|
| + (*receive_configs)[0].rtp.ulpfec_payload_type = kUlpfecPayloadType;
|
| }
|
| // RTX
|
| if (use_rtx_) {
|
| @@ -2780,6 +2772,12 @@ void EndToEndTest::VerifyHistogramStats(bool use_rtx,
|
| (*receive_configs)[0]
|
| .rtp.rtx_associated_payload_types[kSendRtxPayloadType] =
|
| kFakeVideoSendPayloadType;
|
| + if (use_fec_) {
|
| + send_config->rtp.ulpfec.red_rtx_payload_type = kRtxRedPayloadType;
|
| + (*receive_configs)[0]
|
| + .rtp.rtx_associated_payload_types[kRtxRedPayloadType] =
|
| + kSendRtxPayloadType;
|
| + }
|
| }
|
| // RTT needed for RemoteNtpTimeEstimator for the receive stream.
|
| (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = true;
|
| @@ -2799,14 +2797,14 @@ void EndToEndTest::VerifyHistogramStats(bool use_rtx,
|
|
|
| rtc::CriticalSection crit_;
|
| const bool use_rtx_;
|
| - const bool use_red_;
|
| + const bool use_fec_;
|
| const bool screenshare_;
|
| const std::unique_ptr<VideoEncoder> vp8_encoder_;
|
| Call* sender_call_;
|
| Call* receiver_call_;
|
| int64_t start_runtime_ms_;
|
| int num_frames_received_ RTC_GUARDED_BY(&crit_);
|
| - } test(use_rtx, use_red, screenshare);
|
| + } test(use_rtx, use_fec, screenshare);
|
|
|
| metrics::Reset();
|
| RunBaseTest(&test);
|
| @@ -2916,7 +2914,7 @@ void EndToEndTest::VerifyHistogramStats(bool use_rtx,
|
| EXPECT_EQ(num_rtx_samples,
|
| metrics::NumSamples("WebRTC.Video.RtxBitrateReceivedInKbps"));
|
|
|
| - int num_red_samples = use_red ? 1 : 0;
|
| + int num_red_samples = use_fec ? 1 : 0;
|
| EXPECT_EQ(num_red_samples,
|
| metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps"));
|
| EXPECT_EQ(num_red_samples,
|
| @@ -4838,7 +4836,10 @@ TEST_F(EndToEndTest, VerifyDefaultVideoReceiveConfigParameters) {
|
| << "Enabling RTP extensions require negotiation.";
|
|
|
| VerifyEmptyNackConfig(default_receive_config.rtp.nack);
|
| - VerifyEmptyUlpfecConfig(default_receive_config.rtp.ulpfec);
|
| + EXPECT_EQ(-1, default_receive_config.rtp.ulpfec_payload_type)
|
| + << "Enabling ULPFEC requires rtpmap: ulpfec negotiation.";
|
| + EXPECT_EQ(-1, default_receive_config.rtp.red_payload_type)
|
| + << "Enabling ULPFEC requires rtpmap: red negotiation.";
|
| }
|
|
|
| TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) {
|
|
|