diff --git a/experiments/field_trials.py b/experiments/field_trials.py index 406b249ccd..d4bd1d604c 100755 --- a/experiments/field_trials.py +++ b/experiments/field_trials.py @@ -775,9 +775,6 @@ POLICY_EXEMPT_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([ FieldTrial('WebRTC-UseDifferentiatedCellularCosts', 'webrtc:11473', date(2024, 4, 1)), - FieldTrial('WebRTC-UseShortVP8TL3Pattern', - 'webrtc:8162', - INDEFINITE), FieldTrial('WebRTC-UseStandardBytesStats', 'webrtc:10525', date(2024, 4, 1)), @@ -893,7 +890,7 @@ POLICY_EXEMPT_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([ ]) # yapf: disable POLICY_EXEMPT_FIELD_TRIALS_DIGEST: str = \ - 'ac66aba5d08866be534a452b59c3de627bf38f3e' + '5690e723f0ca378ceb708e02bf2334327c0f64b6' REGISTERED_FIELD_TRIALS: FrozenSet[FieldTrial] = ACTIVE_FIELD_TRIALS.union( POLICY_EXEMPT_FIELD_TRIALS) diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn index 15face24a7..acd49d0ace 100644 --- a/modules/video_coding/BUILD.gn +++ b/modules/video_coding/BUILD.gn @@ -634,7 +634,6 @@ rtc_library("webrtc_vp8_temporal_layers") { "../../rtc_base:rate_statistics", "../../rtc_base:rtc_numerics", "../../rtc_base:timeutils", - "../../system_wrappers:field_trial", "../../system_wrappers:metrics", ] absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] diff --git a/modules/video_coding/codecs/vp8/default_temporal_layers.cc b/modules/video_coding/codecs/vp8/default_temporal_layers.cc index 8ad30f044c..99dfb6e2f1 100644 --- a/modules/video_coding/codecs/vp8/default_temporal_layers.cc +++ b/modules/video_coding/codecs/vp8/default_temporal_layers.cc @@ -22,7 +22,6 @@ #include "rtc_base/arraysize.h" #include "rtc_base/checks.h" #include "rtc_base/logging.h" -#include "system_wrappers/include/field_trial.h" namespace webrtc { DefaultTemporalLayers::PendingFrame::PendingFrame() = default; @@ -149,54 +148,25 @@ DefaultTemporalLayers::GetDependencyInfo(size_t num_layers) { {"SR", {kReferenceAndUpdate, kNone, kNone}}, {"-D", {kReference, kReference, kNone, kFreezeEntropy}}}; case 3: - if (field_trial::IsEnabled("WebRTC-UseShortVP8TL3Pattern")) { - // This field trial is intended to check if it is worth using a shorter - // temporal pattern, trading some coding efficiency for less risk of - // dropped frames. - // The coding efficiency will decrease somewhat since the higher layer - // state is more volatile, but it will be offset slightly by updating - // the altref buffer with TL2 frames, instead of just referencing lower - // layers. - // If a frame is dropped in a higher layer, the jitter - // buffer on the receive side won't be able to decode any higher layer - // frame until the next sync frame. So we expect a noticeable decrease - // in frame drops on links with high packet loss. - - // TL0 references and updates the 'last' buffer. - // TL1 references 'last' and references and updates 'golden'. - // TL2 references both 'last' & 'golden' and references and updates - // 'arf'. - // 2-------2 2-------2 2 - // / __/ / __/ / - // / __1 / __1 / - // /___/ /___/ / - // 0---------------0---------------0----- - // 0 1 2 3 4 5 6 7 8 9 ... - return {{"SSS", {kReferenceAndUpdate, kNone, kNone}}, - {"--S", {kReference, kNone, kUpdate}}, - {"-DR", {kReference, kUpdate, kNone}}, - {"--D", {kReference, kReference, kReference, kFreezeEntropy}}}; - } else { - // All layers can reference but not update the 'alt' buffer, this means - // that the 'alt' buffer reference is effectively the last keyframe. - // TL0 also references and updates the 'last' buffer. - // TL1 also references 'last' and references and updates 'golden'. - // TL2 references both 'last' and 'golden' but updates no buffer. - // 2 __2 _____2 __2 2 - // / /____/ / / / - // / 1---------/-----1 / - // /_____/ /_____/ / - // 0---------------0---------------0----- - // 0 1 2 3 4 5 6 7 8 9 ... - return {{"SSS", {kReferenceAndUpdate, kNone, kNone}}, - {"--D", {kReference, kNone, kNone, kFreezeEntropy}}, - {"-SS", {kReference, kUpdate, kNone}}, - {"--D", {kReference, kReference, kNone, kFreezeEntropy}}, - {"SRR", {kReferenceAndUpdate, kNone, kNone}}, - {"--D", {kReference, kReference, kNone, kFreezeEntropy}}, - {"-DS", {kReference, kReferenceAndUpdate, kNone}}, - {"--D", {kReference, kReference, kNone, kFreezeEntropy}}}; - } + // All layers can reference but not update the 'alt' buffer, this means + // that the 'alt' buffer reference is effectively the last keyframe. + // TL0 also references and updates the 'last' buffer. + // TL1 also references 'last' and references and updates 'golden'. + // TL2 references both 'last' and 'golden' but updates no buffer. + // 2 __2 _____2 __2 2 + // / /____/ / / / + // / 1---------/-----1 / + // /_____/ /_____/ / + // 0---------------0---------------0----- + // 0 1 2 3 4 5 6 7 8 9 ... + return {{"SSS", {kReferenceAndUpdate, kNone, kNone}}, + {"--D", {kReference, kNone, kNone, kFreezeEntropy}}, + {"-SS", {kReference, kUpdate, kNone}}, + {"--D", {kReference, kReference, kNone, kFreezeEntropy}}, + {"SRR", {kReferenceAndUpdate, kNone, kNone}}, + {"--D", {kReference, kReference, kNone, kFreezeEntropy}}, + {"-DS", {kReference, kReferenceAndUpdate, kNone}}, + {"--D", {kReference, kReference, kNone, kFreezeEntropy}}}; case 4: // TL0 references and updates only the 'last' buffer. // TL1 references 'last' and updates and references 'golden'. @@ -646,23 +616,14 @@ FrameDependencyStructure DefaultTemporalLayers::GetTemplateStructure( return template_structure; } case 3: { - if (field_trial::IsEnabled("WebRTC-UseShortVP8TL3Pattern")) { - template_structure.templates.resize(5); - template_structure.templates[0].T(0).Dtis("SSS"); - template_structure.templates[1].T(0).Dtis("SSS").FrameDiffs({4}); - template_structure.templates[2].T(1).Dtis("-DR").FrameDiffs({2}); - template_structure.templates[3].T(2).Dtis("--S").FrameDiffs({1}); - template_structure.templates[4].T(2).Dtis("--D").FrameDiffs({2, 1}); - } else { - template_structure.templates.resize(7); - template_structure.templates[0].T(0).Dtis("SSS"); - template_structure.templates[1].T(0).Dtis("SSS").FrameDiffs({4}); - template_structure.templates[2].T(0).Dtis("SRR").FrameDiffs({4}); - template_structure.templates[3].T(1).Dtis("-SS").FrameDiffs({2}); - template_structure.templates[4].T(1).Dtis("-DS").FrameDiffs({4, 2}); - template_structure.templates[5].T(2).Dtis("--D").FrameDiffs({1}); - template_structure.templates[6].T(2).Dtis("--D").FrameDiffs({3, 1}); - } + template_structure.templates.resize(7); + template_structure.templates[0].T(0).Dtis("SSS"); + template_structure.templates[1].T(0).Dtis("SSS").FrameDiffs({4}); + template_structure.templates[2].T(0).Dtis("SRR").FrameDiffs({4}); + template_structure.templates[3].T(1).Dtis("-SS").FrameDiffs({2}); + template_structure.templates[4].T(1).Dtis("-DS").FrameDiffs({4, 2}); + template_structure.templates[5].T(2).Dtis("--D").FrameDiffs({1}); + template_structure.templates[6].T(2).Dtis("--D").FrameDiffs({3, 1}); return template_structure; } case 4: { @@ -694,11 +655,7 @@ std::vector> GetTemporalDependencies( case 2: return {{2}, {0}, {0}, {1, 2}}; case 3: - if (field_trial::IsEnabled("WebRTC-UseShortVP8TL3Pattern")) { - return {{0}, {0}, {0}, {0, 1, 2}}; - } else { - return {{4}, {0}, {0}, {0, 2}, {0}, {2, 4}, {2, 4}, {4, 6}}; - } + return {{4}, {0}, {0}, {0, 2}, {0}, {2, 4}, {2, 4}, {4, 6}}; case 4: return {{8}, {0}, {0}, {0, 2}, {0}, {0, 2, 4}, {0, 2, 4}, {0, 4, 6}, diff --git a/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc b/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc index ae027a9d8a..ac9c565aec 100644 --- a/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc +++ b/modules/video_coding/codecs/vp8/default_temporal_layers_unittest.cc @@ -19,7 +19,6 @@ #include "modules/video_coding/codecs/vp8/libvpx_vp8_encoder.h" #include "modules/video_coding/include/video_codec_interface.h" #include "modules/video_coding/utility/simulcast_rate_allocator.h" -#include "test/field_trial.h" #include "test/gmock.h" #include "test/gtest.h" #include "vpx/vp8cx.h" @@ -226,221 +225,6 @@ TEST_F(TemporalLayersTest, 3Layers) { } } -TEST_F(TemporalLayersTest, Alternative3Layers) { - constexpr int kNumLayers = 3; - ScopedFieldTrials field_trial("WebRTC-UseShortVP8TL3Pattern/Enabled/"); - DefaultTemporalLayers tl(kNumLayers); - DefaultTemporalLayersChecker checker(kNumLayers); - tl.OnRatesUpdated(0, - GetTemporalLayerRates(kDefaultBytesPerFrame, - kDefaultFramerate, kNumLayers), - kDefaultFramerate); - tl.UpdateConfiguration(0); - - int expected_flags[8] = {kTemporalUpdateLast, - kTemporalUpdateAltrefWithoutDependency, - kTemporalUpdateGoldenWithoutDependency, - kTemporalUpdateNone, - kTemporalUpdateLast, - kTemporalUpdateAltrefWithoutDependency, - kTemporalUpdateGoldenWithoutDependency, - kTemporalUpdateNone}; - int expected_temporal_idx[8] = {0, 2, 1, 2, 0, 2, 1, 2}; - - bool expected_layer_sync[8] = {false, true, true, false, - false, true, true, false}; - - unsigned int timestamp = 0; - for (int i = 0; i < 8; ++i) { - const bool is_keyframe = (i == 0); - CodecSpecificInfo info; - Vp8FrameConfig tl_config = tl.NextFrameConfig(0, timestamp); - EXPECT_EQ(is_keyframe ? kKeyFrameFlags : expected_flags[i], - LibvpxVp8Encoder::EncodeFlags(tl_config)) - << i; - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, is_keyframe, - kDefaultQp, &info); - EXPECT_TRUE(checker.CheckTemporalConfig(is_keyframe, tl_config)); - EXPECT_EQ(expected_temporal_idx[i], info.codecSpecific.VP8.temporalIdx); - EXPECT_EQ(expected_temporal_idx[i], tl_config.packetizer_temporal_idx); - EXPECT_EQ(expected_temporal_idx[i], tl_config.encoder_layer_id); - EXPECT_EQ(is_keyframe || expected_layer_sync[i], - info.codecSpecific.VP8.layerSync); - EXPECT_EQ(expected_layer_sync[i], tl_config.layer_sync); - timestamp += 3000; - } -} - -TEST_F(TemporalLayersTest, SearchOrder) { - constexpr int kNumLayers = 3; - ScopedFieldTrials field_trial("WebRTC-UseShortVP8TL3Pattern/Enabled/"); - DefaultTemporalLayers tl(kNumLayers); - DefaultTemporalLayersChecker checker(kNumLayers); - tl.OnRatesUpdated(0, - GetTemporalLayerRates(kDefaultBytesPerFrame, - kDefaultFramerate, kNumLayers), - kDefaultFramerate); - tl.UpdateConfiguration(0); - - // Use a repeating pattern of tl 0, 2, 1, 2. - // Tl 0, 1, 2 update last, golden, altref respectively. - - // Start with a key-frame. tl_config flags can be ignored. - uint32_t timestamp = 0; - Vp8FrameConfig tl_config = tl.NextFrameConfig(0, timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, true, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // TL2 frame. First one only references TL0. Updates altref. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - EXPECT_EQ(tl_config.first_reference, Vp8BufferReference::kLast); - EXPECT_EQ(tl_config.second_reference, Vp8BufferReference::kNone); - - // TL1 frame. Can only reference TL0. Updated golden. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - EXPECT_EQ(tl_config.first_reference, Vp8BufferReference::kLast); - EXPECT_EQ(tl_config.second_reference, Vp8BufferReference::kNone); - - // TL2 frame. Can reference all three buffers. Golden was the last to be - // updated, the next to last was altref. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - EXPECT_EQ(tl_config.first_reference, Vp8BufferReference::kGolden); - EXPECT_EQ(tl_config.second_reference, Vp8BufferReference::kAltref); -} - -TEST_F(TemporalLayersTest, SearchOrderWithDrop) { - constexpr int kNumLayers = 3; - ScopedFieldTrials field_trial("WebRTC-UseShortVP8TL3Pattern/Enabled/"); - DefaultTemporalLayers tl(kNumLayers); - DefaultTemporalLayersChecker checker(kNumLayers); - tl.OnRatesUpdated(0, - GetTemporalLayerRates(kDefaultBytesPerFrame, - kDefaultFramerate, kNumLayers), - kDefaultFramerate); - tl.UpdateConfiguration(0); - - // Use a repeating pattern of tl 0, 2, 1, 2. - // Tl 0, 1, 2 update last, golden, altref respectively. - - // Start with a key-frame. tl_config flags can be ignored. - uint32_t timestamp = 0; - Vp8FrameConfig tl_config = tl.NextFrameConfig(0, timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, true, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // TL2 frame. First one only references TL0. Updates altref. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - EXPECT_EQ(tl_config.first_reference, Vp8BufferReference::kLast); - EXPECT_EQ(tl_config.second_reference, Vp8BufferReference::kNone); - - // Dropped TL1 frame. Can only reference TL0. Should have updated golden. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, 0, false, 0, nullptr); - - // TL2 frame. Can normally reference all three buffers, but golden has not - // been populated this cycle. Altref was last to be updated, before that last. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - EXPECT_EQ(tl_config.first_reference, Vp8BufferReference::kAltref); - EXPECT_EQ(tl_config.second_reference, Vp8BufferReference::kLast); -} - -TEST_F(TemporalLayersTest, DoesNotReferenceDroppedFrames) { - constexpr int kNumLayers = 3; - // Use a repeating pattern of tl 0, 2, 1, 2. - // Tl 0, 1, 2 update last, golden, altref respectively. - ScopedFieldTrials field_trial("WebRTC-UseShortVP8TL3Pattern/Enabled/"); - DefaultTemporalLayers tl(kNumLayers); - DefaultTemporalLayersChecker checker(kNumLayers); - tl.OnRatesUpdated(0, - GetTemporalLayerRates(kDefaultBytesPerFrame, - kDefaultFramerate, kNumLayers), - kDefaultFramerate); - tl.UpdateConfiguration(0); - - // Start with a keyframe. - uint32_t timestamp = 0; - Vp8FrameConfig tl_config = tl.NextFrameConfig(0, timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, true, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // Dropped TL2 frame. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, 0, false, 0, nullptr); - - // Dropped TL1 frame. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, 0, false, 0, nullptr); - - // TL2 frame. Can reference all three buffers, valid since golden and altref - // both contain the last keyframe. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - EXPECT_TRUE(tl_config.last_buffer_flags & BufferFlags::kReference); - EXPECT_TRUE(tl_config.golden_buffer_flags & BufferFlags::kReference); - EXPECT_TRUE(tl_config.arf_buffer_flags & BufferFlags::kReference); - - // Restart of cycle! - - // TL0 base layer frame, updating and referencing last. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // TL2 frame, updating altref. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // TL1 frame, updating golden. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // TL2 frame. Can still reference all buffer since they have been update this - // cycle. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - EXPECT_TRUE(tl_config.last_buffer_flags & BufferFlags::kReference); - EXPECT_TRUE(tl_config.golden_buffer_flags & BufferFlags::kReference); - EXPECT_TRUE(tl_config.arf_buffer_flags & BufferFlags::kReference); - - // Restart of cycle! - - // TL0 base layer frame, updating and referencing last. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // Dropped TL2 frame. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, 0, false, 0, nullptr); - - // Dropped TL1 frame. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, 0, false, 0, nullptr); - - // TL2 frame. This time golden and altref contain data from the previous cycle - // and cannot be referenced. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - EXPECT_TRUE(tl_config.last_buffer_flags & BufferFlags::kReference); - EXPECT_FALSE(tl_config.golden_buffer_flags & BufferFlags::kReference); - EXPECT_FALSE(tl_config.arf_buffer_flags & BufferFlags::kReference); -} - TEST_F(TemporalLayersTest, DoesNotReferenceUnlessGuaranteedToExist) { constexpr int kNumLayers = 3; // Use a repeating pattern of tl 0, 2, 1, 2. @@ -509,69 +293,6 @@ TEST_F(TemporalLayersTest, DoesNotReferenceUnlessGuaranteedToExist) { EXPECT_FALSE(tl_config.arf_buffer_flags & BufferFlags::kReference); } -TEST_F(TemporalLayersTest, DoesNotReferenceUnlessGuaranteedToExistLongDelay) { - constexpr int kNumLayers = 3; - // Use a repeating pattern of tl 0, 2, 1, 2. - // Tl 0, 1 updates last, golden, altref respectively. - ScopedFieldTrials field_trial("WebRTC-UseShortVP8TL3Pattern/Enabled/"); - DefaultTemporalLayers tl(kNumLayers); - DefaultTemporalLayersChecker checker(kNumLayers); - tl.OnRatesUpdated(0, - GetTemporalLayerRates(kDefaultBytesPerFrame, - kDefaultFramerate, kNumLayers), - kDefaultFramerate); - tl.UpdateConfiguration(0); - - // Start with a keyframe. - uint32_t timestamp = 0; - Vp8FrameConfig tl_config = tl.NextFrameConfig(0, timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, true, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // Do a full cycle of the pattern. - for (int i = 0; i < 3; ++i) { - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - } - - // TL0 base layer frame, starting the cycle over. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // TL2 frame. - tl_config = tl.NextFrameConfig(0, ++timestamp); - tl.OnEncodeDone(0, timestamp, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // Encoder has a hiccup and builds a queue, so frame encoding is delayed. - // Encoded, but delayed frames in TL 1, 2. - tl_config = tl.NextFrameConfig(0, timestamp + 1); - tl_config = tl.NextFrameConfig(0, timestamp + 2); - - // Restart of the pattern! - - // Encoded, but delayed frames in TL 2, 1. - tl_config = tl.NextFrameConfig(0, timestamp + 3); - tl_config = tl.NextFrameConfig(0, timestamp + 4); - - // TL1 frame from last cycle is ready. - tl.OnEncodeDone(0, timestamp + 1, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - // TL2 frame from last cycle is ready. - tl.OnEncodeDone(0, timestamp + 2, kDefaultBytesPerFrame, false, kDefaultQp, - IgnoredCodecSpecificInfo()); - - // TL2 frame, that should be referencing all buffers, but altref and golden - // haven not been updated this cycle. (Don't be fooled by the late frames from - // the last cycle!) - tl_config = tl.NextFrameConfig(0, timestamp + 5); - EXPECT_TRUE(tl_config.last_buffer_flags & BufferFlags::kReference); - EXPECT_FALSE(tl_config.golden_buffer_flags & BufferFlags::kReference); - EXPECT_FALSE(tl_config.arf_buffer_flags & BufferFlags::kReference); -} - TEST_F(TemporalLayersTest, KeyFrame) { constexpr int kNumLayers = 3; DefaultTemporalLayers tl(kNumLayers); diff --git a/video/full_stack_tests.cc b/video/full_stack_tests.cc index 5abfa920a2..892359fde0 100644 --- a/video/full_stack_tests.cc +++ b/video/full_stack_tests.cc @@ -649,56 +649,6 @@ TEST(FullStackTest, Conference_Motion_Hd_4tl_Moderate_Limits) { fixture->RunWithAnalyzer(conf_motion_hd); } -TEST(FullStackTest, Conference_Motion_Hd_3tl_Alt_Moderate_Limits) { - test::ScopedFieldTrials field_trial( - AppendFieldTrials("WebRTC-UseShortVP8TL3Pattern/Enabled/")); - auto fixture = CreateVideoQualityTestFixture(); - ParamsWithLogging conf_motion_hd; - conf_motion_hd.call.send_side_bwe = true; - conf_motion_hd.video[0] = { - true, 1280, - 720, 50, - 30000, 3000000, - 3000000, false, - "VP8", 3, - -1, 0, - false, false, - false, ClipNameToClipPath("ConferenceMotion_1280_720_50")}; - conf_motion_hd.analyzer = {"conference_motion_hd_3tl_alt_moderate_limits", - 0.0, 0.0, kFullStackTestDurationSecs}; - conf_motion_hd.config->queue_length_packets = 50; - conf_motion_hd.config->loss_percent = 3; - conf_motion_hd.config->queue_delay_ms = 100; - conf_motion_hd.config->link_capacity_kbps = 2000; - fixture->RunWithAnalyzer(conf_motion_hd); -} - -TEST(FullStackTest, Conference_Motion_Hd_3tl_Alt_Heavy_Moderate_Limits) { - auto fixture = CreateVideoQualityTestFixture(); - test::ScopedFieldTrials field_trial( - AppendFieldTrials("WebRTC-UseShortVP8TL3Pattern/Enabled/" - "WebRTC-UseBaseHeavyVP8TL3RateAllocation/Enabled/")); - ParamsWithLogging conf_motion_hd; - conf_motion_hd.call.send_side_bwe = true; - conf_motion_hd.video[0] = { - true, 1280, - 720, 50, - 30000, 3000000, - 3000000, false, - "VP8", 3, - -1, 0, - false, false, - false, ClipNameToClipPath("ConferenceMotion_1280_720_50")}; - conf_motion_hd.analyzer = { - "conference_motion_hd_3tl_alt_heavy_moderate_limits", 0.0, 0.0, - kFullStackTestDurationSecs}; - conf_motion_hd.config->queue_length_packets = 50; - conf_motion_hd.config->loss_percent = 3; - conf_motion_hd.config->queue_delay_ms = 100; - conf_motion_hd.config->link_capacity_kbps = 2000; - fixture->RunWithAnalyzer(conf_motion_hd); -} - TEST(FullStackTest, Foreman_Cif_30kbps_AV1) { auto fixture = CreateVideoQualityTestFixture(); ParamsWithLogging foreman_cif; diff --git a/video/pc_full_stack_tests.cc b/video/pc_full_stack_tests.cc index f423e4b82d..a4d3cda011 100644 --- a/video/pc_full_stack_tests.cc +++ b/video/pc_full_stack_tests.cc @@ -914,58 +914,6 @@ TEST(PCFullStackTest, ConferenceMotionHd4TLModerateLimits) { fixture->RunWithAnalyzer(conf_motion_hd); } -// TODO(bugs.webrtc.org/10639) requires simulcast/SVC support in PC framework -TEST(PCFullStackTest, ConferenceMotionHd3TLModerateLimitsAltTLPattern) { - test::ScopedFieldTrials field_trial( - AppendFieldTrials("WebRTC-UseShortVP8TL3Pattern/Enabled/")); - auto fixture = CreateVideoQualityTestFixture(); - ParamsWithLogging conf_motion_hd; - conf_motion_hd.call.send_side_bwe = true; - conf_motion_hd.video[0] = { - true, 1280, - 720, 50, - 30000, 3000000, - 3000000, false, - "VP8", 3, - -1, 0, - false, false, - false, ClipNameToClipPath("ConferenceMotion_1280_720_50")}; - conf_motion_hd.analyzer = {"conference_motion_hd_3tl_alt_moderate_limits", - 0.0, 0.0, kTestDurationSec}; - conf_motion_hd.config->queue_length_packets = 50; - conf_motion_hd.config->loss_percent = 3; - conf_motion_hd.config->queue_delay_ms = 100; - conf_motion_hd.config->link_capacity_kbps = 2000; - fixture->RunWithAnalyzer(conf_motion_hd); -} - -// TODO(bugs.webrtc.org/10639) requires simulcast/SVC support in PC framework -TEST(PCFullStackTest, - ConferenceMotionHd3TLModerateLimitsAltTLPatternAndBaseHeavyTLAllocation) { - auto fixture = CreateVideoQualityTestFixture(); - test::ScopedFieldTrials field_trial( - AppendFieldTrials("WebRTC-UseShortVP8TL3Pattern/Enabled/" - "WebRTC-UseBaseHeavyVP8TL3RateAllocation/Enabled/")); - ParamsWithLogging conf_motion_hd; - conf_motion_hd.call.send_side_bwe = true; - conf_motion_hd.video[0] = { - true, 1280, - 720, 50, - 30000, 3000000, - 3000000, false, - "VP8", 3, - -1, 0, - false, false, - false, ClipNameToClipPath("ConferenceMotion_1280_720_50")}; - conf_motion_hd.analyzer = { - "conference_motion_hd_3tl_alt_heavy_moderate_limits", 0.0, 0.0, - kTestDurationSec}; - conf_motion_hd.config->queue_length_packets = 50; - conf_motion_hd.config->loss_percent = 3; - conf_motion_hd.config->queue_delay_ms = 100; - conf_motion_hd.config->link_capacity_kbps = 2000; - fixture->RunWithAnalyzer(conf_motion_hd); -} */ #if defined(RTC_ENABLE_VP9)