diff --git a/api/BUILD.gn b/api/BUILD.gn
index c187a7d..dfbf671 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -47,6 +47,7 @@
     "../media:rtc_audio_video",
     "../pc:media_factory",
     "../rtc_base/system:rtc_export",
+    "environment",
   ]
 }
 
@@ -1433,6 +1434,7 @@
       "../rtc_base:checks",
       "../system_wrappers",
       "../test/time_controller",
+      "environment",
     ]
     absl_deps = [ "//third_party/abseil-cpp/absl/base:nullability" ]
   }
diff --git a/api/enable_media.cc b/api/enable_media.cc
index 566cc15..a05b1b3 100644
--- a/api/enable_media.cc
+++ b/api/enable_media.cc
@@ -13,6 +13,7 @@
 #include <memory>
 #include <utility>
 
+#include "api/environment/environment.h"
 #include "api/peer_connection_interface.h"
 #include "call/call_factory.h"
 #include "media/engine/webrtc_media_engine.h"
@@ -41,26 +42,18 @@
   }
 
   std::unique_ptr<MediaEngineInterface> CreateMediaEngine(
+      const Environment& env,
       PeerConnectionFactoryDependencies& deps) override {
-    std::unique_ptr<FieldTrialsView> fallback_trials;
-    const FieldTrialsView* trials;
-    if (deps.trials) {
-      trials = deps.trials.get();
-    } else {
-      fallback_trials = std::make_unique<FieldTrialBasedConfig>();
-      trials = fallback_trials.get();
-    }
     auto audio_engine = std::make_unique<WebRtcVoiceEngine>(
-        deps.task_queue_factory.get(), deps.adm.get(),
+        &env.task_queue_factory(), deps.adm.get(),
         std::move(deps.audio_encoder_factory),
         std::move(deps.audio_decoder_factory), std::move(deps.audio_mixer),
         std::move(deps.audio_processing), std::move(deps.audio_frame_processor),
-        *trials);
+        env.field_trials());
     auto video_engine = std::make_unique<WebRtcVideoEngine>(
         std::move(deps.video_encoder_factory),
-        std::move(deps.video_decoder_factory), *trials);
-    return std::make_unique<CompositeMediaEngine>(std::move(fallback_trials),
-                                                  std::move(audio_engine),
+        std::move(deps.video_decoder_factory), env.field_trials());
+    return std::make_unique<CompositeMediaEngine>(std::move(audio_engine),
                                                   std::move(video_engine));
   }
 };
diff --git a/api/test/create_time_controller.cc b/api/test/create_time_controller.cc
index 3378805..f26d73a 100644
--- a/api/test/create_time_controller.cc
+++ b/api/test/create_time_controller.cc
@@ -15,6 +15,7 @@
 
 #include "absl/base/nullability.h"
 #include "api/enable_media_with_defaults.h"
+#include "api/environment/environment.h"
 #include "api/peer_connection_interface.h"
 #include "call/call.h"
 #include "call/rtp_transport_config.h"
@@ -74,8 +75,9 @@
     }
 
     std::unique_ptr<cricket::MediaEngineInterface> CreateMediaEngine(
+        const Environment& env,
         PeerConnectionFactoryDependencies& dependencies) override {
-      return media_factory_->CreateMediaEngine(dependencies);
+      return media_factory_->CreateMediaEngine(env, dependencies);
     }
 
    private:
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index fe128c0..8c85788 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -318,6 +318,7 @@
   sources = [ "media_factory.h" ]
   deps = [
     "../api:callfactory_api",
+    "../api/environment",
     "../call:call_interfaces",
     "../media:rtc_media_base",
   ]
@@ -2746,6 +2747,7 @@
     deps = [
       ":media_factory",
       "../api:libjingle_peerconnection_api",
+      "../api/environment",
       "../call:call_interfaces",
       "../media:rtc_media_tests_utils",
       "../rtc_base:checks",
diff --git a/pc/connection_context.cc b/pc/connection_context.cc
index 48ce899..75d95a9 100644
--- a/pc/connection_context.cc
+++ b/pc/connection_context.cc
@@ -14,6 +14,7 @@
 #include <utility>
 #include <vector>
 
+#include "api/environment/environment.h"
 #include "api/transport/field_trial_based_config.h"
 #include "media/base/media_engine.h"
 #include "media/sctp/sctp_transport_factory.h"
@@ -114,7 +115,8 @@
       env_(env),
       media_engine_(
           dependencies->media_factory != nullptr
-              ? dependencies->media_factory->CreateMediaEngine(*dependencies)
+              ? dependencies->media_factory->CreateMediaEngine(env_,
+                                                               *dependencies)
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
               : std::move(dependencies->media_engine)),
diff --git a/pc/media_factory.h b/pc/media_factory.h
index 323744a..2ca2a1f 100644
--- a/pc/media_factory.h
+++ b/pc/media_factory.h
@@ -14,6 +14,7 @@
 #include <memory>
 
 #include "api/call/call_factory_interface.h"
+#include "api/environment/environment.h"
 #include "call/call.h"
 #include "call/call_config.h"
 #include "media/base/media_engine.h"
@@ -38,6 +39,7 @@
 
   std::unique_ptr<Call> CreateCall(const CallConfig& config) override = 0;
   virtual std::unique_ptr<cricket::MediaEngineInterface> CreateMediaEngine(
+      const Environment& env,
       PeerConnectionFactoryDependencies& dependencies) = 0;
 };
 
diff --git a/pc/test/enable_fake_media.cc b/pc/test/enable_fake_media.cc
index 5a84955..5497c60 100644
--- a/pc/test/enable_fake_media.cc
+++ b/pc/test/enable_fake_media.cc
@@ -14,6 +14,7 @@
 #include <utility>
 
 #include "absl/base/nullability.h"
+#include "api/environment/environment.h"
 #include "api/peer_connection_interface.h"
 #include "call/call.h"
 #include "call/call_config.h"
@@ -40,6 +41,7 @@
     }
 
     std::unique_ptr<MediaEngineInterface> CreateMediaEngine(
+        const Environment& /*env*/,
         PeerConnectionFactoryDependencies& /*dependencies*/) {
       RTC_CHECK(fake_ != nullptr)
           << "CreateMediaEngine can be called at most once.";
