diff --git a/call/rtp_payload_params.cc b/call/rtp_payload_params.cc
index af3874b..c3387f1 100644
--- a/call/rtp_payload_params.cc
+++ b/call/rtp_payload_params.cc
@@ -133,8 +133,8 @@
           absl::StartsWith(trials.Lookup("WebRTC-GenericPictureId"),
                            "Enabled")),
       simulate_generic_vp9_(
-          !absl::StartsWith(trials.Lookup("WebRTC-Vp9DependencyDescriptor"),
-                            "Disabled")) {
+          absl::StartsWith(trials.Lookup("WebRTC-Vp9DependencyDescriptor"),
+                           "Enabled")) {
   for (auto& spatial_layer : last_shared_frame_id_)
     spatial_layer.fill(-1);
 
diff --git a/call/rtp_payload_params_unittest.cc b/call/rtp_payload_params_unittest.cc
index 59c8f23..7db38db 100644
--- a/call/rtp_payload_params_unittest.cc
+++ b/call/rtp_payload_params_unittest.cc
@@ -463,9 +463,17 @@
   ConvertAndCheck(1, 20, VideoFrameType::kVideoFrameDelta, kNoSync, {10, 15});
 }
 
-TEST(RtpPayloadParamsVp9ToGenericTest, NoScalability) {
-  RtpPayloadState state;
-  RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
+class RtpPayloadParamsVp9ToGenericTest : public ::testing::Test {
+ protected:
+  RtpPayloadParamsVp9ToGenericTest()
+      : field_trials_("WebRTC-Vp9DependencyDescriptor/Enabled/") {}
+
+  test::ExplicitKeyValueConfig field_trials_;
+  RtpPayloadState state_;
+};
+
+TEST_F(RtpPayloadParamsVp9ToGenericTest, NoScalability) {
+  RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
 
   EncodedImage encoded_image;
   CodecSpecificInfo codec_info;
@@ -512,13 +520,12 @@
   EXPECT_THAT(header.generic->chain_diffs, ElementsAre(3 - 1));
 }
 
-TEST(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith2Layers) {
+TEST_F(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith2Layers) {
   // Test with 2 temporal layers structure that is not used by webrtc:
   //    1---3   5
   //   /   /   /   ...
   //  0---2---4---
-  RtpPayloadState state;
-  RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
+  RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
 
   EncodedImage image;
   CodecSpecificInfo info;
@@ -617,11 +624,10 @@
   EXPECT_THAT(headers[5].generic->chain_diffs, ElementsAre(2));
 }
 
-TEST(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith3Layers) {
+TEST_F(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith3Layers) {
   // Test with 3 temporal layers structure that is not used by webrtc, but used
   // by chromium: https://imgur.com/pURAGvp
-  RtpPayloadState state;
-  RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
+  RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
 
   EncodedImage image;
   CodecSpecificInfo info;
@@ -762,12 +768,11 @@
   EXPECT_THAT(headers[8].generic->chain_diffs, ElementsAre(8));
 }
 
-TEST(RtpPayloadParamsVp9ToGenericTest, SpatialScalabilityKSvc) {
+TEST_F(RtpPayloadParamsVp9ToGenericTest, SpatialScalabilityKSvc) {
   //  1---3--
   //  |     ...
   //  0---2--
-  RtpPayloadState state;
-  RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
+  RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
 
   EncodedImage image;
   CodecSpecificInfo info;
diff --git a/call/rtp_video_sender.cc b/call/rtp_video_sender.cc
index 0e29a4c..5b6712d 100644
--- a/call/rtp_video_sender.cc
+++ b/call/rtp_video_sender.cc
@@ -367,9 +367,9 @@
           field_trials_.Lookup("WebRTC-Video-UseFrameRateForOverhead"),
           "Enabled")),
       has_packet_feedback_(TransportSeqNumExtensionConfigured(rtp_config)),
-      simulate_vp9_structure_(!absl::StartsWith(
+      simulate_vp9_structure_(absl::StartsWith(
           field_trials_.Lookup("WebRTC-Vp9DependencyDescriptor"),
-          "Disabled")),
+          "Enabled")),
       active_(false),
       suspended_ssrcs_(std::move(suspended_ssrcs)),
       fec_controller_(std::move(fec_controller)),
diff --git a/call/rtp_video_sender_unittest.cc b/call/rtp_video_sender_unittest.cc
index a45473f..334d97c 100644
--- a/call/rtp_video_sender_unittest.cc
+++ b/call/rtp_video_sender_unittest.cc
@@ -772,6 +772,8 @@
 
 TEST(RtpVideoSenderTest,
      SupportsDependencyDescriptorForVp9NotProvidedByEncoder) {
+  test::ScopedFieldTrials field_trials(
+      "WebRTC-Vp9DependencyDescriptor/Enabled/");
   RtpVideoSenderTestFixture test({kSsrc1}, {}, kPayloadType, {});
   test.router()->SetActive(true);
 
diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
index 88d3b7d..f29ad92 100644
--- a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
+++ b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
@@ -228,8 +228,8 @@
       ss_info_needed_(false),
       force_all_active_layers_(false),
       use_svc_controller_(
-          !absl::StartsWith(trials.Lookup("WebRTC-Vp9DependencyDescriptor"),
-                            "Disabled")),
+          absl::StartsWith(trials.Lookup("WebRTC-Vp9DependencyDescriptor"),
+                           "Enabled")),
       is_flexible_mode_(false),
       variable_framerate_experiment_(ParseVariableFramerateConfig(trials)),
       variable_framerate_controller_(
diff --git a/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc b/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
index 41e349e..e965384 100644
--- a/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
+++ b/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
@@ -257,6 +257,8 @@
 }
 
 TEST(Vp9ImplTest, EncodeAttachesTemplateStructureWithSvcController) {
+  test::ScopedFieldTrials override_field_trials(
+      "WebRTC-Vp9DependencyDescriptor/Enabled/");
   std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
   VideoCodec codec_settings = DefaultCodecSettings();
   EXPECT_EQ(encoder->InitEncode(&codec_settings, kSettings),
@@ -299,6 +301,8 @@
 }
 
 TEST(Vp9ImplTest, EncodeTemporalLayersWithSvcController) {
+  test::ScopedFieldTrials override_field_trials(
+      "WebRTC-Vp9DependencyDescriptor/Enabled/");
   std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
   VideoCodec codec_settings = DefaultCodecSettings();
   codec_settings.VP9()->numberOfTemporalLayers = 2;
@@ -346,6 +350,8 @@
 }
 
 TEST(Vp9ImplTest, EncodeSpatialLayersWithSvcController) {
+  test::ScopedFieldTrials override_field_trials(
+      "WebRTC-Vp9DependencyDescriptor/Enabled/");
   std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
   VideoCodec codec_settings = DefaultCodecSettings();
   codec_settings.VP9()->numberOfSpatialLayers = 2;
@@ -481,6 +487,8 @@
 }
 
 TEST(Vp9ImplTest, EnableDisableSpatialLayersWithSvcController) {
+  test::ScopedFieldTrials override_field_trials(
+      "WebRTC-Vp9DependencyDescriptor/Enabled/");
   const int num_spatial_layers = 3;
   // Configure encoder to produce 3 spatial layers. Encode frames of layer 0
   // then enable layer 1 and encode more frames and so on.
@@ -555,6 +563,8 @@
 }
 
 TEST(Vp9ImplTest, SpatialUpswitchNotAtGOFBoundary) {
+  test::ScopedFieldTrials override_field_trials(
+      "WebRTC-Vp9DependencyDescriptor/Enabled/");
   std::unique_ptr<VideoEncoder> encoder = VP9Encoder::Create();
   VideoCodec codec_settings = DefaultCodecSettings();
   ConfigureSvc(codec_settings, /*num_spatial_layers=*/3,
@@ -753,6 +763,8 @@
 TEST(Vp9ImplTest, DisableEnableBaseLayerWithSvcControllerTriggersKeyFrame) {
   // Configure encoder to produce N spatial layers. Encode frames for all
   // layers. Then disable all but the last layer. Then reenable all back again.
+  test::ScopedFieldTrials override_field_trials(
+      "WebRTC-Vp9DependencyDescriptor/Enabled/");
   const size_t num_spatial_layers = 3;
   const size_t num_temporal_layers = 3;
   // Must not be multiple of temporal period to exercise all code paths.
@@ -2342,17 +2354,8 @@
                            absl::WrapUnique<LibvpxInterface>(vpx), trials);
 
   VideoCodec settings = DefaultCodecSettings();
-  constexpr int kNumSpatialLayers = 3;
-  constexpr int kNumTemporalLayers = 3;
-  ConfigureSvc(settings, kNumSpatialLayers, kNumTemporalLayers);
-  VideoBitrateAllocation bitrate_allocation;
-  for (int si = 0; si < kNumSpatialLayers; ++si) {
-    for (int ti = 0; ti < kNumTemporalLayers; ++ti) {
-      uint32_t bitrate_bps =
-          settings.spatialLayers[si].targetBitrate * 1'000 / kNumTemporalLayers;
-      bitrate_allocation.SetBitrate(si, ti, bitrate_bps);
-    }
-  }
+  const int kNumSpatialLayers = 3;
+  ConfigureSvc(settings, kNumSpatialLayers, /*num_temporal_layers=*/3);
   vpx_image_t img;
 
   // Speed settings per spatial layer, for TL0.
@@ -2364,11 +2367,6 @@
   const int kLoopFilter[VPX_MAX_LAYERS] = {1, 0, 0};
 
   ON_CALL(*vpx, img_wrap).WillByDefault(GetWrapImageFunction(&img));
-  ON_CALL(*vpx, codec_enc_init)
-      .WillByDefault(WithArg<0>([](vpx_codec_ctx_t* ctx) {
-        memset(ctx, 0, sizeof(*ctx));
-        return VPX_CODEC_OK;
-      }));
   ON_CALL(*vpx, codec_enc_config_default)
       .WillByDefault(DoAll(WithArg<1>([](vpx_codec_enc_cfg_t* cfg) {
                              memset(cfg, 0, sizeof(vpx_codec_enc_cfg_t));
@@ -2393,9 +2391,6 @@
 
   EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK, encoder.InitEncode(&settings, kSettings));
 
-  encoder.SetRates(VideoEncoder::RateControlParameters(bitrate_allocation,
-                                                       settings.maxFramerate));
-
   MockEncodedImageCallback callback;
   encoder.RegisterEncodeCompleteCallback(&callback);
   auto frame_generator = test::CreateSquareFrameGenerator(
diff --git a/test/fuzzers/vp9_encoder_references_fuzzer.cc b/test/fuzzers/vp9_encoder_references_fuzzer.cc
index eba4db5..9c793ae 100644
--- a/test/fuzzers/vp9_encoder_references_fuzzer.cc
+++ b/test/fuzzers/vp9_encoder_references_fuzzer.cc
@@ -174,6 +174,7 @@
   ~FieldTrials() override = default;
   std::string Lookup(absl::string_view key) const override {
     static constexpr absl::string_view kBinaryFieldTrials[] = {
+        "WebRTC-Vp9DependencyDescriptor",
         "WebRTC-Vp9ExternalRefCtrl",
         "WebRTC-Vp9IssueKeyFrameOnLayerDeactivation",
     };
