diff --git a/test/ratectrl_qmode_test.cc b/test/ratectrl_qmode_test.cc
index 62239f6..e9eb257 100644
--- a/test/ratectrl_qmode_test.cc
+++ b/test/ratectrl_qmode_test.cc
@@ -20,8 +20,86 @@
 #include "av1/ratectrl_qmode.h"
 #include "av1/reference_manager.h"
 #include "test/mock_ratectrl_qmode.h"
+#include "test/video_source.h"
 #include "third_party/googletest/src/googletest/include/gtest/gtest.h"
 
+namespace {
+
+// Reads a whitespace-delimited string from stream, and parses it as a double.
+// Returns an empty string if the entire string was successfully parsed as a
+// double, or an error messaage if not.
+std::string ReadDouble(std::istream &stream, double *value) {
+  std::string word;
+  stream >> word;
+  if (word.empty()) {
+    return "Unexpectedly reached end of input";
+  }
+  char *end;
+  *value = std::strtod(word.c_str(), &end);
+  if (*end != '\0') {
+    return "Unexpected characters found: " + word;
+  }
+  return "";
+}
+
+void ReadFirstpassInfo(const std::string &filename,
+                       aom::FirstpassInfo *firstpass_info) {
+  // These golden files are generated by the following command line:
+  // ./aomenc --width=352 --height=288 --fps=30/1 --limit=250 --codec=av1
+  // --cpu-used=3 --end-usage=q --cq-level=36 --threads=0 --profile=0
+  // --lag-in-frames=35 --min-q=0 --max-q=63 --auto-alt-ref=1 --passes=2
+  // --kf-max-dist=160 --kf-min-dist=0 --drop-frame=0
+  // --static-thresh=0 --minsection-pct=0 --maxsection-pct=2000
+  // --arnr-maxframes=7
+  // --arnr-strength=5 --sharpness=0 --undershoot-pct=100 --overshoot-pct=100
+  // --frame-parallel=0
+  // --tile-columns=0 -o output.webm hantro_collage_w352h288.yuv
+  // First pass stats are written out in av1_get_second_pass_params right after
+  // calculate_gf_length.
+  std::ifstream firstpass_stats_file(libaom_test::GetDataPath() + "/" +
+                                     filename);
+  firstpass_info->num_mbs_16x16 = (352 / 16 + 1) * (288 / 16 + 1);
+  std::string newline;
+  while (std::getline(firstpass_stats_file, newline)) {
+    std::istringstream iss(newline);
+    FIRSTPASS_STATS firstpass_stats_input = {};
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.frame), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.weight), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.intra_error), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.frame_avg_wavelet_energy),
+              "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.coded_error), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.sr_coded_error), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.pcnt_inter), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.pcnt_motion), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.pcnt_second_ref), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.pcnt_neutral), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.intra_skip_pct), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.inactive_zone_rows), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.inactive_zone_cols), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.MVr), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.mvr_abs), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.MVc), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.mvc_abs), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.MVrv), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.MVcv), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.mv_in_out_count), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.new_mv_count), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.duration), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.count), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.raw_error_stdev), "");
+    iss >> firstpass_stats_input.is_flash;
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.noise_var), "");
+    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.cor_coeff), "");
+    ASSERT_TRUE(iss.eof()) << "Too many fields on line "
+                           << firstpass_info->stats_list.size() + 1 << "\n"
+                           << newline;
+    firstpass_info->stats_list.push_back(firstpass_stats_input);
+  }
+}
+
+}  // namespace
+
 namespace aom {
 
 using ::testing::ElementsAre;
@@ -662,76 +740,10 @@
   }
 }
 
-// Reads a whitespace-delimited string from stream, and parses it as a double.
-// Returns an empty string if the entire string was successfully parsed as a
-// double, or an error messaage if not.
-std::string ReadDouble(std::istream &stream, double *value) {
-  std::string word;
-  stream >> word;
-  if (word.empty()) {
-    return "Unexpectedly reached end of input";
-  }
-  char *end;
-  *value = std::strtod(word.c_str(), &end);
-  if (*end != '\0') {
-    return "Unexpected characters found: " + word;
-  }
-  return "";
-}
-
 TEST(RateControlQModeTest, TestKeyframeDetection) {
   FirstpassInfo firstpass_info;
-  // These golden files are generated by the following command line:
-  // ./aomenc --width=352 --height=288 --fps=30/1 --limit=250 --codec=av1
-  // --cpu-used=3 --end-usage=q --cq-level=36 --threads=0 --profile=0
-  // --lag-in-frames=35 --min-q=0 --max-q=63 --auto-alt-ref=1 --passes=2
-  // --kf-max-dist=160 --kf-min-dist=0 --drop-frame=0
-  // --static-thresh=0 --minsection-pct=0 --maxsection-pct=2000
-  // --arnr-maxframes=7
-  // --arnr-strength=5 --sharpness=0 --undershoot-pct=100 --overshoot-pct=100
-  // --frame-parallel=0
-  // --tile-columns=0 -o output.webm hantro_collage_w352h288.yuv
-  // First pass stats are written out in av1_get_second_pass_params right after
-  // calculate_gf_length.
-  std::ifstream firstpass_stats_file("firstpass_stats");
-  firstpass_info.num_mbs_16x16 = (352 / 16 + 1) * (288 / 16 + 1);
-  std::string newline;
-  while (std::getline(firstpass_stats_file, newline)) {
-    std::istringstream iss(newline);
-    FIRSTPASS_STATS firstpass_stats_input = {};
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.frame), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.weight), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.intra_error), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.frame_avg_wavelet_energy),
-              "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.coded_error), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.sr_coded_error), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.pcnt_inter), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.pcnt_motion), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.pcnt_second_ref), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.pcnt_neutral), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.intra_skip_pct), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.inactive_zone_rows), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.inactive_zone_cols), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.MVr), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.mvr_abs), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.MVc), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.mvc_abs), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.MVrv), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.MVcv), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.mv_in_out_count), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.new_mv_count), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.duration), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.count), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.raw_error_stdev), "");
-    iss >> firstpass_stats_input.is_flash;
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.noise_var), "");
-    ASSERT_EQ(ReadDouble(iss, &firstpass_stats_input.cor_coeff), "");
-    ASSERT_TRUE(iss.eof()) << "Too many fields on line "
-                           << firstpass_info.stats_list.size() + 1 << "\n"
-                           << newline;
-    firstpass_info.stats_list.push_back(firstpass_stats_input);
-  }
+  const std::string kFirstpassStatsFile = "firstpass_stats";
+  ReadFirstpassInfo(kFirstpassStatsFile, &firstpass_info);
   EXPECT_THAT(GetKeyFrameList(firstpass_info),
               ElementsAre(0, 30, 60, 90, 120, 150, 180, 210, 240));
 }
