diff --git a/modules/video_coding/fec_controller_default.cc b/modules/video_coding/fec_controller_default.cc
index d548d65..9933782 100644
--- a/modules/video_coding/fec_controller_default.cc
+++ b/modules/video_coding/fec_controller_default.cc
@@ -30,8 +30,7 @@
     VCMProtectionCallback* protection_callback)
     : env_(env),
       protection_callback_(protection_callback),
-      loss_prot_logic_(new media_optimization::VCMLossProtectionLogic(
-          env_.clock().TimeInMilliseconds())),
+      loss_prot_logic_(new media_optimization::VCMLossProtectionLogic(env_)),
       max_payload_size_(1460),
       overhead_threshold_(GetProtectionOverheadRateThreshold()) {}
 
diff --git a/modules/video_coding/media_opt_util.cc b/modules/video_coding/media_opt_util.cc
index 7580c95..cdcc6e7 100644
--- a/modules/video_coding/media_opt_util.cc
+++ b/modules/video_coding/media_opt_util.cc
@@ -13,13 +13,16 @@
 #include <math.h>
 
 #include <algorithm>
+#include <memory>
 
+#include "api/field_trials_view.h"
 #include "modules/video_coding/fec_rate_table.h"
 #include "modules/video_coding/internal_defines.h"
 #include "modules/video_coding/utility/simulcast_rate_allocator.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/experiments/rate_control_settings.h"
 #include "rtc_base/numerics/safe_conversions.h"
+#include "system_wrappers/include/clock.h"
 
 namespace webrtc {
 // Max value of loss rates in off-line model
@@ -80,9 +83,10 @@
   return 1;
 }
 
-VCMNackFecMethod::VCMNackFecMethod(int64_t lowRttNackThresholdMs,
+VCMNackFecMethod::VCMNackFecMethod(const FieldTrialsView& field_trials,
+                                   int64_t lowRttNackThresholdMs,
                                    int64_t highRttNackThresholdMs)
-    : VCMFecMethod(),
+    : VCMFecMethod(field_trials),
       _lowRttNackMs(lowRttNackThresholdMs),
       _highRttNackMs(highRttNackThresholdMs),
       _maxFramesFec(1) {
@@ -244,9 +248,8 @@
   return true;
 }
 
-VCMFecMethod::VCMFecMethod()
-    : VCMProtectionMethod(),
-      rate_control_settings_(RateControlSettings::ParseFromFieldTrials()) {
+VCMFecMethod::VCMFecMethod(const FieldTrialsView& field_trials)
+    : rate_control_settings_(field_trials) {
   _type = kFec;
 }
 
@@ -489,8 +492,9 @@
 
   return true;
 }
-VCMLossProtectionLogic::VCMLossProtectionLogic(int64_t nowMs)
-    : _currentParameters(),
+VCMLossProtectionLogic::VCMLossProtectionLogic(const Environment& env)
+    : env_(env),
+      _currentParameters(),
       _rtt(0),
       _lossPr(0.0f),
       _bitRate(0.0f),
@@ -507,7 +511,7 @@
       _codecWidth(704),
       _codecHeight(576),
       _numLayers(1) {
-  Reset(nowMs);
+  Reset(env_.clock().CurrentTime().ms());
 }
 
 VCMLossProtectionLogic::~VCMLossProtectionLogic() {
@@ -524,10 +528,11 @@
       _selectedMethod.reset(new VCMNackMethod());
       break;
     case kFec:
-      _selectedMethod.reset(new VCMFecMethod());
+      _selectedMethod = std::make_unique<VCMFecMethod>(env_.field_trials());
       break;
     case kNackFec:
-      _selectedMethod.reset(new VCMNackFecMethod(kLowRttNackMs, -1));
+      _selectedMethod = std::make_unique<VCMNackFecMethod>(env_.field_trials(),
+                                                           kLowRttNackMs, -1);
       break;
     case kNone:
       _selectedMethod.reset();
diff --git a/modules/video_coding/media_opt_util.h b/modules/video_coding/media_opt_util.h
index a74d1af..ad77f52 100644
--- a/modules/video_coding/media_opt_util.h
+++ b/modules/video_coding/media_opt_util.h
@@ -16,6 +16,8 @@
 
 #include <memory>
 
+#include "api/environment/environment.h"
+#include "api/field_trials_view.h"
 #include "modules/video_coding/internal_defines.h"
 #include "rtc_base/experiments/rate_control_settings.h"
 #include "rtc_base/numerics/exp_filter.h"
@@ -153,7 +155,7 @@
 
 class VCMFecMethod : public VCMProtectionMethod {
  public:
-  VCMFecMethod();
+  explicit VCMFecMethod(const FieldTrialsView& field_trials);
   ~VCMFecMethod() override;
   bool UpdateParameters(const VCMProtectionParameters* parameters) override;
   // Get the effective packet loss for ER
@@ -190,7 +192,8 @@
 
 class VCMNackFecMethod : public VCMFecMethod {
  public:
-  VCMNackFecMethod(int64_t lowRttNackThresholdMs,
+  VCMNackFecMethod(const FieldTrialsView& field_trials,
+                   int64_t lowRttNackThresholdMs,
                    int64_t highRttNackThresholdMs);
   ~VCMNackFecMethod() override;
   bool UpdateParameters(const VCMProtectionParameters* parameters) override;
@@ -213,7 +216,7 @@
 
 class VCMLossProtectionLogic {
  public:
-  explicit VCMLossProtectionLogic(int64_t nowMs);
+  explicit VCMLossProtectionLogic(const Environment& env);
   ~VCMLossProtectionLogic();
 
   // Set the protection method to be used
@@ -322,6 +325,8 @@
   // Sets the available loss protection methods.
   void UpdateMaxLossHistory(uint8_t lossPr255, int64_t now);
   uint8_t MaxFilteredLossPr(int64_t nowMs) const;
+
+  const Environment env_;
   std::unique_ptr<VCMProtectionMethod> _selectedMethod;
   VCMProtectionParameters _currentParameters;
   int64_t _rtt;
