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}
diff --git a/video/BUILD.gn b/video/BUILD.gn
index f484d75..044a89e 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -1027,19 +1027,17 @@
"../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/video/buffered_frame_decryptor_unittest.cc b/video/buffered_frame_decryptor_unittest.cc
index f037d62..bbe975f 100644
--- a/video/buffered_frame_decryptor_unittest.cc
+++ b/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 @@
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/video/config/BUILD.gn b/video/config/BUILD.gn
index d48bb49..4305e28 100644
--- a/video/config/BUILD.gn
+++ b/video/config/BUILD.gn
@@ -74,6 +74,7 @@
deps = [
":encoder_config",
":streams_config",
+ "../../api:field_trials",
"../../api:field_trials_view",
"../../api:make_ref_counted",
"../../api/units:data_rate",
@@ -85,7 +86,7 @@
"../../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/video/config/encoder_stream_factory_unittest.cc b/video/config/encoder_stream_factory_unittest.cc
index 5c93527..9b44930 100644
--- a/video/config/encoder_stream_factory_unittest.cc
+++ b/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 @@
} // 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, 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, 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, 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, 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,
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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/video/config/simulcast_unittest.cc b/video/config/simulcast_unittest.cc
index 628e4ea..6d8a15f 100644
--- a/video/config/simulcast_unittest.cc
+++ b/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, GetConfig) {
- const ExplicitKeyValueConfig trials("");
+ const FieldTrials trials = CreateTestFieldTrials();
const std::vector<VideoStream> kExpected = GetSimulcastBitrates720p();
@@ -151,7 +151,7 @@
}
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, GetConfigWithBaseHeavyVP8TL3RateAllocation) {
- ExplicitKeyValueConfig trials(
- "WebRTC-UseBaseHeavyVP8TL3RateAllocation/Enabled/");
+ FieldTrials trials =
+ CreateTestFieldTrials("WebRTC-UseBaseHeavyVP8TL3RateAllocation/Enabled/");
const std::vector<VideoStream> kExpected = GetSimulcastBitrates720p();
@@ -204,7 +204,7 @@
}
TEST(SimulcastTest, GetConfigWithLimitedMaxLayers) {
- ExplicitKeyValueConfig trials("");
+ FieldTrials trials = CreateTestFieldTrials();
const size_t kMaxLayers = 2;
std::vector<VideoStream> streams =
@@ -219,7 +219,7 @@
}
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, 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, 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, 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, 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, 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, MaxLayersWithRoundUpRatio) {
- ExplicitKeyValueConfig trials(
+ FieldTrials trials = CreateTestFieldTrials(
"WebRTC-SimulcastLayerLimitRoundUp/max_ratio:0.13/");
const size_t kMinLayers = 1;
@@ -360,7 +360,7 @@
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, 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,
BitratesNotInterpolatedForResBelow180pWhenDisabledTrialSet) {
- ExplicitKeyValueConfig trials(
+ FieldTrials trials = CreateTestFieldTrials(
"WebRTC-LowresSimulcastBitrateInterpolation/Disabled/");
const size_t kMaxLayers = 3;
@@ -424,7 +424,7 @@
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 @@
// 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/video/encoder_bitrate_adjuster_unittest.cc b/video/encoder_bitrate_adjuster_unittest.cc
index 642664a..8f93590 100644
--- a/video/encoder_bitrate_adjuster_unittest.cc
+++ b/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 @@
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 @@
}
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 @@
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/video/frame_cadence_adapter_unittest.cc b/video/frame_cadence_adapter_unittest.cc
index 4bee519..af97b7b 100644
--- a/video/frame_cadence_adapter_unittest.cc
+++ b/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 @@
};
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, 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, 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, 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,
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, 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, 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, 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 @@
// 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 @@
// 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 @@
// 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, 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, 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, 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, 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, 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 @@
// 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 @@
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 @@
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 @@
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 @@
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 @@
}
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 @@
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 @@
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/video/frame_decode_timing_unittest.cc b/video/frame_decode_timing_unittest.cc
index da7a098..b9be828 100644
--- a/video/frame_decode_timing_unittest.cc
+++ b/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 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/video/quality_convergence_controller_unittest.cc b/video/quality_convergence_controller_unittest.cc
index 4f7cf63..73b9a0c 100644
--- a/video/quality_convergence_controller_unittest.cc
+++ b/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, 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, 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, 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, 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(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, 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/video/quality_convergence_monitor_unittest.cc b/video/quality_convergence_monitor_unittest.cc
index c8da0a7..069b201 100644
--- a/video/quality_convergence_monitor_unittest.cc
+++ b/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 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, 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, 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, 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, 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, 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/video/receive_statistics_proxy_unittest.cc b/video/receive_statistics_proxy_unittest.cc
index 5e06231..101b745 100644
--- a/video/receive_statistics_proxy_unittest.cc
+++ b/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 @@
return VideoFrameMetaData(frame, Now());
}
- test::ScopedKeyValueConfig field_trials_;
GlobalSimulatedTimeController time_controller_;
std::unique_ptr<ReceiveStatisticsProxy> statistics_proxy_;
};
diff --git a/video/rtp_video_stream_receiver2_unittest.cc b/video/rtp_video_stream_receiver2_unittest.cc
index 3440601..db5e0cc 100644
--- a/video/rtp_video_stream_receiver2_unittest.cc
+++ b/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 {
-using test::ExplicitKeyValueConfig;
using ::testing::_;
using ::testing::DoubleNear;
using ::testing::ElementsAre;
@@ -187,10 +186,9 @@
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/video/send_statistics_proxy_unittest.cc b/video/send_statistics_proxy_unittest.cc
index 07ef0fe..0ef5aba 100644
--- a/video/send_statistics_proxy_unittest.cc
+++ b/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 @@
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 @@
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 @@
}
}
- 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_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_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, 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, 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, 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, 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/video/video_send_stream_impl_unittest.cc b/video/video_send_stream_impl_unittest.cc
index 216907d..72ef458 100644
--- a/video/video_send_stream_impl_unittest.cc
+++ b/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::SizeIs;
constexpr int64_t kDefaultInitialBitrateBps = 333000;
-const double kDefaultBitratePriority = 0.5;
+constexpr double kDefaultBitratePriority = 0.5;
-const float kAlrProbingExperimentPaceMultiplier = 1.0f;
-std::string GetAlrProbingExperimentString() {
- return std::string(
- AlrExperimentSettings::kScreenshareProbingBweExperimentName) +
- "/1.0,2875,80,40,-60,3/";
-}
+constexpr float kAlrProbingExperimentPaceMultiplier = 1.0f;
+constexpr absl::string_view kAlrProbingExperimentValue = "1.0,2875,80,40,-60,3";
+
class MockRtpVideoSender : public RtpVideoSenderInterface {
public:
MOCK_METHOD(void, SetSending, (bool sending), (override));
@@ -148,6 +146,7 @@
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 @@
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,
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, 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, 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, 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 @@
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/video/video_stream_buffer_controller_unittest.cc b/video/video_stream_buffer_controller_unittest.cc
index 681c934..aab2732 100644
--- a/video/video_stream_buffer_controller_unittest.cc
+++ b/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 @@
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 @@
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/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc
index d5c2634..99f1275 100644
--- a/video/video_stream_encoder_unittest.cc
+++ b/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 @@
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 @@
return &time_controller_;
}
+ const Environment& env() { return env_; }
+
private:
class NullEncoderSink : public VideoStreamEncoderInterface::EncoderSink {
public:
@@ -809,7 +809,7 @@
}
};
- test::ScopedKeyValueConfig field_trials_;
+ FieldTrials field_trials_ = CreateTestFieldTrials();
GlobalSimulatedTimeController time_controller_{Timestamp::Zero()};
Environment env_ =
CreateEnvironment(&field_trials_,
@@ -1694,7 +1694,7 @@
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 @@
};
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, 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, 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, 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,
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,
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,
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, 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, 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,
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, 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_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 @@
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 @@
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, 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,
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 @@
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,
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);