| 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 e88977abdd9af553fcd0be5f2c999f6c1b91e0ff..cf8d5d099f32058e26551bfab0614b9a3a6617a1 100644
|
| --- a/webrtc/video/end_to_end_tests.cc
|
| +++ b/webrtc/video/end_to_end_tests.cc
|
| @@ -42,9 +42,11 @@
|
| #include "webrtc/test/encoder_settings.h"
|
| #include "webrtc/test/fake_decoder.h"
|
| #include "webrtc/test/fake_encoder.h"
|
| +#include "webrtc/test/field_trial.h"
|
| #include "webrtc/test/frame_generator.h"
|
| #include "webrtc/test/frame_generator_capturer.h"
|
| #include "webrtc/test/gtest.h"
|
| +#include "webrtc/test/gmock.h"
|
| #include "webrtc/test/null_transport.h"
|
| #include "webrtc/test/rtcp_packet_parser.h"
|
| #include "webrtc/test/rtp_rtcp_observer.h"
|
| @@ -55,11 +57,17 @@
|
|
|
| namespace webrtc {
|
|
|
| +namespace {
|
| +const char new_jb_enabled[] = "WebRTC-NewVideoJitterBuffer/Enabled/";
|
| +const char new_jb_disabled[] = "WebRTC-NewVideoJitterBuffer/Disabled/";
|
| +} // anonymous namespace
|
| +
|
| static const int kSilenceTimeoutMs = 2000;
|
|
|
| -class EndToEndTest : public test::CallTest {
|
| +class EndToEndTest : public test::CallTest,
|
| + public ::testing::WithParamInterface<std::string> {
|
| public:
|
| - EndToEndTest() {}
|
| + EndToEndTest() : scoped_field_trial_(GetParam()) {}
|
|
|
| virtual ~EndToEndTest() {
|
| EXPECT_EQ(nullptr, video_send_stream_);
|
| @@ -128,9 +136,14 @@ class EndToEndTest : public test::CallTest {
|
| void VerifyNewVideoReceiveStreamsRespectNetworkState(
|
| MediaType network_to_bring_up,
|
| Transport* transport);
|
| + test::ScopedFieldTrials scoped_field_trial_;
|
| };
|
|
|
| -TEST_F(EndToEndTest, ReceiverCanBeStartedTwice) {
|
| +INSTANTIATE_TEST_CASE_P(TestWithNewVideoJitterBuffer,
|
| + EndToEndTest,
|
| + ::testing::Values(new_jb_enabled, new_jb_disabled));
|
| +
|
| +TEST_P(EndToEndTest, ReceiverCanBeStartedTwice) {
|
| CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_));
|
|
|
| test::NullTransport transport;
|
| @@ -145,7 +158,7 @@ TEST_F(EndToEndTest, ReceiverCanBeStartedTwice) {
|
| DestroyStreams();
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReceiverCanBeStoppedTwice) {
|
| +TEST_P(EndToEndTest, ReceiverCanBeStoppedTwice) {
|
| CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_));
|
|
|
| test::NullTransport transport;
|
| @@ -160,7 +173,7 @@ TEST_F(EndToEndTest, ReceiverCanBeStoppedTwice) {
|
| DestroyStreams();
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReceiverCanBeStoppedAndRestarted) {
|
| +TEST_P(EndToEndTest, ReceiverCanBeStoppedAndRestarted) {
|
| CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_));
|
|
|
| test::NullTransport transport;
|
| @@ -176,7 +189,7 @@ TEST_F(EndToEndTest, ReceiverCanBeStoppedAndRestarted) {
|
| DestroyStreams();
|
| }
|
|
|
| -TEST_F(EndToEndTest, RendersSingleDelayedFrame) {
|
| +TEST_P(EndToEndTest, RendersSingleDelayedFrame) {
|
| static const int kWidth = 320;
|
| static const int kHeight = 240;
|
| // This constant is chosen to be higher than the timeout in the video_render
|
| @@ -249,7 +262,7 @@ TEST_F(EndToEndTest, RendersSingleDelayedFrame) {
|
| DestroyStreams();
|
| }
|
|
|
| -TEST_F(EndToEndTest, TransmitsFirstFrame) {
|
| +TEST_P(EndToEndTest, TransmitsFirstFrame) {
|
| class Renderer : public rtc::VideoSinkInterface<VideoFrame> {
|
| public:
|
| Renderer() : event_(false, false) {}
|
| @@ -352,20 +365,26 @@ class CodecObserver : public test::EndToEndTest,
|
| int frame_counter_;
|
| };
|
|
|
| -TEST_F(EndToEndTest, SendsAndReceivesVP8Rotation90) {
|
| +TEST_P(EndToEndTest, SendsAndReceivesVP8) {
|
| + CodecObserver test(5, kVideoRotation_0, "VP8", VP8Encoder::Create(),
|
| + VP8Decoder::Create());
|
| + RunBaseTest(&test);
|
| +}
|
| +
|
| +TEST_P(EndToEndTest, SendsAndReceivesVP8Rotation90) {
|
| CodecObserver test(5, kVideoRotation_90, "VP8", VP8Encoder::Create(),
|
| VP8Decoder::Create());
|
| RunBaseTest(&test);
|
| }
|
|
|
| #if !defined(RTC_DISABLE_VP9)
|
| -TEST_F(EndToEndTest, SendsAndReceivesVP9) {
|
| +TEST_P(EndToEndTest, SendsAndReceivesVP9) {
|
| CodecObserver test(500, kVideoRotation_0, "VP9", VP9Encoder::Create(),
|
| VP9Decoder::Create());
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, SendsAndReceivesVP9VideoRotation90) {
|
| +TEST_P(EndToEndTest, SendsAndReceivesVP9VideoRotation90) {
|
| CodecObserver test(5, kVideoRotation_90, "VP9", VP9Encoder::Create(),
|
| VP9Decoder::Create());
|
| RunBaseTest(&test);
|
| @@ -373,14 +392,14 @@ TEST_F(EndToEndTest, SendsAndReceivesVP9VideoRotation90) {
|
| #endif // !defined(RTC_DISABLE_VP9)
|
|
|
| #if defined(WEBRTC_USE_H264)
|
| -TEST_F(EndToEndTest, SendsAndReceivesH264) {
|
| +TEST_P(EndToEndTest, SendsAndReceivesH264) {
|
| CodecObserver test(500, kVideoRotation_0, "H264",
|
| H264Encoder::Create(cricket::VideoCodec("H264")),
|
| H264Decoder::Create());
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, SendsAndReceivesH264VideoRotation90) {
|
| +TEST_P(EndToEndTest, SendsAndReceivesH264VideoRotation90) {
|
| CodecObserver test(5, kVideoRotation_90, "H264",
|
| H264Encoder::Create(cricket::VideoCodec("H264")),
|
| H264Decoder::Create());
|
| @@ -388,7 +407,7 @@ TEST_F(EndToEndTest, SendsAndReceivesH264VideoRotation90) {
|
| }
|
| #endif // defined(WEBRTC_USE_H264)
|
|
|
| -TEST_F(EndToEndTest, ReceiverUsesLocalSsrc) {
|
| +TEST_P(EndToEndTest, ReceiverUsesLocalSsrc) {
|
| class SyncRtcpObserver : public test::EndToEndTest {
|
| public:
|
| SyncRtcpObserver() : EndToEndTest(kDefaultTimeoutMs) {}
|
| @@ -411,7 +430,7 @@ TEST_F(EndToEndTest, ReceiverUsesLocalSsrc) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReceivesAndRetransmitsNack) {
|
| +TEST_P(EndToEndTest, ReceivesAndRetransmitsNack) {
|
| static const int kNumberOfNacksToObserve = 2;
|
| static const int kLossBurstSize = 2;
|
| static const int kPacketsBetweenLossBursts = 9;
|
| @@ -493,7 +512,7 @@ TEST_F(EndToEndTest, ReceivesAndRetransmitsNack) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReceivesNackAndRetransmitsAudio) {
|
| +TEST_P(EndToEndTest, ReceivesNackAndRetransmitsAudio) {
|
| class NackObserver : public test::EndToEndTest {
|
| public:
|
| NackObserver()
|
| @@ -564,7 +583,7 @@ TEST_F(EndToEndTest, ReceivesNackAndRetransmitsAudio) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, CanReceiveUlpfec) {
|
| +TEST_P(EndToEndTest, CanReceiveUlpfec) {
|
| class UlpfecRenderObserver : public test::EndToEndTest,
|
| public rtc::VideoSinkInterface<VideoFrame> {
|
| public:
|
| @@ -590,8 +609,9 @@ TEST_F(EndToEndTest, CanReceiveUlpfec) {
|
| if (protected_sequence_numbers_.count(header.sequenceNumber) != 0) {
|
| // Retransmitted packet, should not count.
|
| protected_sequence_numbers_.erase(header.sequenceNumber);
|
| - EXPECT_GT(protected_timestamps_.count(header.timestamp), 0u);
|
| - protected_timestamps_.erase(header.timestamp);
|
| + auto ts_it = protected_timestamps_.find(header.timestamp);
|
| + EXPECT_NE(ts_it, protected_timestamps_.end());
|
| + protected_timestamps_.erase(ts_it);
|
| return SEND_PACKET;
|
| }
|
|
|
| @@ -657,13 +677,15 @@ TEST_F(EndToEndTest, CanReceiveUlpfec) {
|
|
|
| rtc::CriticalSection crit_;
|
| std::set<uint32_t> protected_sequence_numbers_ GUARDED_BY(crit_);
|
| - std::set<uint32_t> protected_timestamps_ GUARDED_BY(crit_);
|
| + // Since several packets can have the same timestamp a multiset is used
|
| + // instead of a set.
|
| + std::multiset<uint32_t> protected_timestamps_ GUARDED_BY(crit_);
|
| } test;
|
|
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, CanReceiveFlexfec) {
|
| +TEST_P(EndToEndTest, CanReceiveFlexfec) {
|
| class FlexfecRenderObserver : public test::EndToEndTest,
|
| public rtc::VideoSinkInterface<VideoFrame> {
|
| public:
|
| @@ -747,13 +769,15 @@ TEST_F(EndToEndTest, CanReceiveFlexfec) {
|
|
|
| rtc::CriticalSection crit_;
|
| std::set<uint32_t> protected_sequence_numbers_ GUARDED_BY(crit_);
|
| - std::set<uint32_t> protected_timestamps_ GUARDED_BY(crit_);
|
| + // Since several packets can have the same timestamp a multiset is used
|
| + // instead of a set.
|
| + std::multiset<uint32_t> protected_timestamps_ GUARDED_BY(crit_);
|
| } test;
|
|
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReceivedUlpfecPacketsNotNacked) {
|
| +TEST_P(EndToEndTest, ReceivedUlpfecPacketsNotNacked) {
|
| class UlpfecNackObserver : public test::EndToEndTest {
|
| public:
|
| UlpfecNackObserver()
|
| @@ -1051,19 +1075,19 @@ void EndToEndTest::DecodesRetransmittedFrame(bool enable_rtx, bool enable_red) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, DecodesRetransmittedFrame) {
|
| +TEST_P(EndToEndTest, DecodesRetransmittedFrame) {
|
| DecodesRetransmittedFrame(false, false);
|
| }
|
|
|
| -TEST_F(EndToEndTest, DecodesRetransmittedFrameOverRtx) {
|
| +TEST_P(EndToEndTest, DecodesRetransmittedFrameOverRtx) {
|
| DecodesRetransmittedFrame(true, false);
|
| }
|
|
|
| -TEST_F(EndToEndTest, DecodesRetransmittedFrameByRed) {
|
| +TEST_P(EndToEndTest, DecodesRetransmittedFrameByRed) {
|
| DecodesRetransmittedFrame(false, true);
|
| }
|
|
|
| -TEST_F(EndToEndTest, DecodesRetransmittedFrameByRedOverRtx) {
|
| +TEST_P(EndToEndTest, DecodesRetransmittedFrameByRedOverRtx) {
|
| DecodesRetransmittedFrame(true, true);
|
| }
|
|
|
| @@ -1147,15 +1171,18 @@ void EndToEndTest::ReceivesPliAndRecovers(int rtp_history_ms) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReceivesPliAndRecoversWithNack) {
|
| +TEST_P(EndToEndTest, ReceivesPliAndRecoversWithNack) {
|
| ReceivesPliAndRecovers(1000);
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReceivesPliAndRecoversWithoutNack) {
|
| +TEST_P(EndToEndTest, ReceivesPliAndRecoversWithoutNack) {
|
| + // This test makes no sense for the new video jitter buffer.
|
| + if (GetParam() == new_jb_enabled)
|
| + return;
|
| ReceivesPliAndRecovers(0);
|
| }
|
|
|
| -TEST_F(EndToEndTest, UnknownRtpPacketGivesUnknownSsrcReturnCode) {
|
| +TEST_P(EndToEndTest, UnknownRtpPacketGivesUnknownSsrcReturnCode) {
|
| class PacketInputObserver : public PacketReceiver {
|
| public:
|
| explicit PacketInputObserver(PacketReceiver* receiver)
|
| @@ -1287,11 +1314,11 @@ void EndToEndTest::RespectsRtcpMode(RtcpMode rtcp_mode) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, UsesRtcpCompoundMode) {
|
| +TEST_P(EndToEndTest, UsesRtcpCompoundMode) {
|
| RespectsRtcpMode(RtcpMode::kCompound);
|
| }
|
|
|
| -TEST_F(EndToEndTest, UsesRtcpReducedSizeMode) {
|
| +TEST_P(EndToEndTest, UsesRtcpReducedSizeMode) {
|
| RespectsRtcpMode(RtcpMode::kReducedSize);
|
| }
|
|
|
| @@ -1415,7 +1442,7 @@ class MultiStreamTest {
|
|
|
| // Each renderer verifies that it receives the expected resolution, and as soon
|
| // as every renderer has received a frame, the test finishes.
|
| -TEST_F(EndToEndTest, SendsAndReceivesMultipleStreams) {
|
| +TEST_P(EndToEndTest, SendsAndReceivesMultipleStreams) {
|
| class VideoOutputObserver : public rtc::VideoSinkInterface<VideoFrame> {
|
| public:
|
| VideoOutputObserver(const MultiStreamTest::CodecSettings& settings,
|
| @@ -1480,7 +1507,7 @@ TEST_F(EndToEndTest, SendsAndReceivesMultipleStreams) {
|
| tester.RunTest();
|
| }
|
|
|
| -TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) {
|
| +TEST_P(EndToEndTest, AssignsTransportSequenceNumbers) {
|
| static const int kExtensionId = 5;
|
|
|
| class RtpExtensionHeaderObserver : public test::DirectTransport {
|
| @@ -1747,32 +1774,32 @@ class TransportFeedbackTester : public test::EndToEndTest {
|
| Call* receiver_call_;
|
| };
|
|
|
| -TEST_F(EndToEndTest, VideoReceivesTransportFeedback) {
|
| +TEST_P(EndToEndTest, VideoReceivesTransportFeedback) {
|
| TransportFeedbackTester test(true, 1, 0);
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, VideoTransportFeedbackNotConfigured) {
|
| +TEST_P(EndToEndTest, VideoTransportFeedbackNotConfigured) {
|
| TransportFeedbackTester test(false, 1, 0);
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, AudioReceivesTransportFeedback) {
|
| +TEST_P(EndToEndTest, AudioReceivesTransportFeedback) {
|
| TransportFeedbackTester test(true, 0, 1);
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, AudioTransportFeedbackNotConfigured) {
|
| +TEST_P(EndToEndTest, AudioTransportFeedbackNotConfigured) {
|
| TransportFeedbackTester test(false, 0, 1);
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, AudioVideoReceivesTransportFeedback) {
|
| +TEST_P(EndToEndTest, AudioVideoReceivesTransportFeedback) {
|
| TransportFeedbackTester test(true, 1, 1);
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, ObserversEncodedFrames) {
|
| +TEST_P(EndToEndTest, ObserversEncodedFrames) {
|
| class EncodedFrameTestObserver : public EncodedFrameObserver {
|
| public:
|
| EncodedFrameTestObserver()
|
| @@ -1847,7 +1874,7 @@ TEST_F(EndToEndTest, ObserversEncodedFrames) {
|
| DestroyStreams();
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReceiveStreamSendsRemb) {
|
| +TEST_P(EndToEndTest, ReceiveStreamSendsRemb) {
|
| class RembObserver : public test::EndToEndTest {
|
| public:
|
| RembObserver() : EndToEndTest(kDefaultTimeoutMs) {}
|
| @@ -1876,7 +1903,7 @@ TEST_F(EndToEndTest, ReceiveStreamSendsRemb) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, VerifyBandwidthStats) {
|
| +TEST_P(EndToEndTest, VerifyBandwidthStats) {
|
| class RtcpObserver : public test::EndToEndTest {
|
| public:
|
| RtcpObserver()
|
| @@ -1922,7 +1949,7 @@ TEST_F(EndToEndTest, VerifyBandwidthStats) {
|
| // then have the test generate a REMB of 500 kbps and verify that the send BWE
|
| // is reduced to exactly 500 kbps. Then a REMB of 1000 kbps is generated and the
|
| // test verifies that the send BWE ramps back up to exactly 1000 kbps.
|
| -TEST_F(EndToEndTest, RembWithSendSideBwe) {
|
| +TEST_P(EndToEndTest, RembWithSendSideBwe) {
|
| class BweObserver : public test::EndToEndTest {
|
| public:
|
| BweObserver()
|
| @@ -2055,7 +2082,7 @@ TEST_F(EndToEndTest, RembWithSendSideBwe) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, VerifyNackStats) {
|
| +TEST_P(EndToEndTest, VerifyNackStats) {
|
| static const int kPacketNumberToDrop = 200;
|
| class NackObserver : public test::EndToEndTest {
|
| public:
|
| @@ -2387,21 +2414,21 @@ void EndToEndTest::VerifyHistogramStats(bool use_rtx,
|
| metrics::NumSamples("WebRTC.Video.ReceivedFecPacketsInPercent"));
|
| }
|
|
|
| -TEST_F(EndToEndTest, VerifyHistogramStatsWithRtx) {
|
| +TEST_P(EndToEndTest, VerifyHistogramStatsWithRtx) {
|
| const bool kEnabledRtx = true;
|
| const bool kEnabledRed = false;
|
| const bool kScreenshare = false;
|
| VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare);
|
| }
|
|
|
| -TEST_F(EndToEndTest, VerifyHistogramStatsWithRed) {
|
| +TEST_P(EndToEndTest, VerifyHistogramStatsWithRed) {
|
| const bool kEnabledRtx = false;
|
| const bool kEnabledRed = true;
|
| const bool kScreenshare = false;
|
| VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare);
|
| }
|
|
|
| -TEST_F(EndToEndTest, VerifyHistogramStatsWithScreenshare) {
|
| +TEST_P(EndToEndTest, VerifyHistogramStatsWithScreenshare) {
|
| const bool kEnabledRtx = false;
|
| const bool kEnabledRed = false;
|
| const bool kScreenshare = true;
|
| @@ -2609,7 +2636,7 @@ void EndToEndTest::TestSendsSetSsrcs(size_t num_ssrcs,
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReportsSetEncoderRates) {
|
| +TEST_P(EndToEndTest, ReportsSetEncoderRates) {
|
| class EncoderRateStatsTest : public test::EndToEndTest,
|
| public test::FakeEncoder {
|
| public:
|
| @@ -2689,7 +2716,7 @@ TEST_F(EndToEndTest, ReportsSetEncoderRates) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, GetStats) {
|
| +TEST_P(EndToEndTest, GetStats) {
|
| static const int kStartBitrateBps = 3000000;
|
| static const int kExpectedRenderDelayMs = 20;
|
|
|
| @@ -3030,18 +3057,22 @@ TEST_F(EndToEndTest, GetStats) {
|
| ReceiveStreamRenderer receive_stream_renderer_;
|
| } test;
|
|
|
| + // TODO(philipel): Implement statistics for the new video jitter buffer.
|
| + if (GetParam() == new_jb_enabled)
|
| + return;
|
| +
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReceiverReferenceTimeReportEnabled) {
|
| +TEST_P(EndToEndTest, ReceiverReferenceTimeReportEnabled) {
|
| TestXrReceiverReferenceTimeReport(true);
|
| }
|
|
|
| -TEST_F(EndToEndTest, ReceiverReferenceTimeReportDisabled) {
|
| +TEST_P(EndToEndTest, ReceiverReferenceTimeReportDisabled) {
|
| TestXrReceiverReferenceTimeReport(false);
|
| }
|
|
|
| -TEST_F(EndToEndTest, TestReceivedRtpPacketStats) {
|
| +TEST_P(EndToEndTest, TestReceivedRtpPacketStats) {
|
| static const size_t kNumRtpPacketsToSend = 5;
|
| class ReceivedRtpStatsObserver : public test::EndToEndTest {
|
| public:
|
| @@ -3081,17 +3112,19 @@ TEST_F(EndToEndTest, TestReceivedRtpPacketStats) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, SendsSetSsrc) { TestSendsSetSsrcs(1, false); }
|
| +TEST_P(EndToEndTest, SendsSetSsrc) {
|
| + TestSendsSetSsrcs(1, false);
|
| +}
|
|
|
| -TEST_F(EndToEndTest, SendsSetSimulcastSsrcs) {
|
| +TEST_P(EndToEndTest, SendsSetSimulcastSsrcs) {
|
| TestSendsSetSsrcs(kNumSsrcs, false);
|
| }
|
|
|
| -TEST_F(EndToEndTest, CanSwitchToUseAllSsrcs) {
|
| +TEST_P(EndToEndTest, CanSwitchToUseAllSsrcs) {
|
| TestSendsSetSsrcs(kNumSsrcs, true);
|
| }
|
|
|
| -TEST_F(EndToEndTest, DISABLED_RedundantPayloadsTransmittedOnAllSsrcs) {
|
| +TEST_P(EndToEndTest, DISABLED_RedundantPayloadsTransmittedOnAllSsrcs) {
|
| class ObserveRedundantPayloads: public test::EndToEndTest {
|
| public:
|
| ObserveRedundantPayloads()
|
| @@ -3425,19 +3458,19 @@ void EndToEndTest::TestRtpStatePreservation(bool use_rtx,
|
| DestroyStreams();
|
| }
|
|
|
| -TEST_F(EndToEndTest, RestartingSendStreamPreservesRtpState) {
|
| +TEST_P(EndToEndTest, RestartingSendStreamPreservesRtpState) {
|
| TestRtpStatePreservation(false, false);
|
| }
|
|
|
| -TEST_F(EndToEndTest, RestartingSendStreamPreservesRtpStatesWithRtx) {
|
| +TEST_P(EndToEndTest, RestartingSendStreamPreservesRtpStatesWithRtx) {
|
| TestRtpStatePreservation(true, false);
|
| }
|
|
|
| -TEST_F(EndToEndTest, RestartingSendStreamKeepsRtpAndRtcpTimestampsSynced) {
|
| +TEST_P(EndToEndTest, RestartingSendStreamKeepsRtpAndRtcpTimestampsSynced) {
|
| TestRtpStatePreservation(true, true);
|
| }
|
|
|
| -TEST_F(EndToEndTest, RespectsNetworkState) {
|
| +TEST_P(EndToEndTest, RespectsNetworkState) {
|
| // TODO(pbos): Remove accepted downtime packets etc. when signaling network
|
| // down blocks until no more packets will be sent.
|
|
|
| @@ -3631,7 +3664,7 @@ TEST_F(EndToEndTest, RespectsNetworkState) {
|
| RunBaseTest(&test);
|
| }
|
|
|
| -TEST_F(EndToEndTest, CallReportsRttForSender) {
|
| +TEST_P(EndToEndTest, CallReportsRttForSender) {
|
| static const int kSendDelayMs = 30;
|
| static const int kReceiveDelayMs = 70;
|
| CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_));
|
| @@ -3668,8 +3701,11 @@ TEST_F(EndToEndTest, CallReportsRttForSender) {
|
| SleepMs(10);
|
| }
|
|
|
| + sender_transport.StopSending();
|
| + receiver_transport.StopSending();
|
| Stop();
|
| DestroyStreams();
|
| + DestroyCalls();
|
| }
|
|
|
| void EndToEndTest::VerifyNewVideoSendStreamsRespectNetworkState(
|
| @@ -3716,7 +3752,7 @@ void EndToEndTest::VerifyNewVideoReceiveStreamsRespectNetworkState(
|
| DestroyStreams();
|
| }
|
|
|
| -TEST_F(EndToEndTest, NewVideoSendStreamsRespectVideoNetworkDown) {
|
| +TEST_P(EndToEndTest, NewVideoSendStreamsRespectVideoNetworkDown) {
|
| class UnusedEncoder : public test::FakeEncoder {
|
| public:
|
| UnusedEncoder() : FakeEncoder(Clock::GetRealTimeClock()) {}
|
| @@ -3742,7 +3778,7 @@ TEST_F(EndToEndTest, NewVideoSendStreamsRespectVideoNetworkDown) {
|
| MediaType::AUDIO, &unused_encoder, &unused_transport);
|
| }
|
|
|
| -TEST_F(EndToEndTest, NewVideoSendStreamsIgnoreAudioNetworkDown) {
|
| +TEST_P(EndToEndTest, NewVideoSendStreamsIgnoreAudioNetworkDown) {
|
| class RequiredEncoder : public test::FakeEncoder {
|
| public:
|
| RequiredEncoder()
|
| @@ -3770,12 +3806,12 @@ TEST_F(EndToEndTest, NewVideoSendStreamsIgnoreAudioNetworkDown) {
|
| MediaType::VIDEO, &required_encoder, &required_transport);
|
| }
|
|
|
| -TEST_F(EndToEndTest, NewVideoReceiveStreamsRespectVideoNetworkDown) {
|
| +TEST_P(EndToEndTest, NewVideoReceiveStreamsRespectVideoNetworkDown) {
|
| UnusedTransport transport;
|
| VerifyNewVideoReceiveStreamsRespectNetworkState(MediaType::AUDIO, &transport);
|
| }
|
|
|
| -TEST_F(EndToEndTest, NewVideoReceiveStreamsIgnoreAudioNetworkDown) {
|
| +TEST_P(EndToEndTest, NewVideoReceiveStreamsIgnoreAudioNetworkDown) {
|
| RequiredTransport transport(false /*rtp*/, true /*rtcp*/);
|
| VerifyNewVideoReceiveStreamsRespectNetworkState(MediaType::VIDEO, &transport);
|
| }
|
| @@ -3801,7 +3837,7 @@ void VerifyEmptyFlexfecConfig(const FlexfecConfig& config) {
|
| << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation.";
|
| }
|
|
|
| -TEST_F(EndToEndTest, VerifyDefaultSendConfigParameters) {
|
| +TEST_P(EndToEndTest, VerifyDefaultSendConfigParameters) {
|
| VideoSendStream::Config default_send_config(nullptr);
|
| EXPECT_EQ(0, default_send_config.rtp.nack.rtp_history_ms)
|
| << "Enabling NACK require rtcp-fb: nack negotiation.";
|
| @@ -3815,7 +3851,7 @@ TEST_F(EndToEndTest, VerifyDefaultSendConfigParameters) {
|
| VerifyEmptyFlexfecConfig(default_send_config.rtp.flexfec);
|
| }
|
|
|
| -TEST_F(EndToEndTest, VerifyDefaultVideoReceiveConfigParameters) {
|
| +TEST_P(EndToEndTest, VerifyDefaultVideoReceiveConfigParameters) {
|
| VideoReceiveStream::Config default_receive_config(nullptr);
|
| EXPECT_EQ(RtcpMode::kCompound, default_receive_config.rtp.rtcp_mode)
|
| << "Reduced-size RTCP require rtcp-rsize to be negotiated.";
|
| @@ -3833,12 +3869,12 @@ TEST_F(EndToEndTest, VerifyDefaultVideoReceiveConfigParameters) {
|
| VerifyEmptyUlpfecConfig(default_receive_config.rtp.ulpfec);
|
| }
|
|
|
| -TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) {
|
| +TEST_P(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) {
|
| FlexfecReceiveStream::Config default_receive_config;
|
| VerifyEmptyFlexfecConfig(default_receive_config);
|
| }
|
|
|
| -TEST_F(EndToEndTest, TransportSeqNumOnAudioAndVideo) {
|
| +TEST_P(EndToEndTest, TransportSeqNumOnAudioAndVideo) {
|
| static const int kExtensionId = 8;
|
| class TransportSequenceNumberTest : public test::EndToEndTest {
|
| public:
|
| @@ -3949,7 +3985,7 @@ class EndToEndLogTest : public EndToEndTest {
|
| std::vector<std::string> paths_;
|
| };
|
|
|
| -TEST_F(EndToEndLogTest, LogsEncodedFramesWhenRequested) {
|
| +TEST_P(EndToEndLogTest, LogsEncodedFramesWhenRequested) {
|
| static const int kNumFramesToRecord = 10;
|
| class LogEncodingObserver : public test::EndToEndTest,
|
| public EncodedFrameObserver {
|
|
|