Propagate field trials in VideoCodecTestFixture
Bug: webrtc:419453427
Change-Id: I415ad81d328f735a47299d2150000863150cff6f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/394680
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44819}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 6023478..6ad3ea2 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -1110,6 +1110,7 @@
testonly = true
sources = [ "test/videocodec_test_fixture.h" ]
deps = [
+ ":field_trials",
":videocodec_test_stats_api",
"../modules/video_coding:codec_globals_headers",
"../modules/video_coding:video_codec_interface",
diff --git a/api/test/videocodec_test_fixture.h b/api/test/videocodec_test_fixture.h
index 0e35ec3..89e8f0e 100644
--- a/api/test/videocodec_test_fixture.h
+++ b/api/test/videocodec_test_fixture.h
@@ -16,6 +16,7 @@
#include <string>
#include <vector>
+#include "api/field_trials.h"
#include "api/test/videocodec_test_stats.h"
#include "api/video/encoded_image.h"
#include "api/video/video_codec_type.h"
@@ -91,6 +92,8 @@
// Name of this config, to be used for accounting by the test runner.
std::string test_name;
+ FieldTrials field_trials;
+
// Plain name of YUV file to process without file extension.
std::string filename;
// Dimensions of test clip. Falls back to (codec_settings.width/height) if
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 270d57a..950ef68 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -948,6 +948,7 @@
":videocodec_test_stats_impl",
":webrtc_vp9_helpers",
"../../api:array_view",
+ "../../api:field_trials_view",
"../../api:make_ref_counted",
"../../api:rtp_parameters",
"../../api:videocodec_test_fixture_api",
@@ -957,7 +958,6 @@
"../../api/test/metrics:global_metrics_logger_and_exporter",
"../../api/test/metrics:metric",
"../../api/test/video:function_video_factory",
- "../../api/transport:field_trial_based_config",
"../../api/video:encoded_image",
"../../api/video:resolution",
"../../api/video:video_bitrate_allocation",
@@ -987,6 +987,7 @@
"../../rtc_base:threading",
"../../rtc_base:timeutils",
"../../rtc_base/system:file_wrapper",
+ "../../test:create_test_field_trials",
"../../test:fileutils",
"../../test:test_support",
"../../test:video_frame_writer",
diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
index 5732dcc..39e7af4 100644
--- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
@@ -27,13 +27,13 @@
#include "absl/strings/string_view.h"
#include "api/array_view.h"
#include "api/environment/environment_factory.h"
+#include "api/field_trials_view.h"
#include "api/make_ref_counted.h"
#include "api/rtp_parameters.h"
#include "api/test/metrics/global_metrics_logger_and_exporter.h"
#include "api/test/metrics/metric.h"
#include "api/test/videocodec_test_fixture.h"
#include "api/test/videocodec_test_stats.h"
-#include "api/transport/field_trial_based_config.h"
#include "api/video/encoded_image.h"
#include "api/video/resolution.h"
#include "api/video/video_codec_constants.h"
@@ -74,6 +74,7 @@
#include "rtc_base/task_queue_for_test.h"
#include "rtc_base/thread.h"
#include "rtc_base/time_utils.h"
+#include "test/create_test_field_trials.h"
#include "test/gtest.h"
#include "test/testsupport/file_utils.h"
#include "test/testsupport/frame_reader.h"
@@ -92,8 +93,8 @@
const int kDefaultMaxFramerateFps = 30;
const int kMaxQp = 56;
-void ConfigureSimulcast(VideoCodec* codec_settings) {
- FieldTrialBasedConfig trials;
+void ConfigureSimulcast(const FieldTrialsView& trials,
+ VideoCodec* codec_settings) {
VideoEncoderConfig encoder_config;
encoder_config.codec_type = codec_settings->codecType;
encoder_config.number_of_streams = codec_settings->numberOfSimulcastStreams;
@@ -215,7 +216,8 @@
} // namespace
-VideoCodecTestFixtureImpl::Config::Config() = default;
+VideoCodecTestFixtureImpl::Config::Config()
+ : field_trials(CreateTestFieldTrials()) {}
void VideoCodecTestFixtureImpl::Config::SetCodecSettings(
std::string codec_name_to_set,
@@ -288,7 +290,7 @@
}
if (codec_settings.numberOfSimulcastStreams > 1) {
- ConfigureSimulcast(&codec_settings);
+ ConfigureSimulcast(field_trials, &codec_settings);
} else if (codec_settings.codecType == kVideoCodecVP9 &&
codec_settings.VP9()->numberOfSpatialLayers > 1) {
ConfigureSvc(&codec_settings);
@@ -469,8 +471,8 @@
LibvpxVp9DecoderTemplateAdapter,
OpenH264DecoderTemplateAdapter,
Dav1dDecoderTemplateAdapter>>()),
- env_(CreateEnvironment()),
- config_(config) {}
+ config_(std::move(config)),
+ env_(CreateEnvironment(&config_.field_trials)) {}
VideoCodecTestFixtureImpl::VideoCodecTestFixtureImpl(
Config config,
@@ -478,8 +480,8 @@
std::unique_ptr<VideoEncoderFactory> encoder_factory)
: encoder_factory_(std::move(encoder_factory)),
decoder_factory_(std::move(decoder_factory)),
- env_(CreateEnvironment()),
- config_(config) {}
+ config_(std::move(config)),
+ env_(CreateEnvironment(&config_.field_trials)) {}
VideoCodecTestFixtureImpl::~VideoCodecTestFixtureImpl() = default;
diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h
index b36b80a..a9a1606 100644
--- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h
+++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h
@@ -95,8 +95,8 @@
VideoProcessor::VideoDecoderList decoders_;
// Helper objects.
- const Environment env_;
Config config_;
+ const Environment env_;
VideoCodecTestStatsImpl stats_;
std::unique_ptr<FrameReader> source_frame_reader_;
VideoProcessor::IvfFileWriterMap encoded_frame_writers_;