WebRTC-DeprecateGlobalFieldTrialString/Enabled/ - part 12/inf

rename WebRtcKeyValueConfig to FieldTrialsView

Bug: webrtc:10335
Change-Id: If725bd498c4c3daf144bee638230fa089fdde833
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256965
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36365}
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index a328d91..ebc8303 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -81,8 +81,8 @@
 
   deps = [
     "..:module_api",
+    "../../api:field_trials_view",
     "../../api:sequence_checker",
-    "../../api:webrtc_key_value_config",
     "../../api/task_queue",
     "../../api/units:time_delta",
     "../../api/units:timestamp",
@@ -167,7 +167,7 @@
   ]
   deps = [
     ":video_coding_utility",
-    "../../api:webrtc_key_value_config",
+    "../../api:field_trials_view",
     "../../api/units:timestamp",
     "../../api/video:encoded_frame",
     "../../rtc_base:logging",
@@ -188,7 +188,7 @@
     "timing.h",
   ]
   deps = [
-    "../../api:webrtc_key_value_config",
+    "../../api:field_trials_view",
     "../../api/units:time_delta",
     "../../api/video:video_rtp_headers",
     "../../rtc_base:logging",
@@ -221,7 +221,7 @@
   ]
   deps = [
     ":rtt_filter",
-    "../../api:webrtc_key_value_config",
+    "../../api:field_trials_view",
     "../../api/units:data_size",
     "../../api/units:frequency",
     "../../api/units:time_delta",
@@ -310,11 +310,11 @@
     "..:module_fec_api",
     "../../api:array_view",
     "../../api:fec_controller_api",
+    "../../api:field_trials_view",
     "../../api:rtp_headers",
     "../../api:rtp_packet_info",
     "../../api:scoped_refptr",
     "../../api:sequence_checker",
-    "../../api:webrtc_key_value_config",
     "../../api/task_queue",
     "../../api/units:data_rate",
     "../../api/units:data_size",
@@ -422,10 +422,10 @@
     ":video_coding",
     "..:module_api",
     "..:module_api_public",
+    "../../api:field_trials_view",
     "../../api:rtp_headers",
     "../../api:rtp_packet_info",
     "../../api:sequence_checker",
-    "../../api:webrtc_key_value_config",
     "../../api/transport:field_trial_based_config",
     "../../api/units:timestamp",
     "../../api/video:encoded_image",
@@ -499,9 +499,9 @@
   deps = [
     ":video_codec_interface",
     "../../api:array_view",
+    "../../api:field_trials_view",
     "../../api:scoped_refptr",
     "../../api:sequence_checker",
-    "../../api:webrtc_key_value_config",
     "../../api/video:encoded_frame",
     "../../api/video:encoded_image",
     "../../api/video:video_adaptation",
@@ -755,10 +755,10 @@
     ":webrtc_libvpx_interface",
     ":webrtc_vp9_helpers",
     "../../api:fec_controller_api",
+    "../../api:field_trials_view",
     "../../api:refcountedbase",
     "../../api:scoped_refptr",
     "../../api/transport:field_trial_based_config",
-    "../../api/transport:webrtc_key_value_config",
     "../../api/video:video_frame",
     "../../api/video:video_frame_i010",
     "../../api/video:video_rtp_headers",
diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.cc b/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.cc
index 669dc55..ffb4705 100644
--- a/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.cc
+++ b/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.cc
@@ -96,7 +96,7 @@
 
 LibvpxVp9Decoder::LibvpxVp9Decoder()
     : LibvpxVp9Decoder(FieldTrialBasedConfig()) {}
-LibvpxVp9Decoder::LibvpxVp9Decoder(const WebRtcKeyValueConfig& trials)
+LibvpxVp9Decoder::LibvpxVp9Decoder(const FieldTrialsView& trials)
     : decode_complete_callback_(nullptr),
       inited_(false),
       decoder_(nullptr),
diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.h b/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.h
index e5636d8..a680441 100644
--- a/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.h
+++ b/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.h
@@ -14,7 +14,7 @@
 
 #ifdef RTC_ENABLE_VP9
 
-#include "api/transport/webrtc_key_value_config.h"
+#include "api/field_trials_view.h"
 #include "api/video_codecs/video_decoder.h"
 #include "common_video/include/video_frame_buffer_pool.h"
 #include "modules/video_coding/codecs/vp9/include/vp9.h"
@@ -26,7 +26,7 @@
 class LibvpxVp9Decoder : public VP9Decoder {
  public:
   LibvpxVp9Decoder();
-  explicit LibvpxVp9Decoder(const WebRtcKeyValueConfig& trials);
+  explicit LibvpxVp9Decoder(const FieldTrialsView& trials);
 
   virtual ~LibvpxVp9Decoder();
 
diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
index 99680cb..c569053 100644
--- a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
+++ b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
@@ -194,7 +194,7 @@
 
 LibvpxVp9Encoder::LibvpxVp9Encoder(const cricket::VideoCodec& codec,
                                    std::unique_ptr<LibvpxInterface> interface,
-                                   const WebRtcKeyValueConfig& trials)
+                                   const FieldTrialsView& trials)
     : libvpx_(std::move(interface)),
       encoded_image_(),
       encoded_complete_callback_(nullptr),
@@ -1811,8 +1811,7 @@
 
 // static
 LibvpxVp9Encoder::VariableFramerateExperiment
-LibvpxVp9Encoder::ParseVariableFramerateConfig(
-    const WebRtcKeyValueConfig& trials) {
+LibvpxVp9Encoder::ParseVariableFramerateConfig(const FieldTrialsView& trials) {
   FieldTrialFlag enabled = FieldTrialFlag("Enabled");
   FieldTrialParameter<double> framerate_limit("min_fps", 5.0);
   FieldTrialParameter<int> qp("min_qp", 32);
@@ -1834,7 +1833,7 @@
 
 // static
 LibvpxVp9Encoder::QualityScalerExperiment
-LibvpxVp9Encoder::ParseQualityScalerConfig(const WebRtcKeyValueConfig& trials) {
+LibvpxVp9Encoder::ParseQualityScalerConfig(const FieldTrialsView& trials) {
   FieldTrialFlag disabled = FieldTrialFlag("Disabled");
   FieldTrialParameter<int> low_qp("low_qp", kLowVp9QpThreshold);
   FieldTrialParameter<int> high_qp("hihg_qp", kHighVp9QpThreshold);
@@ -1873,7 +1872,7 @@
 // static
 LibvpxVp9Encoder::PerformanceFlags
 LibvpxVp9Encoder::ParsePerformanceFlagsFromTrials(
-    const WebRtcKeyValueConfig& trials) {
+    const FieldTrialsView& trials) {
   struct Params : public PerformanceFlags::ParameterSet {
     int min_pixel_count = 0;
   };
diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.h b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.h
index b5e9cc6..8685464 100644
--- a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.h
+++ b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.h
@@ -19,7 +19,7 @@
 #include <vector>
 
 #include "api/fec_controller_override.h"
-#include "api/transport/webrtc_key_value_config.h"
+#include "api/field_trials_view.h"
 #include "api/video_codecs/video_encoder.h"
 #include "api/video_codecs/vp9_profile.h"
 #include "common_video/include/video_frame_buffer_pool.h"
@@ -37,7 +37,7 @@
  public:
   LibvpxVp9Encoder(const cricket::VideoCodec& codec,
                    std::unique_ptr<LibvpxInterface> interface,
-                   const WebRtcKeyValueConfig& trials);
+                   const FieldTrialsView& trials);
 
   ~LibvpxVp9Encoder() override;
 
@@ -190,7 +190,7 @@
     int frames_before_steady_state;
   } variable_framerate_experiment_;
   static VariableFramerateExperiment ParseVariableFramerateConfig(
-      const WebRtcKeyValueConfig& trials);
+      const FieldTrialsView& trials);
   FramerateControllerDeprecated variable_framerate_controller_;
 
   const struct QualityScalerExperiment {
@@ -199,7 +199,7 @@
     bool enabled;
   } quality_scaler_experiment_;
   static QualityScalerExperiment ParseQualityScalerConfig(
-      const WebRtcKeyValueConfig& trials);
+      const FieldTrialsView& trials);
   const bool external_ref_ctrl_;
 
   // Flags that can affect speed vs quality tradeoff, and are configureable per
@@ -234,7 +234,7 @@
       performance_flags_by_spatial_index_;
   void UpdatePerformanceFlags();
   static PerformanceFlags ParsePerformanceFlagsFromTrials(
-      const WebRtcKeyValueConfig& trials);
+      const FieldTrialsView& trials);
   static PerformanceFlags GetDefaultPerformanceFlags();
 
   int num_steady_state_frames_;
diff --git a/modules/video_coding/deprecated/BUILD.gn b/modules/video_coding/deprecated/BUILD.gn
index 9e4b65f..0155fc4 100644
--- a/modules/video_coding/deprecated/BUILD.gn
+++ b/modules/video_coding/deprecated/BUILD.gn
@@ -17,7 +17,7 @@
   deps = [
     "..:nack_requester",
     "../..:module_api",
-    "../../../api:webrtc_key_value_config",
+    "../../../api:field_trials_view",
     "../../../api/units:time_delta",
     "../../../api/units:timestamp",
     "../../../rtc_base:checks",
diff --git a/modules/video_coding/deprecated/nack_module.cc b/modules/video_coding/deprecated/nack_module.cc
index 4a6ae09..0768bc4 100644
--- a/modules/video_coding/deprecated/nack_module.cc
+++ b/modules/video_coding/deprecated/nack_module.cc
@@ -32,7 +32,7 @@
 const int kNumReorderingBuckets = 10;
 const int kDefaultSendNackDelayMs = 0;
 
-int64_t GetSendNackDelay(const WebRtcKeyValueConfig& field_trials) {
+int64_t GetSendNackDelay(const FieldTrialsView& field_trials) {
   int64_t delay_ms = strtol(
       field_trials.Lookup("WebRTC-SendNackDelayMs").c_str(), nullptr, 10);
   if (delay_ms > 0 && delay_ms <= 20) {
@@ -62,7 +62,7 @@
 
 absl::optional<DEPRECATED_NackModule::BackoffSettings>
 DEPRECATED_NackModule::BackoffSettings::ParseFromFieldTrials(
-    const WebRtcKeyValueConfig& field_trials) {
+    const FieldTrialsView& field_trials) {
   // Matches magic number in RTPSender::OnReceivedNack().
   const TimeDelta kDefaultMinRetryInterval = TimeDelta::Millis(5);
   // Upper bound on link-delay considered for exponential backoff.
@@ -91,7 +91,7 @@
     Clock* clock,
     NackSender* nack_sender,
     KeyFrameRequestSender* keyframe_request_sender,
-    const WebRtcKeyValueConfig& field_trials)
+    const FieldTrialsView& field_trials)
     : clock_(clock),
       nack_sender_(nack_sender),
       keyframe_request_sender_(keyframe_request_sender),
diff --git a/modules/video_coding/deprecated/nack_module.h b/modules/video_coding/deprecated/nack_module.h
index 8d17fff..3b49bd1 100644
--- a/modules/video_coding/deprecated/nack_module.h
+++ b/modules/video_coding/deprecated/nack_module.h
@@ -18,8 +18,8 @@
 #include <vector>
 
 #include "absl/base/attributes.h"
+#include "api/field_trials_view.h"
 #include "api/units/time_delta.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/include/module.h"
 #include "modules/include/module_common_types.h"
 #include "modules/video_coding/histogram.h"
@@ -35,7 +35,7 @@
   DEPRECATED_NackModule(Clock* clock,
                         NackSender* nack_sender,
                         KeyFrameRequestSender* keyframe_request_sender,
-                        const WebRtcKeyValueConfig& field_trials);
+                        const FieldTrialsView& field_trials);
 
   int OnReceivedPacket(uint16_t seq_num, bool is_keyframe);
   int OnReceivedPacket(uint16_t seq_num, bool is_keyframe, bool is_recovered);
@@ -72,7 +72,7 @@
   struct BackoffSettings {
     BackoffSettings(TimeDelta min_retry, TimeDelta max_rtt, double base);
     static absl::optional<BackoffSettings> ParseFromFieldTrials(
-        const WebRtcKeyValueConfig& field_trials);
+        const FieldTrialsView& field_trials);
 
     // Min time between nacks.
     const TimeDelta min_retry_interval;
diff --git a/modules/video_coding/frame_buffer2.cc b/modules/video_coding/frame_buffer2.cc
index bfa3b36..421da75 100644
--- a/modules/video_coding/frame_buffer2.cc
+++ b/modules/video_coding/frame_buffer2.cc
@@ -58,7 +58,7 @@
 FrameBuffer::FrameBuffer(Clock* clock,
                          VCMTiming* timing,
                          VCMReceiveStatisticsCallback* stats_callback,
-                         const WebRtcKeyValueConfig& field_trials)
+                         const FieldTrialsView& field_trials)
     : decoded_frames_history_(kMaxFramesHistory),
       clock_(clock),
       callback_queue_(nullptr),
diff --git a/modules/video_coding/frame_buffer2.h b/modules/video_coding/frame_buffer2.h
index cd4cbcd..48aceab 100644
--- a/modules/video_coding/frame_buffer2.h
+++ b/modules/video_coding/frame_buffer2.h
@@ -18,9 +18,9 @@
 #include <vector>
 
 #include "absl/container/inlined_vector.h"
+#include "api/field_trials_view.h"
 #include "api/sequence_checker.h"
 #include "api/video/encoded_frame.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/video_coding/include/video_coding_defines.h"
 #include "modules/video_coding/inter_frame_delay.h"
 #include "modules/video_coding/jitter_estimator.h"
@@ -49,7 +49,7 @@
   FrameBuffer(Clock* clock,
               VCMTiming* timing,
               VCMReceiveStatisticsCallback* stats_callback,
-              const WebRtcKeyValueConfig& field_trials);
+              const FieldTrialsView& field_trials);
 
   FrameBuffer() = delete;
   FrameBuffer(const FrameBuffer&) = delete;
diff --git a/modules/video_coding/frame_buffer2_unittest.cc b/modules/video_coding/frame_buffer2_unittest.cc
index b0e3f1d..def2e22 100644
--- a/modules/video_coding/frame_buffer2_unittest.cc
+++ b/modules/video_coding/frame_buffer2_unittest.cc
@@ -41,7 +41,7 @@
 
 class VCMTimingFake : public VCMTiming {
  public:
-  explicit VCMTimingFake(Clock* clock, const WebRtcKeyValueConfig& field_trials)
+  explicit VCMTimingFake(Clock* clock, const FieldTrialsView& field_trials)
       : VCMTiming(clock, field_trials) {}
 
   Timestamp RenderTime(uint32_t frame_timestamp, Timestamp now) const override {
diff --git a/modules/video_coding/frame_buffer3.cc b/modules/video_coding/frame_buffer3.cc
index 7be5ffa..fab4ca7 100644
--- a/modules/video_coding/frame_buffer3.cc
+++ b/modules/video_coding/frame_buffer3.cc
@@ -64,7 +64,7 @@
 
 FrameBuffer::FrameBuffer(int max_size,
                          int max_decode_history,
-                         const WebRtcKeyValueConfig& field_trials)
+                         const FieldTrialsView& field_trials)
     : legacy_frame_id_jump_behavior_(
           !field_trials.IsDisabled("WebRTC-LegacyFrameIdJumpBehavior")),
       max_size_(max_size),
diff --git a/modules/video_coding/frame_buffer3.h b/modules/video_coding/frame_buffer3.h
index 9683195..5bcfbd2 100644
--- a/modules/video_coding/frame_buffer3.h
+++ b/modules/video_coding/frame_buffer3.h
@@ -17,9 +17,9 @@
 
 #include "absl/container/inlined_vector.h"
 #include "absl/types/optional.h"
+#include "api/field_trials_view.h"
 #include "api/units/timestamp.h"
 #include "api/video/encoded_frame.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/video_coding/utility/decoded_frames_history.h"
 
 namespace webrtc {
@@ -37,7 +37,7 @@
   FrameBuffer(int max_size,
               int max_decode_history,
               // TODO(hta): remove field trials!
-              const WebRtcKeyValueConfig& field_trials);
+              const FieldTrialsView& field_trials);
   FrameBuffer(const FrameBuffer&) = delete;
   FrameBuffer& operator=(const FrameBuffer&) = delete;
   ~FrameBuffer() = default;
diff --git a/modules/video_coding/generic_decoder.cc b/modules/video_coding/generic_decoder.cc
index 78d77d3..2a87198 100644
--- a/modules/video_coding/generic_decoder.cc
+++ b/modules/video_coding/generic_decoder.cc
@@ -29,7 +29,7 @@
 VCMDecodedFrameCallback::VCMDecodedFrameCallback(
     VCMTiming* timing,
     Clock* clock,
-    const WebRtcKeyValueConfig& field_trials)
+    const FieldTrialsView& field_trials)
     : _clock(clock),
       _timing(timing),
       _timestampMap(kDecoderFrameMemoryLength),
diff --git a/modules/video_coding/generic_decoder.h b/modules/video_coding/generic_decoder.h
index 34f22c4..a674858 100644
--- a/modules/video_coding/generic_decoder.h
+++ b/modules/video_coding/generic_decoder.h
@@ -13,10 +13,10 @@
 
 #include <string>
 
+#include "api/field_trials_view.h"
 #include "api/sequence_checker.h"
 #include "api/units/time_delta.h"
 #include "api/video_codecs/video_decoder.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/video_coding/encoded_frame.h"
 #include "modules/video_coding/include/video_codec_interface.h"
 #include "modules/video_coding/timestamp_map.h"
@@ -34,7 +34,7 @@
  public:
   VCMDecodedFrameCallback(VCMTiming* timing,
                           Clock* clock,
-                          const WebRtcKeyValueConfig& field_trials);
+                          const FieldTrialsView& field_trials);
   ~VCMDecodedFrameCallback() override;
   void SetUserReceiveCallback(VCMReceiveCallback* receiveCallback);
   VCMReceiveCallback* UserReceiveCallback();
diff --git a/modules/video_coding/include/video_coding.h b/modules/video_coding/include/video_coding.h
index 8cedc4a..80398fc 100644
--- a/modules/video_coding/include/video_coding.h
+++ b/modules/video_coding/include/video_coding.h
@@ -11,9 +11,9 @@
 #ifndef MODULES_VIDEO_CODING_INCLUDE_VIDEO_CODING_H_
 #define MODULES_VIDEO_CODING_INCLUDE_VIDEO_CODING_H_
 
+#include "api/field_trials_view.h"
 #include "api/video/video_frame.h"
 #include "api/video_codecs/video_decoder.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/include/module.h"
 #include "modules/rtp_rtcp/source/rtp_video_header.h"
 #include "modules/video_coding/include/video_coding_defines.h"
@@ -31,7 +31,7 @@
   // DEPRECATED.
   static VideoCodingModule* Create(
       Clock* clock,
-      const WebRtcKeyValueConfig* field_trials = nullptr);
+      const FieldTrialsView* field_trials = nullptr);
 
   /*
    *   Receiver
diff --git a/modules/video_coding/jitter_buffer.cc b/modules/video_coding/jitter_buffer.cc
index 5983bc1..6464b8c 100644
--- a/modules/video_coding/jitter_buffer.cc
+++ b/modules/video_coding/jitter_buffer.cc
@@ -110,7 +110,7 @@
 
 VCMJitterBuffer::VCMJitterBuffer(Clock* clock,
                                  std::unique_ptr<EventWrapper> event,
-                                 const WebRtcKeyValueConfig& field_trials)
+                                 const FieldTrialsView& field_trials)
     : clock_(clock),
       running_(false),
       frame_event_(std::move(event)),
diff --git a/modules/video_coding/jitter_buffer.h b/modules/video_coding/jitter_buffer.h
index 70e65be..72feffd 100644
--- a/modules/video_coding/jitter_buffer.h
+++ b/modules/video_coding/jitter_buffer.h
@@ -17,7 +17,7 @@
 #include <set>
 #include <vector>
 
-#include "api/webrtc_key_value_config.h"
+#include "api/field_trials_view.h"
 #include "modules/include/module_common_types.h"
 #include "modules/include/module_common_types_public.h"
 #include "modules/video_coding/decoding_state.h"
@@ -72,7 +72,7 @@
  public:
   VCMJitterBuffer(Clock* clock,
                   std::unique_ptr<EventWrapper> event,
-                  const WebRtcKeyValueConfig& field_trials);
+                  const FieldTrialsView& field_trials);
 
   ~VCMJitterBuffer();
 
diff --git a/modules/video_coding/jitter_estimator.cc b/modules/video_coding/jitter_estimator.cc
index e38dfaa..acc36a9 100644
--- a/modules/video_coding/jitter_estimator.cc
+++ b/modules/video_coding/jitter_estimator.cc
@@ -17,11 +17,11 @@
 #include <cstdint>
 
 #include "absl/types/optional.h"
+#include "api/field_trials_view.h"
 #include "api/units/data_size.h"
 #include "api/units/frequency.h"
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/video_coding/rtt_filter.h"
 #include "rtc_base/experiments/jitter_upper_bound_experiment.h"
 #include "rtc_base/numerics/safe_conversions.h"
@@ -50,7 +50,7 @@
 }  // namespace
 
 VCMJitterEstimator::VCMJitterEstimator(Clock* clock,
-                                       const WebRtcKeyValueConfig& field_trials)
+                                       const FieldTrialsView& field_trials)
     : fps_counter_(30),  // TODO(sprang): Use an estimator with limit based on
                          // time, rather than number of samples.
       time_deviation_upper_bound_(
diff --git a/modules/video_coding/jitter_estimator.h b/modules/video_coding/jitter_estimator.h
index 9672d88..20d318a 100644
--- a/modules/video_coding/jitter_estimator.h
+++ b/modules/video_coding/jitter_estimator.h
@@ -12,11 +12,11 @@
 #define MODULES_VIDEO_CODING_JITTER_ESTIMATOR_H_
 
 #include "absl/types/optional.h"
+#include "api/field_trials_view.h"
 #include "api/units/data_size.h"
 #include "api/units/frequency.h"
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/video_coding/rtt_filter.h"
 #include "rtc_base/rolling_accumulator.h"
 
@@ -27,7 +27,7 @@
 class VCMJitterEstimator {
  public:
   explicit VCMJitterEstimator(Clock* clock,
-                              const WebRtcKeyValueConfig& field_trials);
+                              const FieldTrialsView& field_trials);
   virtual ~VCMJitterEstimator();
   VCMJitterEstimator(const VCMJitterEstimator&) = delete;
   VCMJitterEstimator& operator=(const VCMJitterEstimator&) = delete;
diff --git a/modules/video_coding/nack_requester.cc b/modules/video_coding/nack_requester.cc
index 7cd824e..1db716b 100644
--- a/modules/video_coding/nack_requester.cc
+++ b/modules/video_coding/nack_requester.cc
@@ -32,7 +32,7 @@
 const int kNumReorderingBuckets = 10;
 const int kDefaultSendNackDelayMs = 0;
 
-int64_t GetSendNackDelay(const WebRtcKeyValueConfig& field_trials) {
+int64_t GetSendNackDelay(const FieldTrialsView& field_trials) {
   int64_t delay_ms = strtol(
       field_trials.Lookup("WebRTC-SendNackDelayMs").c_str(), nullptr, 10);
   if (delay_ms > 0 && delay_ms <= 20) {
@@ -109,7 +109,7 @@
 
 absl::optional<NackRequester::BackoffSettings>
 NackRequester::BackoffSettings::ParseFromFieldTrials(
-    const WebRtcKeyValueConfig& field_trials) {
+    const FieldTrialsView& field_trials) {
   // Matches magic number in RTPSender::OnReceivedNack().
   const TimeDelta kDefaultMinRetryInterval = TimeDelta::Millis(5);
   // Upper bound on link-delay considered for exponential backoff.
@@ -139,7 +139,7 @@
                              Clock* clock,
                              NackSender* nack_sender,
                              KeyFrameRequestSender* keyframe_request_sender,
-                             const WebRtcKeyValueConfig& field_trials)
+                             const FieldTrialsView& field_trials)
     : worker_thread_(current_queue),
       clock_(clock),
       nack_sender_(nack_sender),
diff --git a/modules/video_coding/nack_requester.h b/modules/video_coding/nack_requester.h
index a01fb7c..fc44a59 100644
--- a/modules/video_coding/nack_requester.h
+++ b/modules/video_coding/nack_requester.h
@@ -17,9 +17,9 @@
 #include <set>
 #include <vector>
 
+#include "api/field_trials_view.h"
 #include "api/sequence_checker.h"
 #include "api/units/time_delta.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/include/module_common_types.h"
 #include "modules/video_coding/histogram.h"
 #include "rtc_base/numerics/sequence_number_util.h"
@@ -72,7 +72,7 @@
                 Clock* clock,
                 NackSender* nack_sender,
                 KeyFrameRequestSender* keyframe_request_sender,
-                const WebRtcKeyValueConfig& field_trials);
+                const FieldTrialsView& field_trials);
   ~NackRequester();
 
   void ProcessNacks() override;
@@ -107,7 +107,7 @@
   struct BackoffSettings {
     BackoffSettings(TimeDelta min_retry, TimeDelta max_rtt, double base);
     static absl::optional<BackoffSettings> ParseFromFieldTrials(
-        const WebRtcKeyValueConfig& field_trials);
+        const FieldTrialsView& field_trials);
 
     // Min time between nacks.
     const TimeDelta min_retry_interval;
diff --git a/modules/video_coding/receiver.cc b/modules/video_coding/receiver.cc
index 1503731..3f954ec 100644
--- a/modules/video_coding/receiver.cc
+++ b/modules/video_coding/receiver.cc
@@ -32,7 +32,7 @@
 
 VCMReceiver::VCMReceiver(VCMTiming* timing,
                          Clock* clock,
-                         const WebRtcKeyValueConfig& field_trials)
+                         const FieldTrialsView& field_trials)
     : VCMReceiver::VCMReceiver(timing,
                                clock,
                                absl::WrapUnique(EventWrapper::Create()),
@@ -43,7 +43,7 @@
                          Clock* clock,
                          std::unique_ptr<EventWrapper> receiver_event,
                          std::unique_ptr<EventWrapper> jitter_buffer_event,
-                         const WebRtcKeyValueConfig& field_trials)
+                         const FieldTrialsView& field_trials)
     : clock_(clock),
       jitter_buffer_(clock_, std::move(jitter_buffer_event), field_trials),
       timing_(timing),
diff --git a/modules/video_coding/receiver.h b/modules/video_coding/receiver.h
index c82ec2d..0bf756c 100644
--- a/modules/video_coding/receiver.h
+++ b/modules/video_coding/receiver.h
@@ -14,7 +14,7 @@
 #include <memory>
 #include <vector>
 
-#include "api/webrtc_key_value_config.h"
+#include "api/field_trials_view.h"
 #include "modules/video_coding/event_wrapper.h"
 #include "modules/video_coding/include/video_coding.h"
 #include "modules/video_coding/include/video_coding_defines.h"
@@ -31,7 +31,7 @@
  public:
   VCMReceiver(VCMTiming* timing,
               Clock* clock,
-              const WebRtcKeyValueConfig& field_trials);
+              const FieldTrialsView& field_trials);
 
   // Using this constructor, you can specify a different event implemetation for
   // the jitter buffer. Useful for unit tests when you want to simulate incoming
@@ -41,7 +41,7 @@
               Clock* clock,
               std::unique_ptr<EventWrapper> receiver_event,
               std::unique_ptr<EventWrapper> jitter_buffer_event,
-              const WebRtcKeyValueConfig& field_trials);
+              const FieldTrialsView& field_trials);
 
   ~VCMReceiver();
 
diff --git a/modules/video_coding/timing.cc b/modules/video_coding/timing.cc
index da71279..f3d5cb4 100644
--- a/modules/video_coding/timing.cc
+++ b/modules/video_coding/timing.cc
@@ -24,7 +24,7 @@
 constexpr TimeDelta kZeroPlayoutDelayDefaultMinPacing = TimeDelta::Millis(8);
 }  // namespace
 
-VCMTiming::VCMTiming(Clock* clock, const WebRtcKeyValueConfig& field_trials)
+VCMTiming::VCMTiming(Clock* clock, const FieldTrialsView& field_trials)
     : clock_(clock),
       ts_extrapolator_(
           std::make_unique<TimestampExtrapolator>(clock_->CurrentTime())),
diff --git a/modules/video_coding/timing.h b/modules/video_coding/timing.h
index 7471740..5868178 100644
--- a/modules/video_coding/timing.h
+++ b/modules/video_coding/timing.h
@@ -14,9 +14,9 @@
 #include <memory>
 
 #include "absl/types/optional.h"
+#include "api/field_trials_view.h"
 #include "api/units/time_delta.h"
 #include "api/video/video_timing.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/video_coding/codec_timer.h"
 #include "rtc_base/experiments/field_trial_parser.h"
 #include "rtc_base/synchronization/mutex.h"
@@ -33,7 +33,7 @@
   static constexpr auto kDefaultRenderDelay = TimeDelta::Millis(10);
   static constexpr auto kDelayMaxChangeMsPerS = 100;
 
-  VCMTiming(Clock* clock, const WebRtcKeyValueConfig& field_trials);
+  VCMTiming(Clock* clock, const FieldTrialsView& field_trials);
   virtual ~VCMTiming() = default;
 
   // Resets the timing to the initial state.
diff --git a/modules/video_coding/video_coding_impl.cc b/modules/video_coding/video_coding_impl.cc
index f3187d9..3e105a6 100644
--- a/modules/video_coding/video_coding_impl.cc
+++ b/modules/video_coding/video_coding_impl.cc
@@ -13,10 +13,10 @@
 #include <algorithm>
 #include <memory>
 
+#include "api/field_trials_view.h"
 #include "api/sequence_checker.h"
 #include "api/transport/field_trial_based_config.h"
 #include "api/video/encoded_image.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/video_coding/include/video_codec_interface.h"
 #include "modules/video_coding/timing.h"
 #include "rtc_base/memory/always_valid_pointer.h"
@@ -45,7 +45,7 @@
 class VideoCodingModuleImpl : public VideoCodingModule {
  public:
   explicit VideoCodingModuleImpl(Clock* clock,
-                                 const WebRtcKeyValueConfig* field_trials)
+                                 const FieldTrialsView* field_trials)
       : VideoCodingModule(),
         field_trials_(field_trials),
         timing_(new VCMTiming(clock, *field_trials_)),
@@ -109,7 +109,7 @@
   }
 
  private:
-  AlwaysValidPointer<const WebRtcKeyValueConfig, FieldTrialBasedConfig>
+  AlwaysValidPointer<const FieldTrialsView, FieldTrialBasedConfig>
       field_trials_;
   SequenceChecker construction_thread_;
   const std::unique_ptr<VCMTiming> timing_;
@@ -121,7 +121,7 @@
 // new jitter buffer is in place.
 VideoCodingModule* VideoCodingModule::Create(
     Clock* clock,
-    const WebRtcKeyValueConfig* field_trials) {
+    const FieldTrialsView* field_trials) {
   RTC_DCHECK(clock);
   return new VideoCodingModuleImpl(clock, field_trials);
 }
diff --git a/modules/video_coding/video_coding_impl.h b/modules/video_coding/video_coding_impl.h
index 10adf55..3010b2f 100644
--- a/modules/video_coding/video_coding_impl.h
+++ b/modules/video_coding/video_coding_impl.h
@@ -16,8 +16,8 @@
 #include <vector>
 
 #include "absl/types/optional.h"
+#include "api/field_trials_view.h"
 #include "api/sequence_checker.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/video_coding/decoder_database.h"
 #include "modules/video_coding/frame_buffer.h"
 #include "modules/video_coding/generic_decoder.h"
@@ -59,7 +59,7 @@
  public:
   VideoReceiver(Clock* clock,
                 VCMTiming* timing,
-                const WebRtcKeyValueConfig& field_trials);
+                const FieldTrialsView& field_trials);
   ~VideoReceiver() override;
 
   void RegisterReceiveCodec(uint8_t payload_type,
diff --git a/modules/video_coding/video_receiver.cc b/modules/video_coding/video_receiver.cc
index ebfdd1b..6db27c4 100644
--- a/modules/video_coding/video_receiver.cc
+++ b/modules/video_coding/video_receiver.cc
@@ -42,7 +42,7 @@
 
 VideoReceiver::VideoReceiver(Clock* clock,
                              VCMTiming* timing,
-                             const WebRtcKeyValueConfig& field_trials)
+                             const FieldTrialsView& field_trials)
     : clock_(clock),
       _timing(timing),
       _receiver(_timing, clock_, field_trials),
diff --git a/modules/video_coding/video_receiver2.cc b/modules/video_coding/video_receiver2.cc
index e0df761..8557d68 100644
--- a/modules/video_coding/video_receiver2.cc
+++ b/modules/video_coding/video_receiver2.cc
@@ -30,7 +30,7 @@
 
 VideoReceiver2::VideoReceiver2(Clock* clock,
                                VCMTiming* timing,
-                               const WebRtcKeyValueConfig& field_trials)
+                               const FieldTrialsView& field_trials)
     : clock_(clock),
       timing_(timing),
       decodedFrameCallback_(timing_, clock_, field_trials),
diff --git a/modules/video_coding/video_receiver2.h b/modules/video_coding/video_receiver2.h
index 45d774b..a634e0e 100644
--- a/modules/video_coding/video_receiver2.h
+++ b/modules/video_coding/video_receiver2.h
@@ -11,9 +11,9 @@
 #ifndef MODULES_VIDEO_CODING_VIDEO_RECEIVER2_H_
 #define MODULES_VIDEO_CODING_VIDEO_RECEIVER2_H_
 
+#include "api/field_trials_view.h"
 #include "api/sequence_checker.h"
 #include "api/video_codecs/video_decoder.h"
-#include "api/webrtc_key_value_config.h"
 #include "modules/video_coding/decoder_database.h"
 #include "modules/video_coding/encoded_frame.h"
 #include "modules/video_coding/generic_decoder.h"
@@ -31,7 +31,7 @@
  public:
   VideoReceiver2(Clock* clock,
                  VCMTiming* timing,
-                 const WebRtcKeyValueConfig& field_trials);
+                 const FieldTrialsView& field_trials);
   ~VideoReceiver2();
 
   void RegisterReceiveCodec(uint8_t payload_type,