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) { |