diff --git a/call/rtp_payload_params.cc b/call/rtp_payload_params.cc
index c6a56a3..ad8c1da 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"),
-                           "Enabled")) {
+          !absl::StartsWith(trials.Lookup("WebRTC-Vp9DependencyDescriptor"),
+                            "Disabled")) {
   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 7db38db..59c8f23 100644
--- a/call/rtp_payload_params_unittest.cc
+++ b/call/rtp_payload_params_unittest.cc
@@ -463,17 +463,9 @@
   ConvertAndCheck(1, 20, VideoFrameType::kVideoFrameDelta, kNoSync, {10, 15});
 }
 
-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_);
+TEST(RtpPayloadParamsVp9ToGenericTest, NoScalability) {
+  RtpPayloadState state;
+  RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
 
   EncodedImage encoded_image;
   CodecSpecificInfo codec_info;
@@ -520,12 +512,13 @@
   EXPECT_THAT(header.generic->chain_diffs, ElementsAre(3 - 1));
 }
 
-TEST_F(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith2Layers) {
+TEST(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith2Layers) {
   // Test with 2 temporal layers structure that is not used by webrtc:
   //    1---3   5
   //   /   /   /   ...
   //  0---2---4---
-  RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
+  RtpPayloadState state;
+  RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
 
   EncodedImage image;
   CodecSpecificInfo info;
@@ -624,10 +617,11 @@
   EXPECT_THAT(headers[5].generic->chain_diffs, ElementsAre(2));
 }
 
-TEST_F(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith3Layers) {
+TEST(RtpPayloadParamsVp9ToGenericTest, TemporalScalabilityWith3Layers) {
   // Test with 3 temporal layers structure that is not used by webrtc, but used
   // by chromium: https://imgur.com/pURAGvp
-  RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
+  RtpPayloadState state;
+  RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
 
   EncodedImage image;
   CodecSpecificInfo info;
@@ -768,11 +762,12 @@
   EXPECT_THAT(headers[8].generic->chain_diffs, ElementsAre(8));
 }
 
-TEST_F(RtpPayloadParamsVp9ToGenericTest, SpatialScalabilityKSvc) {
+TEST(RtpPayloadParamsVp9ToGenericTest, SpatialScalabilityKSvc) {
   //  1---3--
   //  |     ...
   //  0---2--
-  RtpPayloadParams params(/*ssrc=*/123, &state_, field_trials_);
+  RtpPayloadState state;
+  RtpPayloadParams params(/*ssrc=*/123, &state, FieldTrialBasedConfig());
 
   EncodedImage image;
   CodecSpecificInfo info;
diff --git a/call/rtp_video_sender.cc b/call/rtp_video_sender.cc
index 5b6712d..0e29a4c 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"),
-          "Enabled")),
+          "Disabled")),
       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 334d97c..a45473f 100644
--- a/call/rtp_video_sender_unittest.cc
+++ b/call/rtp_video_sender_unittest.cc
@@ -772,8 +772,6 @@
 
 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 f29ad92..88d3b7d 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"),
-                           "Enabled")),
+          !absl::StartsWith(trials.Lookup("WebRTC-Vp9DependencyDescriptor"),
+                            "Disabled")),
       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 e965384..41e349e 100644
--- a/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
+++ b/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
@@ -257,8 +257,6 @@
 }
 
 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),
@@ -301,8 +299,6 @@
 }
 
 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;
@@ -350,8 +346,6 @@
 }
 
 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;
@@ -487,8 +481,6 @@
 }
 
 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.
@@ -563,8 +555,6 @@
 }
 
 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,
@@ -763,8 +753,6 @@
 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.
@@ -2354,8 +2342,17 @@
                            absl::WrapUnique<LibvpxInterface>(vpx), trials);
 
   VideoCodec settings = DefaultCodecSettings();
-  const int kNumSpatialLayers = 3;
-  ConfigureSvc(settings, kNumSpatialLayers, /*num_temporal_layers=*/3);
+  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);
+    }
+  }
   vpx_image_t img;
 
   // Speed settings per spatial layer, for TL0.
@@ -2367,6 +2364,11 @@
   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));
@@ -2391,6 +2393,9 @@
 
   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 9c793ae..eba4db5 100644
--- a/test/fuzzers/vp9_encoder_references_fuzzer.cc
+++ b/test/fuzzers/vp9_encoder_references_fuzzer.cc
@@ -174,7 +174,6 @@
   ~FieldTrials() override = default;
   std::string Lookup(absl::string_view key) const override {
     static constexpr absl::string_view kBinaryFieldTrials[] = {
-        "WebRTC-Vp9DependencyDescriptor",
         "WebRTC-Vp9ExternalRefCtrl",
         "WebRTC-Vp9IssueKeyFrameOnLayerDeactivation",
     };
