diff --git a/test/datarate_test.cc b/test/datarate_test.cc
index eff777d..d6c8c00 100644
--- a/test/datarate_test.cc
+++ b/test/datarate_test.cc
@@ -237,6 +237,55 @@
 
 class DatarateTestFrameDropRealtime : public DatarateTestFrameDropLarge {};
 
+// Params: aq mode.
+class DatarateTestSpeedChangeRealtime
+    : public ::libaom_test::CodecTestWith2Params<libaom_test::TestMode,
+                                                 unsigned int>,
+      public DatarateTest {
+ public:
+  DatarateTestSpeedChangeRealtime() : DatarateTest(GET_PARAM(0)) {
+    aq_mode_ = GET_PARAM(1);
+    speed_change_test_ = true;
+  }
+
+ protected:
+  virtual ~DatarateTestSpeedChangeRealtime() {}
+
+  virtual void SetUp() {
+    InitializeConfig();
+    SetMode(GET_PARAM(1));
+    ResetModel();
+  }
+
+  virtual void ChangingSpeedTest() {
+    cfg_.rc_buf_initial_sz = 500;
+    cfg_.rc_buf_optimal_sz = 500;
+    cfg_.rc_buf_sz = 1000;
+    cfg_.rc_undershoot_pct = 20;
+    cfg_.rc_undershoot_pct = 20;
+    cfg_.rc_dropframe_thresh = 10;
+    cfg_.rc_min_quantizer = 0;
+    cfg_.rc_max_quantizer = 50;
+    cfg_.rc_end_usage = AOM_CBR;
+    cfg_.rc_target_bitrate = 200;
+    cfg_.g_lag_in_frames = 0;
+    cfg_.g_error_resilient = 1;
+    // TODO(marpan): Investigate datarate target failures with a smaller
+    // keyframe interval (128).
+    cfg_.kf_max_dist = 9999;
+    cfg_.rc_dropframe_thresh = 0;
+    ::libaom_test::I420VideoSource video("hantro_collage_w352h288.yuv", 352,
+                                         288, 30, 1, 0, 100);
+
+    ResetModel();
+    ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
+    ASSERT_GE(effective_datarate_, cfg_.rc_target_bitrate * 0.85)
+        << " The datarate for the file is lower than target by too much!";
+    ASSERT_LE(effective_datarate_, cfg_.rc_target_bitrate * 1.16)
+        << " The datarate for the file is greater than target by too much!";
+  }
+};
+
 // Check basic rate targeting for VBR mode.
 TEST_P(DatarateTestRealtime, BasicRateTargetingVBR) {
   BasicRateTargetingVBRTest();
@@ -260,6 +309,10 @@
   ChangingDropFrameThreshTest();
 }
 
+TEST_P(DatarateTestSpeedChangeRealtime, ChangingSpeedTest) {
+  ChangingSpeedTest();
+}
+
 AV1_INSTANTIATE_TEST_CASE(DatarateTestLarge,
                           ::testing::Values(::libaom_test::kRealTime),
                           ::testing::Range(5, 7), ::testing::Values(0, 3),
@@ -278,5 +331,9 @@
                           ::testing::Values(::libaom_test::kRealTime),
                           ::testing::Range(7, 9), ::testing::Values(0, 3));
 
+AV1_INSTANTIATE_TEST_CASE(DatarateTestSpeedChangeRealtime,
+                          ::testing::Values(::libaom_test::kRealTime),
+                          ::testing::Values(0, 3));
+
 }  // namespace
 }  // namespace datarate_test
diff --git a/test/datarate_test.h b/test/datarate_test.h
index 388915f..3c15731 100644
--- a/test/datarate_test.h
+++ b/test/datarate_test.h
@@ -24,7 +24,8 @@
 class DatarateTest : public ::libaom_test::EncoderTest {
  public:
   explicit DatarateTest(const ::libaom_test::CodecFactory *codec)
-      : EncoderTest(codec) {}
+      : EncoderTest(codec), set_cpu_used_(0), aq_mode_(0),
+        speed_change_test_(false) {}
 
  protected:
   virtual ~DatarateTest() {}
@@ -64,6 +65,21 @@
       }
     }
 
+    if (speed_change_test_) {
+      if (video->frame() == 0) {
+        encoder->Control(AOME_SET_CPUUSED, 8);
+      }
+      if (video->frame() == 30) {
+        encoder->Control(AOME_SET_CPUUSED, 7);
+      }
+      if (video->frame() == 60) {
+        encoder->Control(AOME_SET_CPUUSED, 6);
+      }
+      if (video->frame() == 90) {
+        encoder->Control(AOME_SET_CPUUSED, 7);
+      }
+    }
+
     if (denoiser_offon_test_) {
       ASSERT_GT(denoiser_offon_period_, 0)
           << "denoiser_offon_period_ is not positive.";
@@ -134,6 +150,7 @@
   int denoiser_offon_test_;
   int denoiser_offon_period_;
   unsigned int aq_mode_;
+  bool speed_change_test_;
 };
 
 }  // namespace
