tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 4c90afb902806bea3ccc0a8de475fce4dd1f96eb
parent 7414445518e807d90432a4d189fa2632a341a9a8
Author: Michael Froman <mfroman@mozilla.com>
Date:   Wed,  8 Oct 2025 17:25:42 -0500

Bug 1993083 - Vendor libwebrtc from 4a61405b8c

Upstream commit: https://webrtc.googlesource.com/src/+/4a61405b8c39618ccff165080e2abeee146a0e2c
    Propagate field trials in video unittests

    Bug: webrtc:419453427
    Change-Id: I85586c277ceee01b1f5e11f6797fc2ce5de90b0a
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/398321
    Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
    Reviewed-by: Åsa Persson <asapersson@webrtc.org>
    Commit-Queue: Åsa Persson <asapersson@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45042}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/moz-patch-stack/s0027.patch | 2+-
Mthird_party/libwebrtc/video/BUILD.gn | 4+---
Mthird_party/libwebrtc/video/buffered_frame_decryptor_unittest.cc | 5+++--
Mthird_party/libwebrtc/video/config/BUILD.gn | 3++-
Mthird_party/libwebrtc/video/config/encoder_stream_factory_unittest.cc | 38+++++++++++++++++++-------------------
Mthird_party/libwebrtc/video/config/simulcast_unittest.cc | 40++++++++++++++++++++--------------------
Mthird_party/libwebrtc/video/encoder_bitrate_adjuster_unittest.cc | 9+++++----
Mthird_party/libwebrtc/video/frame_cadence_adapter_unittest.cc | 51++++++++++++++++++++++++++-------------------------
Mthird_party/libwebrtc/video/frame_decode_timing_unittest.cc | 8+++++---
Mthird_party/libwebrtc/video/quality_convergence_controller_unittest.cc | 23++++++++++++-----------
Mthird_party/libwebrtc/video/quality_convergence_monitor_unittest.cc | 17++++++++++-------
Mthird_party/libwebrtc/video/receive_statistics_proxy_unittest.cc | 2--
Mthird_party/libwebrtc/video/rtp_video_stream_receiver2_unittest.cc | 10++++------
Mthird_party/libwebrtc/video/send_statistics_proxy_unittest.cc | 32+++++++++++++-------------------
Mthird_party/libwebrtc/video/video_send_stream_impl_unittest.cc | 34++++++++++++++++------------------
Mthird_party/libwebrtc/video/video_stream_buffer_controller_unittest.cc | 7++++---
Mthird_party/libwebrtc/video/video_stream_encoder_unittest.cc | 124+++++++++++++++++++++++++++++++++----------------------------------------------
18 files changed, 194 insertions(+), 219 deletions(-)

diff --git a/third_party/libwebrtc/README.mozilla.last-vendor b/third_party/libwebrtc/README.mozilla.last-vendor @@ -1,4 +1,4 @@ # ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc -libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-08T22:24:29.952112+00:00. +libwebrtc updated from /home/mfroman/mozilla/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-08T22:25:33.116999+00:00. # base of lastest vendoring -94f623704c +4a61405b8c diff --git a/third_party/libwebrtc/moz-patch-stack/s0027.patch b/third_party/libwebrtc/moz-patch-stack/s0027.patch @@ -1253,7 +1253,7 @@ index 739678aa84..9ac30f1b79 100644 rtc_library("call_config_utils") { testonly = true diff --git a/video/BUILD.gn b/video/BUILD.gn -index f484d75dd9..1fc2c195bd 100644 +index 044a89e8ac..e81e0b0671 100644 --- a/video/BUILD.gn +++ b/video/BUILD.gn @@ -17,7 +17,7 @@ rtc_library("video_stream_encoder_interface") { diff --git a/third_party/libwebrtc/video/BUILD.gn b/third_party/libwebrtc/video/BUILD.gn @@ -1027,19 +1027,17 @@ if (rtc_include_tests) { "../rtc_base/synchronization:mutex", "../system_wrappers", "../system_wrappers:metrics", + "../test:create_test_field_trials", "../test:direct_transport", "../test:encoder_settings", - "../test:explicit_key_value_config", "../test:fake_encoded_frame", "../test:fake_video_codecs", - "../test:field_trial", "../test:frame_generator_capturer", "../test:frame_utils", "../test:mock_transport", "../test:null_transport", "../test:rtp_test_utils", "../test:run_loop", - "../test:scoped_key_value_config", "../test:test_common", "../test:test_support", "../test:video_test_common", diff --git a/third_party/libwebrtc/video/buffered_frame_decryptor_unittest.cc b/third_party/libwebrtc/video/buffered_frame_decryptor_unittest.cc @@ -17,6 +17,7 @@ #include <vector> #include "api/crypto/frame_decryptor_interface.h" +#include "api/field_trials.h" #include "api/make_ref_counted.h" #include "api/rtp_packet_infos.h" #include "api/scoped_refptr.h" @@ -28,9 +29,9 @@ #include "api/video/video_timing.h" #include "modules/rtp_rtcp/source/frame_object.h" #include "modules/rtp_rtcp/source/rtp_video_header.h" +#include "test/create_test_field_trials.h" #include "test/gmock.h" #include "test/gtest.h" -#include "test/scoped_key_value_config.h" using ::testing::Return; @@ -107,7 +108,7 @@ class BufferedFrameDecryptorTest : public ::testing::Test, static const size_t kMaxStashedFrames; - test::ScopedKeyValueConfig field_trials_; + FieldTrials field_trials_ = CreateTestFieldTrials(); std::vector<uint8_t> fake_packet_data_; scoped_refptr<MockFrameDecryptor> mock_frame_decryptor_; std::unique_ptr<BufferedFrameDecryptor> buffered_frame_decryptor_; diff --git a/third_party/libwebrtc/video/config/BUILD.gn b/third_party/libwebrtc/video/config/BUILD.gn @@ -74,6 +74,7 @@ if (rtc_include_tests) { deps = [ ":encoder_config", ":streams_config", + "../../api:field_trials", "../../api:field_trials_view", "../../api:make_ref_counted", "../../api/units:data_rate", @@ -85,7 +86,7 @@ if (rtc_include_tests) { "../../media:media_constants", "../../rtc_base:safe_conversions", "../../rtc_base/experiments:min_video_bitrate_experiment", - "../../test:explicit_key_value_config", + "../../test:create_test_field_trials", "../../test:test_support", "//third_party/abseil-cpp/absl/strings:string_view", ] diff --git a/third_party/libwebrtc/video/config/encoder_stream_factory_unittest.cc b/third_party/libwebrtc/video/config/encoder_stream_factory_unittest.cc @@ -17,6 +17,7 @@ #include <vector> #include "absl/strings/string_view.h" +#include "api/field_trials.h" #include "api/field_trials_view.h" #include "api/make_ref_counted.h" #include "api/video/resolution.h" @@ -27,14 +28,13 @@ #include "call/adaptation/video_source_restrictions.h" #include "rtc_base/experiments/min_video_bitrate_experiment.h" #include "rtc_base/numerics/safe_conversions.h" -#include "test/explicit_key_value_config.h" +#include "test/create_test_field_trials.h" #include "test/gmock.h" #include "test/gtest.h" #include "video/config/video_encoder_config.h" namespace webrtc { namespace { -using test::ExplicitKeyValueConfig; using ::testing::Combine; using ::testing::ElementsAre; using ::testing::IsEmpty; @@ -92,7 +92,7 @@ std::vector<VideoStream> CreateEncoderStreams( } // namespace TEST(EncoderStreamFactory, SinglecastScaleResolutionDownTo) { - ExplicitKeyValueConfig field_trials(""); + FieldTrials field_trials = CreateTestFieldTrials(); VideoEncoderConfig encoder_config; encoder_config.number_of_streams = 1; encoder_config.simulcast_layers.resize(1); @@ -108,7 +108,7 @@ TEST(EncoderStreamFactory, SinglecastScaleResolutionDownTo) { } TEST(EncoderStreamFactory, SinglecastScaleResolutionDownToWithAdaptation) { - ExplicitKeyValueConfig field_trials(""); + FieldTrials field_trials = CreateTestFieldTrials(); VideoSourceRestrictions restrictions( /* max_pixels_per_frame= */ (320 * 320), /* target_pixels_per_frame= */ std::nullopt, @@ -129,7 +129,7 @@ TEST(EncoderStreamFactory, SinglecastScaleResolutionDownToWithAdaptation) { } TEST(EncoderStreamFactory, SimulcastScaleResolutionDownToUnrestricted) { - ExplicitKeyValueConfig field_trials(""); + FieldTrials field_trials = CreateTestFieldTrials(); VideoEncoderConfig encoder_config; encoder_config.number_of_streams = 3; encoder_config.simulcast_layers.resize(3); @@ -149,7 +149,7 @@ TEST(EncoderStreamFactory, SimulcastScaleResolutionDownToUnrestricted) { } TEST(EncoderStreamFactory, SimulcastScaleResolutionDownToWith360pRestriction) { - ExplicitKeyValueConfig field_trials(""); + FieldTrials field_trials = CreateTestFieldTrials(); VideoSourceRestrictions restrictions( /* max_pixels_per_frame= */ (640 * 360), /* target_pixels_per_frame= */ std::nullopt, @@ -174,7 +174,7 @@ TEST(EncoderStreamFactory, SimulcastScaleResolutionDownToWith360pRestriction) { } TEST(EncoderStreamFactory, SimulcastScaleResolutionDownToWith90pRestriction) { - ExplicitKeyValueConfig field_trials(""); + FieldTrials field_trials = CreateTestFieldTrials(); VideoSourceRestrictions restrictions( /* max_pixels_per_frame= */ (160 * 90), /* target_pixels_per_frame= */ std::nullopt, @@ -200,7 +200,7 @@ TEST(EncoderStreamFactory, SimulcastScaleResolutionDownToWith90pRestriction) { TEST(EncoderStreamFactory, ReverseSimulcastScaleResolutionDownToWithRestriction) { - ExplicitKeyValueConfig field_trials(""); + FieldTrials field_trials = CreateTestFieldTrials(); VideoSourceRestrictions restrictions( /* max_pixels_per_frame= */ (640 * 360), /* target_pixels_per_frame= */ std::nullopt, @@ -235,8 +235,8 @@ TEST(EncoderStreamFactory, BitratePriority) { encoder_config.simulcast_layers.resize(encoder_config.number_of_streams); encoder_config.bitrate_priority = kBitratePriority; auto streams = CreateEncoderStreams( - /*field_trials=*/ExplicitKeyValueConfig(""), - {.width = 640, .height = 360}, encoder_config); + /*field_trials=*/CreateTestFieldTrials(), {.width = 640, .height = 360}, + encoder_config); ASSERT_THAT(streams, SizeIs(2)); EXPECT_EQ(streams[0].bitrate_priority, kBitratePriority); EXPECT_FALSE(streams[1].bitrate_priority); @@ -248,7 +248,7 @@ TEST(EncoderStreamFactory, SetsMinBitrateToDefaultValue) { VideoEncoderConfig encoder_config; encoder_config.number_of_streams = 2; encoder_config.simulcast_layers.resize(encoder_config.number_of_streams); - auto streams = factory->CreateEncoderStreams(ExplicitKeyValueConfig(""), 1920, + auto streams = factory->CreateEncoderStreams(CreateTestFieldTrials(), 1920, 1080, encoder_config); ASSERT_THAT(streams, Not(IsEmpty())); EXPECT_EQ(streams[0].min_bitrate_bps, kDefaultMinVideoBitrateBps); @@ -261,7 +261,7 @@ TEST(EncoderStreamFactory, SetsMinBitrateToExperimentalValue) { encoder_config.number_of_streams = 2; encoder_config.simulcast_layers.resize(encoder_config.number_of_streams); auto streams = factory->CreateEncoderStreams( - ExplicitKeyValueConfig("WebRTC-Video-MinVideoBitrate/Enabled,br:1kbps/"), + CreateTestFieldTrials("WebRTC-Video-MinVideoBitrate/Enabled,br:1kbps/"), 1920, 1080, encoder_config); ASSERT_THAT(streams, Not(IsEmpty())); EXPECT_NE(streams[0].min_bitrate_bps, kDefaultMinVideoBitrateBps); @@ -291,7 +291,7 @@ std::vector<Resolution> CreateStreamResolutions( encoder_config.legacy_conference_mode = true; } return GetStreamResolutions( - CreateEncoderStreams(ExplicitKeyValueConfig(test_params.field_trials), + CreateEncoderStreams(CreateTestFieldTrials(test_params.field_trials), test_params.resolution, encoder_config)); } @@ -392,7 +392,7 @@ TEST_P(EncoderStreamFactoryOverrideStreamSettingsTest, OverrideStreamSettings) { encoder_config.simulcast_layers = test_params.requested_streams; encoder_config.content_type = test_params.content_type; auto streams = - CreateEncoderStreams(ExplicitKeyValueConfig(test_params.field_trials), + CreateEncoderStreams(CreateTestFieldTrials(test_params.field_trials), test_params.input_resolution, encoder_config); ASSERT_EQ(streams.size(), test_params.expected_streams.size()); for (size_t i = 0; i < streams.size(); ++i) { @@ -496,7 +496,7 @@ TEST(EncoderStreamFactory, VP9TemporalLayerCountTransferToStreamSettings) { encoder_config.number_of_streams = 1; encoder_config.simulcast_layers.resize(1); encoder_config.simulcast_layers[0].num_temporal_layers = 3; - auto streams = CreateEncoderStreams(ExplicitKeyValueConfig(""), {1280, 720}, + auto streams = CreateEncoderStreams(CreateTestFieldTrials(), {1280, 720}, encoder_config); ASSERT_THAT(streams, SizeIs(1)); EXPECT_EQ(streams[0].num_temporal_layers, 3); @@ -508,7 +508,7 @@ TEST(EncoderStreamFactory, AV1TemporalLayerCountTransferToStreamSettings) { encoder_config.number_of_streams = 1; encoder_config.simulcast_layers.resize(1); encoder_config.simulcast_layers[0].num_temporal_layers = 3; - auto streams = CreateEncoderStreams(ExplicitKeyValueConfig(""), {1280, 720}, + auto streams = CreateEncoderStreams(CreateTestFieldTrials(), {1280, 720}, encoder_config); ASSERT_THAT(streams, SizeIs(1)); EXPECT_EQ(streams[0].num_temporal_layers, 3); @@ -520,7 +520,7 @@ TEST(EncoderStreamFactory, H264TemporalLayerCountTransferToStreamSettings) { encoder_config.number_of_streams = 1; encoder_config.simulcast_layers.resize(1); encoder_config.simulcast_layers[0].num_temporal_layers = 3; - auto streams = CreateEncoderStreams(ExplicitKeyValueConfig(""), {1280, 720}, + auto streams = CreateEncoderStreams(CreateTestFieldTrials(), {1280, 720}, encoder_config); ASSERT_THAT(streams, SizeIs(1)); EXPECT_EQ(streams[0].num_temporal_layers, std::nullopt); @@ -533,7 +533,7 @@ TEST(EncoderStreamFactory, H265TemporalLayerCountTransferToStreamSettings) { encoder_config.number_of_streams = 1; encoder_config.simulcast_layers.resize(1); encoder_config.simulcast_layers[0].num_temporal_layers = 3; - auto streams = CreateEncoderStreams(ExplicitKeyValueConfig(""), {1280, 720}, + auto streams = CreateEncoderStreams(CreateTestFieldTrials(), {1280, 720}, encoder_config); ASSERT_THAT(streams, SizeIs(1)); EXPECT_EQ(streams[0].num_temporal_layers, 3); @@ -550,7 +550,7 @@ TEST(EncoderStreamFactory, VP9SetsMaxBitrateToConfiguredEncodingValue) { encoder_config.number_of_streams = 1; encoder_config.simulcast_layers.resize(3); encoder_config.simulcast_layers[0].max_bitrate_bps = 5000000; - auto streams = CreateEncoderStreams(ExplicitKeyValueConfig(""), {1280, 720}, + auto streams = CreateEncoderStreams(CreateTestFieldTrials(), {1280, 720}, encoder_config); ASSERT_THAT(streams, SizeIs(1)); EXPECT_EQ(streams[0].max_bitrate_bps, 5000000); diff --git a/third_party/libwebrtc/video/config/simulcast_unittest.cc b/third_party/libwebrtc/video/config/simulcast_unittest.cc @@ -15,19 +15,19 @@ #include <tuple> #include <vector> +#include "api/field_trials.h" #include "api/units/data_rate.h" #include "api/video/resolution.h" #include "api/video/video_codec_type.h" #include "api/video_codecs/video_codec.h" #include "media/base/media_constants.h" -#include "test/explicit_key_value_config.h" +#include "test/create_test_field_trials.h" #include "test/gmock.h" #include "test/gtest.h" #include "video/config/video_encoder_config.h" namespace webrtc { namespace { -using test::ExplicitKeyValueConfig; using ::testing::Combine; using ::testing::SizeIs; using ::testing::TestParamInfo; @@ -122,7 +122,7 @@ TEST(SimulcastTest, BandwidthAboveTotalMaxBitrateGivenToHighestStream) { } TEST(SimulcastTest, GetConfig) { - const ExplicitKeyValueConfig trials(""); + const FieldTrials trials = CreateTestFieldTrials(); const std::vector<VideoStream> kExpected = GetSimulcastBitrates720p(); @@ -151,7 +151,7 @@ TEST(SimulcastTest, GetConfig) { } TEST(SimulcastTest, GetConfigH265) { - const ExplicitKeyValueConfig trials(""); + const FieldTrials trials = CreateTestFieldTrials(); const std::vector<VideoStream> kExpected = GetH265SimulcastBitrates720p(); const size_t kMaxLayers = 3; @@ -180,8 +180,8 @@ TEST(SimulcastTest, GetConfigH265) { } TEST(SimulcastTest, GetConfigWithBaseHeavyVP8TL3RateAllocation) { - ExplicitKeyValueConfig trials( - "WebRTC-UseBaseHeavyVP8TL3RateAllocation/Enabled/"); + FieldTrials trials = + CreateTestFieldTrials("WebRTC-UseBaseHeavyVP8TL3RateAllocation/Enabled/"); const std::vector<VideoStream> kExpected = GetSimulcastBitrates720p(); @@ -204,7 +204,7 @@ TEST(SimulcastTest, GetConfigWithBaseHeavyVP8TL3RateAllocation) { } TEST(SimulcastTest, GetConfigWithLimitedMaxLayers) { - ExplicitKeyValueConfig trials(""); + FieldTrials trials = CreateTestFieldTrials(); const size_t kMaxLayers = 2; std::vector<VideoStream> streams = @@ -219,7 +219,7 @@ TEST(SimulcastTest, GetConfigWithLimitedMaxLayers) { } TEST(SimulcastTest, GetConfigForScreenshareSimulcast) { - ExplicitKeyValueConfig trials(""); + FieldTrials trials = CreateTestFieldTrials(); std::vector<VideoStream> streams = GetSimulcastConfig( std::vector<Resolution>{{.width = 1400, .height = 800}, {.width = 1400, .height = 800}, @@ -241,7 +241,7 @@ TEST(SimulcastTest, GetConfigForScreenshareSimulcast) { } TEST(SimulcastTest, GetConfigForScreenshareSimulcastWithLimitedMaxLayers) { - ExplicitKeyValueConfig trials(""); + FieldTrials trials = CreateTestFieldTrials(); std::vector<VideoStream> streams = GetSimulcastConfig( std::vector<Resolution>{{.width = 1400, .height = 800}}, kScreenshare, true, trials, kVideoCodecVP8); @@ -249,7 +249,7 @@ TEST(SimulcastTest, GetConfigForScreenshareSimulcastWithLimitedMaxLayers) { } TEST(SimulcastTest, AveragesBitratesForNonStandardResolution) { - ExplicitKeyValueConfig trials(""); + FieldTrials trials = CreateTestFieldTrials(); std::vector<VideoStream> streams = GetSimulcastConfig(std::vector<Resolution>{{.width = 900, .height = 800}}, !kScreenshare, true, trials, kVideoCodecVP8); @@ -263,7 +263,7 @@ TEST(SimulcastTest, AveragesBitratesForNonStandardResolution) { } TEST(SimulcastTest, BitratesForCloseToStandardResolution) { - ExplicitKeyValueConfig trials(""); + FieldTrials trials = CreateTestFieldTrials(); const size_t kMaxLayers = 3; // Resolution very close to 720p in number of pixels @@ -289,8 +289,8 @@ TEST(SimulcastTest, BitratesForCloseToStandardResolution) { } TEST(SimulcastTest, MaxLayersWithRoundUpDisabled) { - ExplicitKeyValueConfig trials( - "WebRTC-SimulcastLayerLimitRoundUp/max_ratio:0.0/"); + FieldTrials trials = + CreateTestFieldTrials("WebRTC-SimulcastLayerLimitRoundUp/max_ratio:0.0/"); const size_t kMinLayers = 1; const int kMaxLayers = 3; @@ -313,7 +313,7 @@ TEST(SimulcastTest, MaxLayersWithRoundUpDisabled) { TEST(SimulcastTest, MaxLayersWithDefaultRoundUpRatio) { // Default: "WebRTC-SimulcastLayerLimitRoundUp/max_ratio:0.1/" - ExplicitKeyValueConfig trials(""); + FieldTrials trials = CreateTestFieldTrials(); const size_t kMinLayers = 1; const int kMaxLayers = 3; @@ -340,7 +340,7 @@ TEST(SimulcastTest, MaxLayersWithDefaultRoundUpRatio) { } TEST(SimulcastTest, MaxLayersWithRoundUpRatio) { - ExplicitKeyValueConfig trials( + FieldTrials trials = CreateTestFieldTrials( "WebRTC-SimulcastLayerLimitRoundUp/max_ratio:0.13/"); const size_t kMinLayers = 1; @@ -360,7 +360,7 @@ TEST(SimulcastTest, MaxLayersWithRoundUpRatio) { TEST(SimulcastTest, BitratesInterpolatedForResBelow180p) { // TODO(webrtc:12415): Remove when feature launches. - ExplicitKeyValueConfig trials( + FieldTrials trials = CreateTestFieldTrials( "WebRTC-LowresSimulcastBitrateInterpolation/Enabled/"); const size_t kMaxLayers = 3; @@ -378,7 +378,7 @@ TEST(SimulcastTest, BitratesInterpolatedForResBelow180p) { TEST(SimulcastTest, BitratesConsistentForVerySmallRes) { // TODO(webrtc:12415): Remove when feature launches. - ExplicitKeyValueConfig trials( + FieldTrials trials = CreateTestFieldTrials( "WebRTC-LowresSimulcastBitrateInterpolation/Enabled/"); std::vector<VideoStream> streams = @@ -395,7 +395,7 @@ TEST(SimulcastTest, BitratesConsistentForVerySmallRes) { TEST(SimulcastTest, BitratesNotInterpolatedForResBelow180pWhenDisabledTrialSet) { - ExplicitKeyValueConfig trials( + FieldTrials trials = CreateTestFieldTrials( "WebRTC-LowresSimulcastBitrateInterpolation/Disabled/"); const size_t kMaxLayers = 3; @@ -424,7 +424,7 @@ using BitrateLimitsTest = TEST_P(BitrateLimitsTest, VerifyBitrateLimits) { const auto codec_type = std::get<VideoCodecType>(GetParam()); const auto test_params = std::get<BitrateLimitsTestParams>(GetParam()); - ExplicitKeyValueConfig trials(""); + FieldTrials trials = CreateTestFieldTrials(); std::vector<VideoStream> streams = GetSimulcastConfig( CreateResolutions(test_params.width, test_params.height, /*num_streams=*/3), @@ -499,7 +499,7 @@ INSTANTIATE_TEST_SUITE_P( // Test that for H.265, the simulcast layers are created with the correct // default temporal layers, before that is overrided by application settings. TEST(SimulcastTest, GetConfigForH265) { - const ExplicitKeyValueConfig trials(""); + FieldTrials trials = CreateTestFieldTrials(); const size_t kMaxLayers = 3; std::vector<VideoStream> streams = diff --git a/third_party/libwebrtc/video/encoder_bitrate_adjuster_unittest.cc b/third_party/libwebrtc/video/encoder_bitrate_adjuster_unittest.cc @@ -17,6 +17,7 @@ #include <string> #include <vector> +#include "api/field_trials.h" #include "api/units/data_rate.h" #include "api/units/data_size.h" #include "api/units/time_delta.h" @@ -29,8 +30,8 @@ #include "api/video_codecs/video_encoder.h" #include "rtc_base/checks.h" #include "rtc_base/time_utils.h" +#include "test/create_test_field_trials.h" #include "test/gtest.h" -#include "test/scoped_key_value_config.h" #include "test/time_controller/simulated_time_controller.h" namespace webrtc { @@ -58,7 +59,7 @@ class EncoderBitrateAdjusterTest : public Test, target_framerate_fps_(kDefaultFrameRateFps), tl_pattern_idx_{}, sequence_idx_{}, - scoped_field_trial_(GetParam()) {} + field_trials_(CreateTestFieldTrials(GetParam())) {} protected: void SetUpAdjusterWithCodec(size_t num_spatial_layers, @@ -76,7 +77,7 @@ class EncoderBitrateAdjusterTest : public Test, } adjuster_ = std::make_unique<EncoderBitrateAdjuster>( - codec_, scoped_field_trial_, *time_controller_.GetClock()); + codec_, field_trials_, *time_controller_.GetClock()); adjuster_->OnEncoderInfo(encoder_info_); current_adjusted_allocation_ = adjuster_->AdjustRateAllocation(VideoEncoder::RateControlParameters( @@ -263,7 +264,7 @@ class EncoderBitrateAdjusterTest : public Test, double target_framerate_fps_; int tl_pattern_idx_[kMaxSpatialLayers]; int sequence_idx_[kMaxSpatialLayers][kMaxTemporalStreams]; - test::ScopedKeyValueConfig scoped_field_trial_; + FieldTrials field_trials_; const std::vector<int> kTlPatterns[kMaxTemporalStreams] = { {0}, diff --git a/third_party/libwebrtc/video/frame_cadence_adapter_unittest.cc b/third_party/libwebrtc/video/frame_cadence_adapter_unittest.cc @@ -18,6 +18,7 @@ #include <utility> #include "absl/functional/any_invocable.h" +#include "api/field_trials.h" #include "api/field_trials_view.h" #include "api/make_ref_counted.h" #include "api/metronome/test/fake_metronome.h" @@ -38,9 +39,9 @@ #include "system_wrappers/include/clock.h" #include "system_wrappers/include/metrics.h" #include "system_wrappers/include/ntp_time.h" +#include "test/create_test_field_trials.h" #include "test/gmock.h" #include "test/gtest.h" -#include "test/scoped_key_value_config.h" #include "test/time_controller/simulated_time_controller.h" namespace webrtc { @@ -89,7 +90,7 @@ class MockCallback : public FrameCadenceAdapterInterface::Callback { }; TEST(FrameCadenceAdapterTest, CountsOutstandingFramesToProcess) { - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); GlobalSimulatedTimeController time_controller(Timestamp::Millis(1)); MockCallback callback; auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); @@ -106,7 +107,7 @@ TEST(FrameCadenceAdapterTest, CountsOutstandingFramesToProcess) { } TEST(FrameCadenceAdapterTest, FrameRateFollowsRateStatisticsByDefault) { - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); GlobalSimulatedTimeController time_controller(Timestamp::Zero()); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); MockCallback callback; @@ -132,7 +133,7 @@ TEST(FrameCadenceAdapterTest, FrameRateFollowsRateStatisticsByDefault) { TEST(FrameCadenceAdapterTest, FrameRateFollowsMaxFpsWhenZeroHertzActivated) { GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); MockCallback callback; adapter->Initialize(&callback); @@ -150,7 +151,7 @@ TEST(FrameCadenceAdapterTest, FrameRateFollowsMaxFpsWhenZeroHertzActivated) { TEST(FrameCadenceAdapterTest, ZeroHertzAdapterSupportsMaxFpsChange) { GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); MockCallback callback; adapter->Initialize(&callback); @@ -174,7 +175,7 @@ TEST(FrameCadenceAdapterTest, ZeroHertzAdapterSupportsMaxFpsChange) { TEST(FrameCadenceAdapterTest, FrameRateFollowsRateStatisticsAfterZeroHertzDeactivated) { GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); MockCallback callback; adapter->Initialize(&callback); @@ -205,7 +206,7 @@ TEST(FrameCadenceAdapterTest, TEST(FrameCadenceAdapterTest, ForwardsFramesDelayed) { MockCallback callback; GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); adapter->Initialize(&callback); adapter->SetZeroHertzModeEnabled( @@ -234,7 +235,7 @@ TEST(FrameCadenceAdapterTest, ForwardsFramesDelayed) { TEST(FrameCadenceAdapterTest, DelayedProcessingUnderSlightContention) { GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); MockCallback callback; adapter->Initialize(&callback); @@ -256,7 +257,7 @@ TEST(FrameCadenceAdapterTest, DelayedProcessingUnderSlightContention) { TEST(FrameCadenceAdapterTest, DelayedProcessingUnderHeavyContention) { GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); MockCallback callback; adapter->Initialize(&callback); @@ -285,7 +286,7 @@ TEST(FrameCadenceAdapterTest, RepeatsFramesDelayed) { // not 0. MockCallback callback; GlobalSimulatedTimeController time_controller(Timestamp::Millis(47892223)); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); adapter->Initialize(&callback); adapter->SetZeroHertzModeEnabled( @@ -339,7 +340,7 @@ TEST(FrameCadenceAdapterTest, // time. MockCallback callback; GlobalSimulatedTimeController time_controller(Timestamp::Millis(4711)); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); adapter->Initialize(&callback); adapter->SetZeroHertzModeEnabled( @@ -372,7 +373,7 @@ TEST(FrameCadenceAdapterTest, StopsRepeatingFramesDelayed) { // At 3.5s, we receive this frame. MockCallback callback; GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); adapter->Initialize(&callback); adapter->SetZeroHertzModeEnabled( @@ -400,7 +401,7 @@ TEST(FrameCadenceAdapterTest, StopsRepeatingFramesDelayed) { TEST(FrameCadenceAdapterTest, RequestsRefreshFrameOnKeyFrameRequestWhenNew) { MockCallback callback; GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); adapter->Initialize(&callback); adapter->SetZeroHertzModeEnabled( @@ -418,7 +419,7 @@ TEST(FrameCadenceAdapterTest, RequestsRefreshFrameOnKeyFrameRequestWhenNew) { TEST(FrameCadenceAdapterTest, IgnoresKeyFrameRequestShortlyAfterFrame) { MockCallback callback; GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); adapter->Initialize(&callback); adapter->SetZeroHertzModeEnabled( @@ -433,7 +434,7 @@ TEST(FrameCadenceAdapterTest, IgnoresKeyFrameRequestShortlyAfterFrame) { TEST(FrameCadenceAdapterTest, RequestsRefreshFramesUntilArrival) { MockCallback callback; GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); adapter->Initialize(&callback); adapter->SetZeroHertzModeEnabled( @@ -459,7 +460,7 @@ TEST(FrameCadenceAdapterTest, RequestsRefreshFramesUntilArrival) { TEST(FrameCadenceAdapterTest, RequestsRefreshAfterFrameDrop) { MockCallback callback; GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); adapter->Initialize(&callback); adapter->SetZeroHertzModeEnabled( @@ -500,7 +501,7 @@ TEST(FrameCadenceAdapterTest, RequestsRefreshAfterFrameDrop) { TEST(FrameCadenceAdapterTest, OmitsRefreshAfterFrameDropWithTimelyFrameEntry) { MockCallback callback; GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); adapter->Initialize(&callback); adapter->SetZeroHertzModeEnabled( @@ -539,7 +540,7 @@ TEST(FrameCadenceAdapterTest, AcceptsUnconfiguredLayerFeedback) { // This is a regression test for bugs.webrtc.org/14417. MockCallback callback; GlobalSimulatedTimeController time_controller(Timestamp::Zero()); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = CreateAdapter(no_field_trials, time_controller.GetClock()); adapter->Initialize(&callback); adapter->SetZeroHertzModeEnabled( @@ -558,7 +559,7 @@ TEST(FrameCadenceAdapterTest, IgnoresDropInducedCallbacksPostDestruction) { GlobalSimulatedTimeController time_controller(Timestamp::Zero()); auto queue = time_controller.GetTaskQueueFactory()->CreateTaskQueue( "queue", TaskQueueFactory::Priority::NORMAL); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = FrameCadenceAdapterInterface::Create( time_controller.GetClock(), queue.get(), /*metronome=*/nullptr, /*worker_queue=*/nullptr, no_field_trials); @@ -587,7 +588,7 @@ TEST(FrameCadenceAdapterTest, EncodeFramesAreAlignedWithMetronomeTick) { auto worker_queue = time_controller.GetTaskQueueFactory()->CreateTaskQueue( "work_queue", TaskQueueFactory::Priority::NORMAL); test::FakeMetronome metronome(kTickPeriod); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = FrameCadenceAdapterInterface::Create( time_controller.GetClock(), queue.get(), &metronome, worker_queue.get(), no_field_trials); @@ -661,7 +662,7 @@ TEST(FrameCadenceAdapterTest, ShutdownUnderMetronome) { auto queue = time_controller.GetTaskQueueFactory()->CreateTaskQueue( "queue", TaskQueueFactory::Priority::NORMAL); test::FakeMetronome metronome(kTickPeriod); - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); auto adapter = FrameCadenceAdapterInterface::Create( time_controller.GetClock(), queue.get(), &metronome, TaskQueueBase::Current(), no_field_trials); @@ -704,7 +705,7 @@ class FrameCadenceAdapterSimulcastLayersParamTest int NumSpatialLayers() const { return GetParam(); } protected: - test::ScopedKeyValueConfig no_field_trials_; + FieldTrials no_field_trials_ = CreateTestFieldTrials(); MockCallback callback_; GlobalSimulatedTimeController time_controller_{Timestamp::Zero()}; const std::unique_ptr<FrameCadenceAdapterInterface> adapter_{ @@ -833,7 +834,7 @@ class ZeroHertzLayerQualityConvergenceTest : public ::testing::Test { } protected: - test::ScopedKeyValueConfig no_field_trials_; + FieldTrials no_field_trials_ = CreateTestFieldTrials(); MockCallback callback_; GlobalSimulatedTimeController time_controller_{Timestamp::Zero()}; std::unique_ptr<FrameCadenceAdapterInterface> adapter_{ @@ -1029,7 +1030,7 @@ TEST(FrameCadenceAdapterRealTimeTest, TimestampsDoNotDrift) { int64_t original_ntp_time_ms; int64_t original_timestamp_us; Event event; - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); queue->PostTask([&] { adapter = CreateAdapter(no_field_trials, clock); adapter->Initialize(&callback); @@ -1084,7 +1085,7 @@ TEST(FrameCadenceAdapterRealTimeTest, ScheduledRepeatAllowsForSlowEncode) { int frame_counter = 0; Event event; std::optional<Timestamp> start_time; - test::ScopedKeyValueConfig no_field_trials; + FieldTrials no_field_trials = CreateTestFieldTrials(); queue->PostTask([&] { adapter = CreateAdapter(no_field_trials, clock); adapter->Initialize(&callback); diff --git a/third_party/libwebrtc/video/frame_decode_timing_unittest.cc b/third_party/libwebrtc/video/frame_decode_timing_unittest.cc @@ -14,6 +14,7 @@ #include <optional> +#include "api/field_trials.h" #include "api/field_trials_view.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" @@ -21,9 +22,9 @@ #include "rtc_base/checks.h" #include "rtc_base/containers/flat_map.h" #include "system_wrappers/include/clock.h" +#include "test/create_test_field_trials.h" #include "test/gmock.h" #include "test/gtest.h" -#include "test/scoped_key_value_config.h" #include "video/video_receive_stream2.h" namespace webrtc { @@ -70,12 +71,13 @@ class FakeVCMTiming : public VCMTiming { class FrameDecodeTimingTest : public ::testing::Test { public: FrameDecodeTimingTest() - : clock_(Timestamp::Millis(1000)), + : field_trials_(CreateTestFieldTrials()), + clock_(Timestamp::Millis(1000)), timing_(&clock_, field_trials_), frame_decode_scheduler_(&clock_, &timing_) {} protected: - test::ScopedKeyValueConfig field_trials_; + FieldTrials field_trials_; SimulatedClock clock_; FakeVCMTiming timing_; FrameDecodeTiming frame_decode_scheduler_; diff --git a/third_party/libwebrtc/video/quality_convergence_controller_unittest.cc b/third_party/libwebrtc/video/quality_convergence_controller_unittest.cc @@ -12,16 +12,17 @@ #include <optional> +#include "api/field_trials.h" #include "api/video/video_codec_type.h" +#include "test/create_test_field_trials.h" #include "test/gtest.h" -#include "test/scoped_key_value_config.h" namespace webrtc { namespace { constexpr int kVp8DefaultStaticQpThreshold = 15; TEST(QualityConvergenceController, Singlecast) { - test::ScopedKeyValueConfig field_trials; + FieldTrials field_trials = CreateTestFieldTrials(); QualityConvergenceController controller; controller.Initialize(1, /*encoder_min_qp=*/std::nullopt, kVideoCodecVP8, field_trials); @@ -35,7 +36,7 @@ TEST(QualityConvergenceController, Singlecast) { } TEST(QualityConvergenceController, Simulcast) { - test::ScopedKeyValueConfig field_trials; + FieldTrials field_trials = CreateTestFieldTrials(); QualityConvergenceController controller; controller.Initialize(2, /*encoder_min_qp=*/std::nullopt, kVideoCodecVP8, field_trials); @@ -65,7 +66,7 @@ TEST(QualityConvergenceController, Simulcast) { } TEST(QualityConvergenceController, InvalidLayerIndex) { - test::ScopedKeyValueConfig field_trials; + FieldTrials field_trials = CreateTestFieldTrials(); QualityConvergenceController controller; controller.Initialize(2, /*encoder_min_qp=*/std::nullopt, kVideoCodecVP8, field_trials); @@ -79,7 +80,7 @@ TEST(QualityConvergenceController, InvalidLayerIndex) { } TEST(QualityConvergenceController, UseMaxOfEncoderMinAndDefaultQpThresholds) { - test::ScopedKeyValueConfig field_trials; + FieldTrials field_trials = CreateTestFieldTrials(); QualityConvergenceController controller; controller.Initialize(1, kVp8DefaultStaticQpThreshold + 1, kVideoCodecVP8, field_trials); @@ -93,8 +94,8 @@ TEST(QualityConvergenceController, UseMaxOfEncoderMinAndDefaultQpThresholds) { } TEST(QualityConvergenceController, OverrideVp8StaticThreshold) { - test::ScopedKeyValueConfig field_trials( - "WebRTC-QCM-Static-VP8/static_qp_threshold:22/"); + FieldTrials field_trials = + CreateTestFieldTrials("WebRTC-QCM-Static-VP8/static_qp_threshold:22/"); QualityConvergenceController controller; controller.Initialize(1, /*encoder_min_qp=*/std::nullopt, kVideoCodecVP8, field_trials); @@ -106,8 +107,8 @@ TEST(QualityConvergenceController, OverrideVp8StaticThreshold) { } TEST(QualityConvergenceMonitorSetup, OverrideVp9StaticThreshold) { - test::ScopedKeyValueConfig field_trials( - "WebRTC-QCM-Static-VP9/static_qp_threshold:44/"); + FieldTrials field_trials = + CreateTestFieldTrials("WebRTC-QCM-Static-VP9/static_qp_threshold:44/"); QualityConvergenceController controller; controller.Initialize(1, /*encoder_min_qp=*/std::nullopt, kVideoCodecVP9, field_trials); @@ -119,8 +120,8 @@ TEST(QualityConvergenceMonitorSetup, OverrideVp9StaticThreshold) { } TEST(QualityConvergenceMonitorSetup, OverrideAv1StaticThreshold) { - test::ScopedKeyValueConfig field_trials( - "WebRTC-QCM-Static-AV1/static_qp_threshold:46/"); + FieldTrials field_trials = + CreateTestFieldTrials("WebRTC-QCM-Static-AV1/static_qp_threshold:46/"); QualityConvergenceController controller; controller.Initialize(1, /*encoder_min_qp=*/std::nullopt, kVideoCodecAV1, field_trials); diff --git a/third_party/libwebrtc/video/quality_convergence_monitor_unittest.cc b/third_party/libwebrtc/video/quality_convergence_monitor_unittest.cc @@ -13,9 +13,10 @@ #include <cstddef> #include <memory> +#include "api/field_trials.h" #include "api/video/video_codec_type.h" +#include "test/create_test_field_trials.h" #include "test/gtest.h" -#include "test/scoped_key_value_config.h" namespace webrtc { namespace { @@ -201,7 +202,7 @@ TEST(QualityConvergenceMonitorAlgorithm, // Test default values and that they can be overridden with field trials. TEST(QualityConvergenceMonitorSetup, DefaultParameters) { - test::ScopedKeyValueConfig field_trials; + FieldTrials field_trials = CreateTestFieldTrials(); auto monitor = QualityConvergenceMonitor::Create( kStaticQpThreshold, kVideoCodecVP8, field_trials); ASSERT_TRUE(monitor); @@ -237,7 +238,7 @@ TEST(QualityConvergenceMonitorSetup, DefaultParameters) { } TEST(QualityConvergenceMonitorSetup, OverrideVp8Parameters) { - test::ScopedKeyValueConfig field_trials( + FieldTrials field_trials = CreateTestFieldTrials( "WebRTC-QCM-Dynamic-VP8/" "enabled:1,alpha:0.08,recent_length:6,past_length:4/"); @@ -253,7 +254,7 @@ TEST(QualityConvergenceMonitorSetup, OverrideVp8Parameters) { } TEST(QualityConvergenceMonitorSetup, OverrideVp9Parameters) { - test::ScopedKeyValueConfig field_trials( + FieldTrials field_trials = CreateTestFieldTrials( "WebRTC-QCM-Dynamic-VP9/" "enabled:1,alpha:0.08,recent_length:6,past_length:4/"); @@ -269,7 +270,7 @@ TEST(QualityConvergenceMonitorSetup, OverrideVp9Parameters) { } TEST(QualityConvergenceMonitorSetup, OverrideAv1Parameters) { - test::ScopedKeyValueConfig field_trials( + FieldTrials field_trials = CreateTestFieldTrials( "WebRTC-QCM-Dynamic-AV1/" "enabled:1,alpha:0.10,recent_length:8,past_length:8/"); @@ -285,7 +286,8 @@ TEST(QualityConvergenceMonitorSetup, OverrideAv1Parameters) { } TEST(QualityConvergenceMonitorSetup, DisableVp9Dynamic) { - test::ScopedKeyValueConfig field_trials("WebRTC-QCM-Dynamic-VP9/enabled:0/"); + FieldTrials field_trials = + CreateTestFieldTrials("WebRTC-QCM-Dynamic-VP9/enabled:0/"); auto monitor = QualityConvergenceMonitor::Create( kStaticQpThreshold, kVideoCodecVP9, field_trials); @@ -295,7 +297,8 @@ TEST(QualityConvergenceMonitorSetup, DisableVp9Dynamic) { } TEST(QualityConvergenceMonitorSetup, DisableAv1Dynamic) { - test::ScopedKeyValueConfig field_trials("WebRTC-QCM-Dynamic-AV1/enabled:0/"); + FieldTrials field_trials = + CreateTestFieldTrials("WebRTC-QCM-Dynamic-AV1/enabled:0/"); auto monitor = QualityConvergenceMonitor::Create( kStaticQpThreshold, kVideoCodecAV1, field_trials); diff --git a/third_party/libwebrtc/video/receive_statistics_proxy_unittest.cc b/third_party/libwebrtc/video/receive_statistics_proxy_unittest.cc @@ -40,7 +40,6 @@ #include "system_wrappers/include/metrics.h" #include "test/gmock.h" #include "test/gtest.h" -#include "test/scoped_key_value_config.h" #include "test/time_controller/simulated_time_controller.h" #include "video/video_quality_observer2.h" #include "video/video_receive_stream2.h" @@ -121,7 +120,6 @@ class ReceiveStatisticsProxyTest : public ::testing::Test { return VideoFrameMetaData(frame, Now()); } - test::ScopedKeyValueConfig field_trials_; GlobalSimulatedTimeController time_controller_; std::unique_ptr<ReceiveStatisticsProxy> statistics_proxy_; }; diff --git a/third_party/libwebrtc/video/rtp_video_stream_receiver2_unittest.cc b/third_party/libwebrtc/video/rtp_video_stream_receiver2_unittest.cc @@ -63,7 +63,7 @@ #include "rtc_base/byte_buffer.h" #include "rtc_base/copy_on_write_buffer.h" #include "system_wrappers/include/ntp_time.h" -#include "test/explicit_key_value_config.h" +#include "test/create_test_field_trials.h" #include "test/gmock.h" #include "test/gtest.h" #include "test/mock_transport.h" @@ -74,7 +74,6 @@ namespace webrtc { namespace { -using test::ExplicitKeyValueConfig; using ::testing::_; using ::testing::DoubleNear; using ::testing::ElementsAre; @@ -187,10 +186,9 @@ class RtpVideoStreamReceiver2Test : public ::testing::Test, RtpVideoStreamReceiver2Test() : RtpVideoStreamReceiver2Test("") {} explicit RtpVideoStreamReceiver2Test(std::string field_trials) : time_controller_(Timestamp::Millis(100)), - env_(CreateEnvironment( - std::make_unique<ExplicitKeyValueConfig>(field_trials), - time_controller_.GetClock(), - time_controller_.GetTaskQueueFactory())), + env_(CreateEnvironment(CreateTestFieldTrialsPtr(field_trials), + time_controller_.GetClock(), + time_controller_.GetTaskQueueFactory())), task_queue_(time_controller_.GetTaskQueueFactory()->CreateTaskQueue( "RtpVideoStreamReceiver2Test", TaskQueueFactory::Priority::NORMAL)), diff --git a/third_party/libwebrtc/video/send_statistics_proxy_unittest.cc b/third_party/libwebrtc/video/send_statistics_proxy_unittest.cc @@ -20,6 +20,7 @@ #include <vector> #include "absl/algorithm/container.h" +#include "api/field_trials.h" #include "api/units/data_rate.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" @@ -41,9 +42,9 @@ #include "rtc_base/fake_clock.h" #include "system_wrappers/include/clock.h" #include "system_wrappers/include/metrics.h" +#include "test/create_test_field_trials.h" #include "test/gmock.h" #include "test/gtest.h" -#include "test/scoped_key_value_config.h" #include "video/config/video_encoder_config.h" #include "video/video_stream_encoder_observer.h" @@ -84,7 +85,7 @@ class SendStatisticsProxyTest : public ::testing::Test { public: SendStatisticsProxyTest() : SendStatisticsProxyTest("") {} explicit SendStatisticsProxyTest(const std::string& field_trials) - : override_field_trials_(field_trials), + : field_trials_(CreateTestFieldTrials(field_trials)), fake_clock_(Timestamp::Seconds(1234)), config_(GetTestConfig()) {} ~SendStatisticsProxyTest() override {} @@ -92,10 +93,9 @@ class SendStatisticsProxyTest : public ::testing::Test { protected: void SetUp() override { metrics::Reset(); - statistics_proxy_.reset( - new SendStatisticsProxy(&fake_clock_, GetTestConfig(), - VideoEncoderConfig::ContentType::kRealtimeVideo, - override_field_trials_)); + statistics_proxy_.reset(new SendStatisticsProxy( + &fake_clock_, GetTestConfig(), + VideoEncoderConfig::ContentType::kRealtimeVideo, field_trials_)); expected_ = VideoSendStream::Stats(); for (const auto& ssrc : config_.rtp.ssrcs) { expected_.substreams[ssrc].type = @@ -196,7 +196,7 @@ class SendStatisticsProxyTest : public ::testing::Test { } } - test::ScopedKeyValueConfig override_field_trials_; + FieldTrials field_trials_; SimulatedClock fake_clock_; std::unique_ptr<SendStatisticsProxy> statistics_proxy_; VideoSendStream::Config config_; @@ -2006,12 +2006,11 @@ TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp8) { } TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp8OneSsrc) { - test::ScopedKeyValueConfig field_trials; VideoSendStream::Config config(nullptr); config.rtp.ssrcs.push_back(kFirstSsrc); statistics_proxy_.reset(new SendStatisticsProxy( &fake_clock_, config, VideoEncoderConfig::ContentType::kRealtimeVideo, - field_trials)); + field_trials_)); EncodedImage encoded_image; CodecSpecificInfo codec_info; @@ -2052,12 +2051,11 @@ TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp9Svc) { } TEST_F(SendStatisticsProxyTest, VerifyQpHistogramStats_Vp9OneSpatialLayer) { - test::ScopedKeyValueConfig field_trials; VideoSendStream::Config config(nullptr); config.rtp.ssrcs.push_back(kFirstSsrc); statistics_proxy_.reset(new SendStatisticsProxy( &fake_clock_, config, VideoEncoderConfig::ContentType::kRealtimeVideo, - field_trials)); + field_trials_)); EncodedImage encoded_image; CodecSpecificInfo codec_info; @@ -2589,10 +2587,9 @@ TEST_F(SendStatisticsProxyTest, GetStatsReportsIsRtx) { } TEST_F(SendStatisticsProxyTest, GetStatsReportsIsFlexFec) { - test::ScopedKeyValueConfig field_trials; statistics_proxy_.reset(new SendStatisticsProxy( &fake_clock_, GetTestConfigWithFlexFec(), - VideoEncoderConfig::ContentType::kRealtimeVideo, field_trials)); + VideoEncoderConfig::ContentType::kRealtimeVideo, field_trials_)); StreamDataCountersCallback* proxy = static_cast<StreamDataCountersCallback*>(statistics_proxy_.get()); @@ -2609,10 +2606,9 @@ TEST_F(SendStatisticsProxyTest, GetStatsReportsIsFlexFec) { } TEST_F(SendStatisticsProxyTest, SendBitratesAreReportedWithFlexFecEnabled) { - test::ScopedKeyValueConfig field_trials; statistics_proxy_.reset(new SendStatisticsProxy( &fake_clock_, GetTestConfigWithFlexFec(), - VideoEncoderConfig::ContentType::kRealtimeVideo, field_trials)); + VideoEncoderConfig::ContentType::kRealtimeVideo, field_trials_)); StreamDataCountersCallback* proxy = static_cast<StreamDataCountersCallback*>(statistics_proxy_.get()); @@ -2818,12 +2814,11 @@ TEST_F(SendStatisticsProxyTest, RtxBitrateIsZeroWhenEnabledAndNoRtxDataIsSent) { } TEST_F(SendStatisticsProxyTest, RtxBitrateNotReportedWhenNotEnabled) { - test::ScopedKeyValueConfig field_trials; VideoSendStream::Config config(nullptr); config.rtp.ssrcs.push_back(kFirstSsrc); // RTX not configured. statistics_proxy_.reset(new SendStatisticsProxy( &fake_clock_, config, VideoEncoderConfig::ContentType::kRealtimeVideo, - field_trials)); + field_trials_)); StreamDataCountersCallback* proxy = static_cast<StreamDataCountersCallback*>(statistics_proxy_.get()); @@ -2871,12 +2866,11 @@ TEST_F(SendStatisticsProxyTest, FecBitrateIsZeroWhenEnabledAndNoFecDataIsSent) { } TEST_F(SendStatisticsProxyTest, FecBitrateNotReportedWhenNotEnabled) { - test::ScopedKeyValueConfig field_trials; VideoSendStream::Config config(nullptr); config.rtp.ssrcs.push_back(kFirstSsrc); // FEC not configured. statistics_proxy_.reset(new SendStatisticsProxy( &fake_clock_, config, VideoEncoderConfig::ContentType::kRealtimeVideo, - field_trials)); + field_trials_)); StreamDataCountersCallback* proxy = static_cast<StreamDataCountersCallback*>(statistics_proxy_.get()); diff --git a/third_party/libwebrtc/video/video_send_stream_impl_unittest.cc b/third_party/libwebrtc/video/video_send_stream_impl_unittest.cc @@ -20,9 +20,11 @@ #include <utility> #include <vector> +#include "absl/strings/string_view.h" #include "api/array_view.h" #include "api/call/bitrate_allocation.h" #include "api/environment/environment_factory.h" +#include "api/field_trials.h" #include "api/rtc_event_log/rtc_event_log.h" #include "api/rtp_parameters.h" #include "api/task_queue/task_queue_base.h" @@ -45,11 +47,10 @@ #include "modules/rtp_rtcp/source/rtp_sequence_number_map.h" #include "modules/video_coding/include/video_codec_interface.h" #include "rtc_base/experiments/alr_experiment.h" -#include "test/field_trial.h" +#include "test/create_test_field_trials.h" #include "test/gmock.h" #include "test/gtest.h" #include "test/mock_transport.h" -#include "test/scoped_key_value_config.h" #include "test/time_controller/simulated_time_controller.h" #include "video/config/video_encoder_config.h" #include "video/send_delay_stats.h" @@ -83,14 +84,11 @@ using ::testing::Sequence; using ::testing::SizeIs; constexpr int64_t kDefaultInitialBitrateBps = 333000; -const double kDefaultBitratePriority = 0.5; +constexpr double kDefaultBitratePriority = 0.5; + +constexpr float kAlrProbingExperimentPaceMultiplier = 1.0f; +constexpr absl::string_view kAlrProbingExperimentValue = "1.0,2875,80,40,-60,3"; -const float kAlrProbingExperimentPaceMultiplier = 1.0f; -std::string GetAlrProbingExperimentString() { - return std::string( - AlrExperimentSettings::kScreenshareProbingBweExperimentName) + - "/1.0,2875,80,40,-60,3/"; -} class MockRtpVideoSender : public RtpVideoSenderInterface { public: MOCK_METHOD(void, SetSending, (bool sending), (override)); @@ -148,6 +146,7 @@ class VideoSendStreamImplTest : public ::testing::Test { protected: VideoSendStreamImplTest() : time_controller_(Timestamp::Seconds(1000)), + field_trials_(CreateTestFieldTrials()), config_(&transport_), send_delay_stats_(time_controller_.GetClock()), encoder_queue_(time_controller_.GetTaskQueueFactory()->CreateTaskQueue( @@ -218,7 +217,7 @@ class VideoSendStreamImplTest : public ::testing::Test { protected: GlobalSimulatedTimeController time_controller_; - test::ScopedKeyValueConfig field_trials_; + FieldTrials field_trials_; NiceMock<MockTransport> transport_; NiceMock<MockRtpTransportControllerSend> transport_controller_; NiceMock<MockBitrateAllocator> bitrate_allocator_; @@ -510,8 +509,7 @@ TEST_F(VideoSendStreamImplTest, UpdatesObserverOnConfigurationChangeWithAlr) { TEST_F(VideoSendStreamImplTest, UpdatesObserverOnConfigurationChangeWithSimulcastVideoHysteresis) { - test::ScopedKeyValueConfig hysteresis_experiment( - field_trials_, "WebRTC-VideoRateControl/video_hysteresis:1.25/"); + field_trials_.Set("WebRTC-VideoRateControl", "video_hysteresis:1.25"); config_.rtp.ssrcs.emplace_back(1); config_.rtp.ssrcs.emplace_back(2); @@ -567,7 +565,8 @@ TEST_F(VideoSendStreamImplTest, } TEST_F(VideoSendStreamImplTest, SetsScreensharePacingFactorWithFeedback) { - test::ScopedFieldTrials alr_experiment(GetAlrProbingExperimentString()); + field_trials_.Set(AlrExperimentSettings::kScreenshareProbingBweExperimentName, + kAlrProbingExperimentValue); constexpr int kId = 1; config_.rtp.extensions.emplace_back(RtpExtension::kTransportSequenceNumberUri, @@ -582,7 +581,8 @@ TEST_F(VideoSendStreamImplTest, SetsScreensharePacingFactorWithFeedback) { } TEST_F(VideoSendStreamImplTest, DoesNotSetPacingFactorWithoutFeedback) { - test::ScopedFieldTrials alr_experiment(GetAlrProbingExperimentString()); + field_trials_.Set(AlrExperimentSettings::kScreenshareProbingBweExperimentName, + kAlrProbingExperimentValue); auto vss_impl = CreateVideoSendStreamImpl( TestVideoEncoderConfig(VideoEncoderConfig::ContentType::kScreen)); EXPECT_CALL(transport_controller_, SetPacingFactor(_)).Times(0); @@ -851,8 +851,7 @@ TEST_F(VideoSendStreamImplTest, PriorityBitrateConfigInactiveByDefault) { } TEST_F(VideoSendStreamImplTest, PriorityBitrateConfigAffectsAV1) { - test::ScopedFieldTrials override_priority_bitrate( - "WebRTC-AV1-OverridePriorityBitrate/bitrate:20000/"); + field_trials_.Set("WebRTC-AV1-OverridePriorityBitrate", "bitrate:20000"); config_.rtp.payload_name = "AV1"; auto vss_impl = CreateVideoSendStreamImpl(TestVideoEncoderConfig()); EXPECT_CALL( @@ -879,8 +878,7 @@ TEST_F(VideoSendStreamImplTest, int min_transmit_bitrate_bps = 30000; - test::ScopedFieldTrials override_priority_bitrate( - "WebRTC-AV1-OverridePriorityBitrate/bitrate:20000/"); + field_trials_.Set("WebRTC-AV1-OverridePriorityBitrate", "bitrate:20000"); config_.rtp.payload_name = "AV1"; auto vss_impl = CreateVideoSendStreamImpl(TestVideoEncoderConfig()); EXPECT_CALL( diff --git a/third_party/libwebrtc/video/video_stream_buffer_controller_unittest.cc b/third_party/libwebrtc/video/video_stream_buffer_controller_unittest.cc @@ -22,6 +22,7 @@ #include <variant> #include <vector> +#include "api/field_trials.h" #include "api/metronome/test/fake_metronome.h" #include "api/units/frequency.h" #include "api/units/time_delta.h" @@ -32,10 +33,10 @@ #include "modules/video_coding/timing/timing.h" #include "rtc_base/checks.h" #include "system_wrappers/include/clock.h" +#include "test/create_test_field_trials.h" #include "test/fake_encoded_frame.h" #include "test/gmock.h" #include "test/gtest.h" -#include "test/scoped_key_value_config.h" #include "test/time_controller/simulated_time_controller.h" #include "video/decode_synchronizer.h" #include "video/task_queue_frame_decode_scheduler.h" @@ -139,7 +140,7 @@ class VideoStreamBufferControllerFixture public: VideoStreamBufferControllerFixture() : sync_decoding_(std::get<0>(GetParam())), - field_trials_(std::get<1>(GetParam())), + field_trials_(CreateTestFieldTrials(std::get<1>(GetParam()))), time_controller_(kClockStart), clock_(time_controller_.GetClock()), fake_metronome_(TimeDelta::Millis(16)), @@ -228,7 +229,7 @@ class VideoStreamBufferControllerFixture protected: const bool sync_decoding_; - test::ScopedKeyValueConfig field_trials_; + FieldTrials field_trials_; GlobalSimulatedTimeController time_controller_; Clock* const clock_; test::FakeMetronome fake_metronome_; diff --git a/third_party/libwebrtc/video/video_stream_encoder_unittest.cc b/third_party/libwebrtc/video/video_stream_encoder_unittest.cc @@ -28,6 +28,7 @@ #include "api/array_view.h" #include "api/environment/environment.h" #include "api/environment/environment_factory.h" +#include "api/field_trials.h" #include "api/field_trials_view.h" #include "api/location.h" #include "api/make_ref_counted.h" @@ -102,13 +103,13 @@ #include "rtc_base/time_utils.h" #include "system_wrappers/include/clock.h" #include "system_wrappers/include/metrics.h" +#include "test/create_test_field_trials.h" #include "test/encoder_settings.h" #include "test/fake_encoder.h" #include "test/frame_forwarder.h" #include "test/gmock.h" #include "test/gtest.h" #include "test/mappable_native_buffer.h" -#include "test/scoped_key_value_config.h" #include "test/time_controller/simulated_time_controller.h" #include "test/video_encoder_nullable_proxy_factory.h" #include "test/video_encoder_proxy_factory.h" @@ -753,15 +754,12 @@ class SimpleVideoStreamEncoderFactory { std::unique_ptr<AdaptedVideoStreamEncoder> CreateWithEncoderQueue( std::unique_ptr<FrameCadenceAdapterInterface> zero_hertz_adapter, - std::unique_ptr<TaskQueueBase, TaskQueueDeleter> encoder_queue, - const FieldTrialsView* field_trials = nullptr) { - Environment env = CreateEnvironment(&field_trials_, field_trials, - time_controller_.GetClock()); + std::unique_ptr<TaskQueueBase, TaskQueueDeleter> encoder_queue) { auto result = std::make_unique<AdaptedVideoStreamEncoder>( - env, + env_, /*number_of_cores=*/1, /*stats_proxy=*/stats_proxy_.get(), encoder_settings_, - std::make_unique<CpuOveruseDetectorProxy>(env, + std::make_unique<CpuOveruseDetectorProxy>(env_, /*stats_proxy=*/nullptr), std::move(zero_hertz_adapter), std::move(encoder_queue), VideoStreamEncoder::BitrateAllocationCallbackType:: @@ -789,6 +787,8 @@ class SimpleVideoStreamEncoderFactory { return &time_controller_; } + const Environment& env() { return env_; } + private: class NullEncoderSink : public VideoStreamEncoderInterface::EncoderSink { public: @@ -809,7 +809,7 @@ class SimpleVideoStreamEncoderFactory { } }; - test::ScopedKeyValueConfig field_trials_; + FieldTrials field_trials_ = CreateTestFieldTrials(); GlobalSimulatedTimeController time_controller_{Timestamp::Zero()}; Environment env_ = CreateEnvironment(&field_trials_, @@ -1694,7 +1694,7 @@ class VideoStreamEncoderTest : public ::testing::Test { int64_t CurrentTimeMs() { return clock()->CurrentTime().ms(); } protected: - test::ScopedKeyValueConfig field_trials_; + FieldTrials field_trials_ = CreateTestFieldTrials(); GlobalSimulatedTimeController time_controller_{Timestamp::Micros(1234)}; const Environment env_ = CreateEnvironment(&field_trials_, @@ -4589,10 +4589,8 @@ class BalancedDegradationTest : public VideoStreamEncoderTest { }; TEST_F(BalancedDegradationTest, AdaptDownTwiceIfMinFpsDiffLtThreshold) { - test::ScopedKeyValueConfig field_trials( - field_trials_, - "WebRTC-Video-BalancedDegradationSettings/" - "pixels:57600|129600|230400,fps:7|10|24,fps_diff:1|1|1/"); + field_trials_.Set("WebRTC-Video-BalancedDegradationSettings", + "pixels:57600|129600|230400,fps:7|10|24,fps_diff:1|1|1"); SetupTest(); // Force input frame rate. @@ -4614,10 +4612,8 @@ TEST_F(BalancedDegradationTest, AdaptDownTwiceIfMinFpsDiffLtThreshold) { } TEST_F(BalancedDegradationTest, AdaptDownOnceIfFpsDiffGeThreshold) { - test::ScopedKeyValueConfig field_trials( - field_trials_, - "WebRTC-Video-BalancedDegradationSettings/" - "pixels:57600|129600|230400,fps:7|10|24,fps_diff:1|1|1/"); + field_trials_.Set("WebRTC-Video-BalancedDegradationSettings", + "pixels:57600|129600|230400,fps:7|10|24,fps_diff:1|1|1"); SetupTest(); // Force input frame rate. @@ -4638,10 +4634,8 @@ TEST_F(BalancedDegradationTest, AdaptDownOnceIfFpsDiffGeThreshold) { } TEST_F(BalancedDegradationTest, AdaptDownUsesCodecSpecificFps) { - test::ScopedKeyValueConfig field_trials( - field_trials_, - "WebRTC-Video-BalancedDegradationSettings/" - "pixels:57600|129600|230400,fps:7|10|24,vp8_fps:8|11|22/"); + field_trials_.Set("WebRTC-Video-BalancedDegradationSettings", + "pixels:57600|129600|230400,fps:7|10|24,vp8_fps:8|11|22"); SetupTest(); EXPECT_EQ(kVideoCodecVP8, video_encoder_config_.codec_type); @@ -4657,10 +4651,8 @@ TEST_F(BalancedDegradationTest, AdaptDownUsesCodecSpecificFps) { } TEST_F(BalancedDegradationTest, NoAdaptUpIfBwEstimateIsLessThanMinBitrate) { - test::ScopedKeyValueConfig field_trials( - field_trials_, - "WebRTC-Video-BalancedDegradationSettings/" - "pixels:57600|129600|230400,fps:7|10|14,kbps:0|0|425/"); + field_trials_.Set("WebRTC-Video-BalancedDegradationSettings", + "pixels:57600|129600|230400,fps:7|10|14,kbps:0|0|425"); SetupTest(); const DataRate kMinBitrate = DataRate::KilobitsPerSec(425); @@ -4707,10 +4699,8 @@ TEST_F(BalancedDegradationTest, NoAdaptUpIfBwEstimateIsLessThanMinBitrate) { TEST_F(BalancedDegradationTest, InitialFrameDropAdaptsFpsAndResolutionInOneStep) { - test::ScopedKeyValueConfig field_trials( - field_trials_, - "WebRTC-Video-BalancedDegradationSettings/" - "pixels:57600|129600|230400,fps:7|24|24/"); + field_trials_.Set("WebRTC-Video-BalancedDegradationSettings", + "pixels:57600|129600|230400,fps:7|24|24"); SetupTest(); OnBitrateUpdated(kLowTargetBitrate); @@ -4739,10 +4729,8 @@ TEST_F(BalancedDegradationTest, TEST_F(BalancedDegradationTest, NoAdaptUpInResolutionIfBwEstimateIsLessThanMinBitrate) { - test::ScopedKeyValueConfig field_trials( - field_trials_, - "WebRTC-Video-BalancedDegradationSettings/" - "pixels:57600|129600|230400,fps:7|10|14,kbps_res:0|0|435/"); + field_trials_.Set("WebRTC-Video-BalancedDegradationSettings", + "pixels:57600|129600|230400,fps:7|10|14,kbps_res:0|0|435"); SetupTest(); const DataRate kResolutionMinBitrate = DataRate::KilobitsPerSec(435); @@ -4794,10 +4782,9 @@ TEST_F(BalancedDegradationTest, TEST_F(BalancedDegradationTest, NoAdaptUpInFpsAndResolutionIfBwEstimateIsLessThanMinBitrate) { - test::ScopedKeyValueConfig field_trials( - field_trials_, - "WebRTC-Video-BalancedDegradationSettings/" - "pixels:57600|129600|230400,fps:7|10|14,kbps:0|0|425,kbps_res:0|0|435/"); + field_trials_.Set( + "WebRTC-Video-BalancedDegradationSettings", + "pixels:57600|129600|230400,fps:7|10|14,kbps:0|0|425,kbps_res:0|0|435"); SetupTest(); const DataRate kMinBitrate = DataRate::KilobitsPerSec(425); @@ -5693,10 +5680,9 @@ TEST_F(VideoStreamEncoderTest, TemporalLayersDisabledIfNotSupported) { } TEST_F(VideoStreamEncoderTest, VerifyBitrateAllocationForTwoStreams) { - test::ScopedKeyValueConfig field_trials( - field_trials_, - "WebRTC-Video-QualityScalerSettings/" - "initial_bitrate_interval_ms:1000,initial_bitrate_factor:0.2/"); + field_trials_.Set( + "WebRTC-Video-QualityScalerSettings", + "initial_bitrate_interval_ms:1000,initial_bitrate_factor:0.2"); // Reset encoder for field trials to take effect. ConfigureEncoder(video_encoder_config_.Copy()); @@ -6000,10 +5986,9 @@ TEST_F(VideoStreamEncoderTest, InitialFrameDropOffWhenEncoderDisabledScaling) { } TEST_F(VideoStreamEncoderTest, InitialFrameDropActivatesWhenBweDrops) { - test::ScopedKeyValueConfig field_trials( - field_trials_, - "WebRTC-Video-QualityScalerSettings/" - "initial_bitrate_interval_ms:1000,initial_bitrate_factor:0.2/"); + field_trials_.Set( + "WebRTC-Video-QualityScalerSettings", + "initial_bitrate_interval_ms:1000,initial_bitrate_factor:0.2"); // Reset encoder for field trials to take effect. ConfigureEncoder(video_encoder_config_.Copy()); const int kNotTooLowBitrateForFrameSizeBps = kTargetBitrate.bps() * 0.2; @@ -6041,10 +6026,9 @@ TEST_F(VideoStreamEncoderTest, InitialFrameDropActivatesWhenBweDrops) { TEST_F(VideoStreamEncoderTest, InitialFrameDropNotReactivatedWhenBweDropsWhenScalingDisabled) { - test::ScopedKeyValueConfig field_trials( - field_trials_, - "WebRTC-Video-QualityScalerSettings/" - "initial_bitrate_interval_ms:1000,initial_bitrate_factor:0.2/"); + field_trials_.Set( + "WebRTC-Video-QualityScalerSettings", + "initial_bitrate_interval_ms:1000,initial_bitrate_factor:0.2"); fake_encoder_.SetQualityScaling(false); ConfigureEncoder(video_encoder_config_.Copy()); const int kNotTooLowBitrateForFrameSizeBps = kTargetBitrate.bps() * 0.2; @@ -6370,8 +6354,7 @@ TEST_F(VideoStreamEncoderTest, } TEST_F(VideoStreamEncoderTest, DefaultMaxAndMinBitratesNotUsedIfDisabled) { - test::ScopedKeyValueConfig field_trials( - field_trials_, "WebRTC-DefaultBitrateLimitsKillSwitch/Enabled/"); + field_trials_.Set("WebRTC-DefaultBitrateLimitsKillSwitch", "Enabled"); VideoEncoderConfig video_encoder_config; test::FillEncoderConfiguration(PayloadStringToCodecType("VP9"), 1, &video_encoder_config); @@ -6733,8 +6716,7 @@ TEST_P(VideoStreamEncoderInitialFrameDropperTest, TEST_F(VideoStreamEncoderTest, QualityScalerAdaptationsRemovedWhenQualityScalingDisabled) { - test::ScopedKeyValueConfig field_trials( - field_trials_, "WebRTC-Video-QualityScaling/Disabled/"); + field_trials_.Set("WebRTC-Video-QualityScaling", "Disabled"); AdaptingFrameForwarder source(&time_controller_); source.set_adaptation_enabled(true); video_stream_encoder_->SetSource(&source, @@ -8347,8 +8329,8 @@ TEST_F(VideoStreamEncoderTest, NoPreferenceDefaultFallbackToVP8Disabled) { constexpr int kDontCare = 100; constexpr int kNumFrames = 8; - test::ScopedKeyValueConfig field_trials( - field_trials_, "WebRTC-SwitchEncoderFollowCodecPreferenceOrder/Enabled/"); + field_trials_.Set("WebRTC-SwitchEncoderFollowCodecPreferenceOrder", + "Enabled"); NiceMock<MockVideoEncoder> video_encoder; StrictMock<MockEncoderSwitchRequestCallback> switch_callback; @@ -8408,8 +8390,8 @@ TEST_F(VideoStreamEncoderTest, constexpr int kDontCare = 100; constexpr int kNumFrames = 8; - test::ScopedKeyValueConfig field_trials( - field_trials_, "WebRTC-SwitchEncoderFollowCodecPreferenceOrder/Enabled/"); + field_trials_.Set("WebRTC-SwitchEncoderFollowCodecPreferenceOrder", + "Enabled"); NiceMock<MockVideoEncoder> video_encoder; StrictMock<MockEncoderSwitchRequestCallback> switch_callback; @@ -8847,8 +8829,7 @@ TEST_F(VideoStreamEncoderTest, QpAbsent_QpParsed) { } TEST_F(VideoStreamEncoderTest, QpAbsentParsingDisabled_QpAbsent) { - test::ScopedKeyValueConfig field_trials( - field_trials_, "WebRTC-QpParsingKillSwitch/Enabled/"); + field_trials_.Set("WebRTC-QpParsingKillSwitch", "Enabled"); ResetEncoder("VP8", 1, 1, 1, false); @@ -9127,8 +9108,7 @@ TEST_F(VideoStreamEncoderTest, NormalComplexityWithMoreThanTwoCores) { TEST_F(VideoStreamEncoderTest, NormalComplexityWhenLowTierOptimizationsAreDisabled) { - test::ScopedKeyValueConfig field_trials( - field_trials_, "WebRTC-VP9-LowTierOptimizations/Disabled/"); + field_trials_.Set("WebRTC-VP9-LowTierOptimizations", "Disabled"); ResetEncoder("VP9", /*num_streams=*/1, /*num_temporal_layers=*/1, /*num_spatial_layers=*/1, @@ -9408,20 +9388,19 @@ class VideoStreamEncoderWithRealEncoderTest void SetUp() override { VideoStreamEncoderTest::SetUp(); - Environment env = CreateEnvironment(&field_trials_); std::unique_ptr<VideoEncoder> encoder; switch (codec_type_) { case kVideoCodecVP8: - encoder = CreateVp8Encoder(env); + encoder = CreateVp8Encoder(env_); break; case kVideoCodecVP9: - encoder = CreateVp9Encoder(env); + encoder = CreateVp9Encoder(env_); break; case kVideoCodecAV1: - encoder = CreateLibaomAv1Encoder(env); + encoder = CreateLibaomAv1Encoder(env_); break; case kVideoCodecH264: - encoder = CreateH264Encoder(env); + encoder = CreateH264Encoder(env_); break; case kVideoCodecH265: // TODO(bugs.webrtc.org/13485): Use a fake encoder @@ -10158,19 +10137,18 @@ TEST(VideoStreamEncoderFrameCadenceTest, TEST(VideoStreamEncoderFrameCadenceTest, RequestsRefreshFrameForEarlyZeroHertzKeyFrameRequest) { SimpleVideoStreamEncoderFactory factory; - auto encoder_queue = - factory.GetTimeController()->GetTaskQueueFactory()->CreateTaskQueue( - "EncoderQueue", TaskQueueFactory::Priority::NORMAL); + auto encoder_queue = factory.env().task_queue_factory().CreateTaskQueue( + "EncoderQueue", TaskQueueFactory::Priority::NORMAL); - test::ScopedKeyValueConfig field_trials; auto adapter = FrameCadenceAdapterInterface::Create( - factory.GetTimeController()->GetClock(), encoder_queue.get(), - /*metronome=*/nullptr, /*worker_queue=*/nullptr, field_trials); + &factory.env().clock(), encoder_queue.get(), + /*metronome=*/nullptr, /*worker_queue=*/nullptr, + factory.env().field_trials()); FrameCadenceAdapterInterface* adapter_ptr = adapter.get(); MockVideoSourceInterface mock_source; auto video_stream_encoder = factory.CreateWithEncoderQueue( - std::move(adapter), std::move(encoder_queue), &field_trials); + std::move(adapter), std::move(encoder_queue)); video_stream_encoder->SetSource(&mock_source, DegradationPreference::MAINTAIN_FRAMERATE);