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_;