diff --git a/api/create_peerconnection_factory.cc b/api/create_peerconnection_factory.cc
index 4a01b2f..f9cc7ad 100644
--- a/api/create_peerconnection_factory.cc
+++ b/api/create_peerconnection_factory.cc
@@ -40,19 +40,20 @@
     rtc::scoped_refptr<AudioProcessing> audio_processing,
     AudioFrameProcessor* audio_frame_processor,
     std::unique_ptr<FieldTrialsView> field_trials) {
+  if (!field_trials) {
+    field_trials = std::make_unique<webrtc::FieldTrialBasedConfig>();
+  }
+
   PeerConnectionFactoryDependencies dependencies;
   dependencies.network_thread = network_thread;
   dependencies.worker_thread = worker_thread;
   dependencies.signaling_thread = signaling_thread;
-  dependencies.task_queue_factory = CreateDefaultTaskQueueFactory();
+  dependencies.task_queue_factory =
+      CreateDefaultTaskQueueFactory(field_trials.get());
   dependencies.call_factory = CreateCallFactory();
   dependencies.event_log_factory = std::make_unique<RtcEventLogFactory>(
       dependencies.task_queue_factory.get());
-  if (field_trials) {
-    dependencies.trials = std::move(field_trials);
-  } else {
-    dependencies.trials = std::make_unique<webrtc::FieldTrialBasedConfig>();
-  }
+  dependencies.trials = std::move(field_trials);
 
   if (network_thread) {
     // TODO(bugs.webrtc.org/13145): Add an rtc::SocketFactory* argument.
diff --git a/api/task_queue/BUILD.gn b/api/task_queue/BUILD.gn
index 8daa01d..2406bc0 100644
--- a/api/task_queue/BUILD.gn
+++ b/api/task_queue/BUILD.gn
@@ -61,7 +61,9 @@
     ]
   } else {
     deps = [
+      ":default_task_queue_factory",
       ":task_queue",
+      "../../api:field_trials_view",
       "../../api/units:time_delta",
       "../../rtc_base:refcount",
       "../../rtc_base:rtc_event",
@@ -81,11 +83,26 @@
     poisonous = [ "default_task_queue" ]
   }
   sources = [ "default_task_queue_factory.h" ]
-  deps = [ ":task_queue" ]
+  deps = [
+    ":task_queue",
+    "../../api:field_trials_view",
+    "../../rtc_base/memory:always_valid_pointer",
+  ]
 
   if (rtc_enable_libevent) {
-    sources += [ "default_task_queue_factory_libevent.cc" ]
-    deps += [ "../../rtc_base:rtc_task_queue_libevent" ]
+    if (is_android) {
+      sources +=
+          [ "default_task_queue_factory_stdlib_or_libevent_experiment.cc" ]
+      deps += [
+        "../../api/transport:field_trial_based_config",
+        "../../rtc_base:logging",
+        "../../rtc_base:rtc_task_queue_libevent",
+        "../../rtc_base:rtc_task_queue_stdlib",
+      ]
+    } else {
+      sources += [ "default_task_queue_factory_libevent.cc" ]
+      deps += [ "../../rtc_base:rtc_task_queue_libevent" ]
+    }
   } else if (is_mac || is_ios) {
     sources += [ "default_task_queue_factory_gcd.cc" ]
     deps += [ "../../rtc_base:rtc_task_queue_gcd" ]
diff --git a/api/task_queue/default_task_queue_factory.h b/api/task_queue/default_task_queue_factory.h
index ccdd1eb..1d2dbd7 100644
--- a/api/task_queue/default_task_queue_factory.h
+++ b/api/task_queue/default_task_queue_factory.h
@@ -12,11 +12,13 @@
 
 #include <memory>
 
+#include "api/field_trials_view.h"
 #include "api/task_queue/task_queue_factory.h"
 
 namespace webrtc {
 
-std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory();
+std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory(
+    const FieldTrialsView* field_trials = nullptr);
 
 }  // namespace webrtc
 
diff --git a/api/task_queue/default_task_queue_factory_gcd.cc b/api/task_queue/default_task_queue_factory_gcd.cc
index 7e17b48..391f09b 100644
--- a/api/task_queue/default_task_queue_factory_gcd.cc
+++ b/api/task_queue/default_task_queue_factory_gcd.cc
@@ -9,12 +9,14 @@
  */
 #include <memory>
 
+#include "api/field_trials_view.h"
 #include "api/task_queue/task_queue_factory.h"
 #include "rtc_base/task_queue_gcd.h"
 
 namespace webrtc {
 
-std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory() {
+std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory(
+    const FieldTrialsView* field_trials) {
   return CreateTaskQueueGcdFactory();
 }
 
diff --git a/api/task_queue/default_task_queue_factory_libevent.cc b/api/task_queue/default_task_queue_factory_libevent.cc
index f2fb418..89079f5 100644
--- a/api/task_queue/default_task_queue_factory_libevent.cc
+++ b/api/task_queue/default_task_queue_factory_libevent.cc
@@ -9,12 +9,14 @@
  */
 #include <memory>
 
+#include "api/field_trials_view.h"
 #include "api/task_queue/task_queue_factory.h"
 #include "rtc_base/task_queue_libevent.h"
 
 namespace webrtc {
 
-std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory() {
+std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory(
+    const FieldTrialsView* field_trials) {
   return CreateTaskQueueLibeventFactory();
 }
 
diff --git a/api/task_queue/default_task_queue_factory_stdlib.cc b/api/task_queue/default_task_queue_factory_stdlib.cc
index ca7d720..10cda7c 100644
--- a/api/task_queue/default_task_queue_factory_stdlib.cc
+++ b/api/task_queue/default_task_queue_factory_stdlib.cc
@@ -9,12 +9,14 @@
  */
 #include <memory>
 
+#include "api/field_trials_view.h"
 #include "api/task_queue/task_queue_factory.h"
 #include "rtc_base/task_queue_stdlib.h"
 
 namespace webrtc {
 
-std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory() {
+std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory(
+    const FieldTrialsView* field_trials) {
   return CreateTaskQueueStdlibFactory();
 }
 
diff --git a/api/task_queue/default_task_queue_factory_stdlib_or_libevent_experiment.cc b/api/task_queue/default_task_queue_factory_stdlib_or_libevent_experiment.cc
new file mode 100644
index 0000000..dc6e835
--- /dev/null
+++ b/api/task_queue/default_task_queue_factory_stdlib_or_libevent_experiment.cc
@@ -0,0 +1,38 @@
+/*
+ *  Copyright 2022 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include <memory>
+
+#include "api/field_trials_view.h"
+#include "api/task_queue/task_queue_factory.h"
+#include "api/transport/field_trial_based_config.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/memory/always_valid_pointer.h"
+#include "rtc_base/task_queue_libevent.h"
+#include "rtc_base/task_queue_stdlib.h"
+
+namespace webrtc {
+
+std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory(
+    const FieldTrialsView* field_trials_view) {
+  AlwaysValidPointer<const FieldTrialsView, FieldTrialBasedConfig> field_trials(
+      field_trials_view);
+  if (field_trials->IsEnabled("WebRTC-TaskQueue-ReplaceLibeventWithStdlib")) {
+    RTC_LOG(LS_INFO) << "WebRTC-TaskQueue-ReplaceLibeventWithStdlib: "
+                     << "using TaskQueueStdlibFactory.";
+    return CreateTaskQueueStdlibFactory();
+  }
+
+  RTC_LOG(LS_INFO) << "WebRTC-TaskQueue-ReplaceLibeventWithStdlib: "
+                   << "using TaskQueueLibeventFactory.";
+  return CreateTaskQueueLibeventFactory();
+}
+
+}  // namespace webrtc
diff --git a/api/task_queue/default_task_queue_factory_win.cc b/api/task_queue/default_task_queue_factory_win.cc
index 493ea66..e3adc07 100644
--- a/api/task_queue/default_task_queue_factory_win.cc
+++ b/api/task_queue/default_task_queue_factory_win.cc
@@ -9,12 +9,14 @@
  */
 #include <memory>
 
+#include "api/field_trials_view.h"
 #include "api/task_queue/task_queue_factory.h"
 #include "rtc_base/task_queue_win.h"
 
 namespace webrtc {
 
-std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory() {
+std::unique_ptr<TaskQueueFactory> CreateDefaultTaskQueueFactory(
+    const FieldTrialsView* field_trials) {
   return CreateTaskQueueWinFactory();
 }
 
diff --git a/api/task_queue/task_queue_test.cc b/api/task_queue/task_queue_test.cc
index 69532d6..0f6b1d0 100644
--- a/api/task_queue/task_queue_test.cc
+++ b/api/task_queue/task_queue_test.cc
@@ -13,6 +13,7 @@
 
 #include "absl/cleanup/cleanup.h"
 #include "absl/strings/string_view.h"
+#include "api/task_queue/default_task_queue_factory.h"
 #include "api/units/time_delta.h"
 #include "rtc_base/event.h"
 #include "rtc_base/ref_counter.h"
@@ -29,13 +30,13 @@
 }
 
 TEST_P(TaskQueueTest, Construct) {
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   auto queue = CreateTaskQueue(factory, "Construct");
   EXPECT_FALSE(queue->IsCurrent());
 }
 
 TEST_P(TaskQueueTest, PostAndCheckCurrent) {
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   rtc::Event event;
   auto queue = CreateTaskQueue(factory, "PostAndCheckCurrent");
 
@@ -53,7 +54,7 @@
 }
 
 TEST_P(TaskQueueTest, PostCustomTask) {
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   rtc::Event ran;
   auto queue = CreateTaskQueue(factory, "PostCustomImplementation");
 
@@ -72,7 +73,7 @@
 }
 
 TEST_P(TaskQueueTest, PostDelayedZero) {
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   rtc::Event event;
   auto queue = CreateTaskQueue(factory, "PostDelayedZero");
 
@@ -81,7 +82,7 @@
 }
 
 TEST_P(TaskQueueTest, PostFromQueue) {
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   rtc::Event event;
   auto queue = CreateTaskQueue(factory, "PostFromQueue");
 
@@ -91,7 +92,7 @@
 }
 
 TEST_P(TaskQueueTest, PostDelayed) {
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   rtc::Event event;
   auto queue =
       CreateTaskQueue(factory, "PostDelayed", TaskQueueFactory::Priority::HIGH);
@@ -113,7 +114,7 @@
 }
 
 TEST_P(TaskQueueTest, PostMultipleDelayed) {
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   auto queue = CreateTaskQueue(factory, "PostMultipleDelayed");
 
   std::vector<rtc::Event> events(100);
@@ -132,7 +133,7 @@
 }
 
 TEST_P(TaskQueueTest, PostDelayedAfterDestruct) {
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   rtc::Event run;
   rtc::Event deleted;
   auto queue = CreateTaskQueue(factory, "PostDelayedAfterDestruct");
@@ -147,7 +148,7 @@
 }
 
 TEST_P(TaskQueueTest, PostAndReuse) {
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   rtc::Event event;
   auto post_queue = CreateTaskQueue(factory, "PostQueue");
   auto reply_queue = CreateTaskQueue(factory, "ReplyQueue");
@@ -203,7 +204,7 @@
     rtc::Event event_;
   };
 
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   static constexpr int kTaskCount = 0xffff;
   rtc::Event posting_done;
   BlockingCounter all_destroyed(kTaskCount);
@@ -247,7 +248,7 @@
 // unit test, run it under TSan or some other tool that is able to
 // directly detect data races.
 TEST_P(TaskQueueTest, PostTwoWithSharedUnprotectedState) {
-  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()();
+  std::unique_ptr<webrtc::TaskQueueFactory> factory = GetParam()(nullptr);
   struct SharedState {
     // First task will set this value to 1 and second will assert it.
     int state = 0;
diff --git a/api/task_queue/task_queue_test.h b/api/task_queue/task_queue_test.h
index e2e4730..214f950 100644
--- a/api/task_queue/task_queue_test.h
+++ b/api/task_queue/task_queue_test.h
@@ -13,6 +13,7 @@
 #include <functional>
 #include <memory>
 
+#include "api/field_trials_view.h"
 #include "api/task_queue/task_queue_factory.h"
 #include "test/gtest.h"
 
@@ -31,9 +32,9 @@
 // INSTANTIATE_TEST_SUITE_P(My, TaskQueueTest, Values(CreateMyFactory));
 //
 // }  // namespace
-class TaskQueueTest : public ::testing::TestWithParam<
-                          std::function<std::unique_ptr<TaskQueueFactory>()>> {
-};
+class TaskQueueTest
+    : public ::testing::TestWithParam<std::function<
+          std::unique_ptr<TaskQueueFactory>(const FieldTrialsView*)>> {};
 
 }  // namespace webrtc
 
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 9938be8..b7a9ec4 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -1758,6 +1758,7 @@
         ":threading",
         ":timeutils",
         "../api:array_view",
+        "../api:field_trials_view",
         "../api:make_ref_counted",
         "../api/task_queue",
         "../api/task_queue:pending_task_safety_flag",
diff --git a/rtc_base/thread_unittest.cc b/rtc_base/thread_unittest.cc
index a800671..a6b2494 100644
--- a/rtc_base/thread_unittest.cc
+++ b/rtc_base/thread_unittest.cc
@@ -12,6 +12,7 @@
 
 #include <memory>
 
+#include "api/field_trials_view.h"
 #include "api/task_queue/task_queue_factory.h"
 #include "api/task_queue/task_queue_test.h"
 #include "api/units/time_delta.h"
@@ -1083,11 +1084,16 @@
   }
 };
 
+std::unique_ptr<webrtc::TaskQueueFactory> CreateDefaultThreadFactory(
+    const webrtc::FieldTrialsView*) {
+  return std::make_unique<ThreadFactory>();
+}
+
 using ::webrtc::TaskQueueTest;
 
 INSTANTIATE_TEST_SUITE_P(RtcThread,
                          TaskQueueTest,
-                         ::testing::Values(std::make_unique<ThreadFactory>));
+                         ::testing::Values(CreateDefaultThreadFactory));
 
 }  // namespace
 }  // namespace rtc
diff --git a/rtc_tools/video_replay.cc b/rtc_tools/video_replay.cc
index 7d331ad..1a7bfad 100644
--- a/rtc_tools/video_replay.cc
+++ b/rtc_tools/video_replay.cc
@@ -340,21 +340,22 @@
   // Replay a rtp dump with an optional json configuration.
   static void Replay(const std::string& replay_config_path,
                      const std::string& rtp_dump_path) {
+    webrtc::RtcEventLogNull event_log;
+    Call::Config call_config(&event_log);
+    call_config.trials = new FieldTrialBasedConfig();
+
     std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
-        webrtc::CreateDefaultTaskQueueFactory();
+        webrtc::CreateDefaultTaskQueueFactory(call_config.trials);
     auto worker_thread = task_queue_factory->CreateTaskQueue(
         "worker_thread", TaskQueueFactory::Priority::NORMAL);
     rtc::Event sync_event(/*manual_reset=*/false,
                           /*initially_signalled=*/false);
-    webrtc::RtcEventLogNull event_log;
-    Call::Config call_config(&event_log);
     call_config.task_queue_factory = task_queue_factory.get();
-    call_config.trials = new FieldTrialBasedConfig();
-    std::unique_ptr<Call> call;
-    std::unique_ptr<StreamState> stream_state;
 
     // Creation of the streams must happen inside a task queue because it is
     // resued as a worker thread.
+    std::unique_ptr<Call> call;
+    std::unique_ptr<StreamState> stream_state;
     worker_thread->PostTask([&]() {
       call.reset(Call::Create(call_config));
 
diff --git a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
index 84c5f02..e2215c8 100644
--- a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
+++ b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
@@ -173,8 +173,9 @@
     if (webrtc::field_trial::IsEnabled("WebRTC-Network-UseNWPathMonitor")) {
       dependencies.network_monitor_factory = webrtc::CreateNetworkMonitorFactory();
     }
-    dependencies.task_queue_factory = webrtc::CreateDefaultTaskQueueFactory();
     dependencies.trials = std::make_unique<webrtc::FieldTrialBasedConfig>();
+    dependencies.task_queue_factory =
+        webrtc::CreateDefaultTaskQueueFactory(dependencies.trials.get());
     cricket::MediaEngineDependencies media_deps;
     media_deps.adm = std::move(audioDeviceModule);
     media_deps.task_queue_factory = dependencies.task_queue_factory.get();
