diff --git a/modules/video_coding/codecs/test/plot_videoprocessor_integrationtest.cc b/modules/video_coding/codecs/test/plot_videoprocessor_integrationtest.cc
index b8f152d..b715d2e 100644
--- a/modules/video_coding/codecs/test/plot_videoprocessor_integrationtest.cc
+++ b/modules/video_coding/codecs/test/plot_videoprocessor_integrationtest.cc
@@ -10,6 +10,8 @@
 
 #include "webrtc/modules/video_coding/codecs/test/videoprocessor_integrationtest.h"
 
+#include "webrtc/test/testsupport/fileutils.h"
+
 namespace webrtc {
 namespace test {
 
@@ -21,7 +23,6 @@
 const bool kHwCodec[] = {false};
 
 // Codec settings.
-const bool kUseSingleCore = false;
 const bool kResilienceOn = false;
 const int kNumTemporalLayers = 1;
 const bool kDenoisingOn = false;
@@ -30,8 +31,7 @@
 const bool kFrameDropperOn = false;
 
 // Test settings.
-const bool kVerboseLogging = true;
-const float kPacketLoss = 0.0f;
+const bool kUseSingleCore = false;
 const VisualizationParams kVisualizationParams = {
     false,  // save_encoded_ivf
     false,  // save_decoded_y4m
@@ -57,8 +57,13 @@
                int height,
                int framerate,
                const std::string& filename) {
-    SetTestConfig(&config_, hw_codec_, kUseSingleCore, kPacketLoss, filename,
-                  kVerboseLogging);
+    config_.filename = filename;
+    config_.input_filename = ResourcePath(filename, "yuv");
+    config_.output_filename =
+        TempFilename(OutputPath(), "plot_videoprocessor_integrationtest");
+    config_.use_single_core = kUseSingleCore;
+    config_.verbose = true;
+    config_.hw_codec = hw_codec_;
     SetCodecSettings(&config_, codec_type_, kNumTemporalLayers,
                      kErrorConcealmentOn, kDenoisingOn, kFrameDropperOn,
                      kSpatialResizeOn, kResilienceOn, width, height);
diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc b/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
index f90e5dd..21ae84c 100644
--- a/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
+++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest.cc
@@ -78,23 +78,6 @@
 
 VideoProcessorIntegrationTest::~VideoProcessorIntegrationTest() = default;
 
-void VideoProcessorIntegrationTest::SetTestConfig(TestConfig* config,
-                                                  bool hw_codec,
-                                                  bool use_single_core,
-                                                  float packet_loss_probability,
-                                                  std::string filename,
-                                                  bool verbose_logging) {
-  config->filename = filename;
-  config->input_filename = ResourcePath(filename, "yuv");
-  // Generate an output filename in a safe way.
-  config->output_filename =
-      TempFilename(OutputPath(), "videoprocessor_integrationtest");
-  config->networking_config.packet_loss_probability = packet_loss_probability;
-  config->use_single_core = use_single_core;
-  config->verbose = verbose_logging;
-  config->hw_codec = hw_codec;
-}
-
 void VideoProcessorIntegrationTest::SetCodecSettings(TestConfig* config,
                                                      VideoCodecType codec_type,
                                                      int num_temporal_layers,
diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest.h b/modules/video_coding/codecs/test/videoprocessor_integrationtest.h
index a3c512b..6c9f3df 100644
--- a/modules/video_coding/codecs/test/videoprocessor_integrationtest.h
+++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest.h
@@ -93,13 +93,6 @@
   VideoProcessorIntegrationTest();
   ~VideoProcessorIntegrationTest() override;
 
-  static void SetTestConfig(TestConfig* config,
-                            bool hw_codec,
-                            bool use_single_core,
-                            float packet_loss_probability,
-                            std::string filename,
-                            bool verbose_logging);
-
   static void SetCodecSettings(TestConfig* config,
                                VideoCodecType codec_type,
                                int num_temporal_layers,
diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest_libvpx.cc b/modules/video_coding/codecs/test/videoprocessor_integrationtest_libvpx.cc
index 062f662..9162b92 100644
--- a/modules/video_coding/codecs/test/videoprocessor_integrationtest_libvpx.cc
+++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest_libvpx.cc
@@ -12,24 +12,17 @@
 
 #include <vector>
 
+#include "webrtc/test/testsupport/fileutils.h"
+
 namespace webrtc {
 namespace test {
 
 namespace {
 
-// Test settings.
-// Only allow encoder/decoder to use single core, for predictability.
-const bool kUseSingleCore = true;
-const bool kVerboseLogging = false;
-const bool kHwCodec = false;
-
 // Codec settings.
 const bool kResilienceOn = true;
-
-// Default sequence is foreman (CIF): may be better to use VGA for resize test.
 const int kCifWidth = 352;
 const int kCifHeight = 288;
-const char kForemanCif[] = "foreman_cif";
 #if !defined(WEBRTC_IOS)
 const int kNumFramesShort = 100;
 #endif
@@ -39,15 +32,29 @@
 
 }  // namespace
 
+class VideoProcessorIntegrationTestLibvpx
+    : public VideoProcessorIntegrationTest {
+ protected:
+  VideoProcessorIntegrationTestLibvpx() {
+    config_.filename = "foreman_cif";
+    config_.input_filename = ResourcePath(config_.filename, "yuv");
+    config_.output_filename =
+        TempFilename(OutputPath(), "videoprocessor_integrationtest_libvpx");
+    config_.networking_config.packet_loss_probability = 0.0;
+    // Only allow encoder/decoder to use single core, for predictability.
+    config_.use_single_core = true;
+    config_.verbose = false;
+    config_.hw_codec = false;
+  }
+};
+
 // Fails on iOS. See webrtc:4755.
 #if !defined(WEBRTC_IOS)
 
 #if !defined(RTC_DISABLE_VP9)
 // VP9: Run with no packet loss and fixed bitrate. Quality should be very high.
 // One key frame (first frame only) in sequence.
-TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossVP9) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
-                kVerboseLogging);
+TEST_F(VideoProcessorIntegrationTestLibvpx, Process0PercentPacketLossVP9) {
   SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -67,9 +74,8 @@
 
 // VP9: Run with 5% packet loss and fixed bitrate. Quality should be a bit
 // lower. One key frame (first frame only) in sequence.
-TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLossVP9) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.05f, kForemanCif,
-                kVerboseLogging);
+TEST_F(VideoProcessorIntegrationTestLibvpx, Process5PercentPacketLossVP9) {
+  config_.networking_config.packet_loss_probability = 0.05f;
   SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -91,9 +97,7 @@
 // low to high to medium. Check that quality and encoder response to the new
 // target rate/per-frame bandwidth (for each rate update) is within limits.
 // One key frame (first frame only) in sequence.
-TEST_F(VideoProcessorIntegrationTest, ProcessNoLossChangeBitRateVP9) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
-                kVerboseLogging);
+TEST_F(VideoProcessorIntegrationTestLibvpx, ProcessNoLossChangeBitRateVP9) {
   SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -122,10 +126,8 @@
 // for the rate control metrics can be lower. One key frame (first frame only).
 // Note: quality after update should be higher but we currently compute quality
 // metrics averaged over whole sequence run.
-TEST_F(VideoProcessorIntegrationTest,
+TEST_F(VideoProcessorIntegrationTestLibvpx,
        ProcessNoLossChangeFrameRateFrameDropVP9) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
-                kVerboseLogging);
   SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -148,9 +150,7 @@
 }
 
 // VP9: Run with no packet loss and denoiser on. One key frame (first frame).
-TEST_F(VideoProcessorIntegrationTest, ProcessNoLossDenoiserOnVP9) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
-                kVerboseLogging);
+TEST_F(VideoProcessorIntegrationTestLibvpx, ProcessNoLossDenoiserOnVP9) {
   SetCodecSettings(&config_, kVideoCodecVP9, 1, false, true, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -171,10 +171,8 @@
 // Run with no packet loss, at low bitrate.
 // spatial_resize is on, for this low bitrate expect one resize in sequence.
 // Resize happens on delta frame. Expect only one key frame (first frame).
-TEST_F(VideoProcessorIntegrationTest,
+TEST_F(VideoProcessorIntegrationTestLibvpx,
        DISABLED_ProcessNoLossSpatialResizeFrameDropVP9) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
-                kVerboseLogging);
   SetCodecSettings(&config_, kVideoCodecVP9, 1, false, false, true, true,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -200,9 +198,7 @@
 // VP8: Run with no packet loss and fixed bitrate. Quality should be very high.
 // One key frame (first frame only) in sequence. Setting |key_frame_interval|
 // to -1 below means no periodic key frames in test.
-TEST_F(VideoProcessorIntegrationTest, ProcessZeroPacketLoss) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
-                kVerboseLogging);
+TEST_F(VideoProcessorIntegrationTestLibvpx, ProcessZeroPacketLoss) {
   SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -222,9 +218,8 @@
 
 // VP8: Run with 5% packet loss and fixed bitrate. Quality should be a bit
 // lower. One key frame (first frame only) in sequence.
-TEST_F(VideoProcessorIntegrationTest, Process5PercentPacketLoss) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.05f, kForemanCif,
-                kVerboseLogging);
+TEST_F(VideoProcessorIntegrationTestLibvpx, Process5PercentPacketLoss) {
+  config_.networking_config.packet_loss_probability = 0.05f;
   SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -244,9 +239,8 @@
 
 // VP8: Run with 10% packet loss and fixed bitrate. Quality should be lower.
 // One key frame (first frame only) in sequence.
-TEST_F(VideoProcessorIntegrationTest, Process10PercentPacketLoss) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.1f, kForemanCif,
-                kVerboseLogging);
+TEST_F(VideoProcessorIntegrationTestLibvpx, Process10PercentPacketLoss) {
+  config_.networking_config.packet_loss_probability = 0.1f;
   SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -286,9 +280,8 @@
 #else
 #define MAYBE_ProcessNoLossChangeBitRateVP8 ProcessNoLossChangeBitRateVP8
 #endif
-TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossChangeBitRateVP8) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
-                kVerboseLogging);
+TEST_F(VideoProcessorIntegrationTestLibvpx,
+       MAYBE_ProcessNoLossChangeBitRateVP8) {
   SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -325,10 +318,8 @@
 #define MAYBE_ProcessNoLossChangeFrameRateFrameDropVP8 \
   ProcessNoLossChangeFrameRateFrameDropVP8
 #endif
-TEST_F(VideoProcessorIntegrationTest,
+TEST_F(VideoProcessorIntegrationTestLibvpx,
        MAYBE_ProcessNoLossChangeFrameRateFrameDropVP8) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
-                kVerboseLogging);
   SetCodecSettings(&config_, kVideoCodecVP8, 1, false, true, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
@@ -362,9 +353,8 @@
 #else
 #define MAYBE_ProcessNoLossTemporalLayersVP8 ProcessNoLossTemporalLayersVP8
 #endif
-TEST_F(VideoProcessorIntegrationTest, MAYBE_ProcessNoLossTemporalLayersVP8) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
-                kVerboseLogging);
+TEST_F(VideoProcessorIntegrationTestLibvpx,
+       MAYBE_ProcessNoLossTemporalLayersVP8) {
   SetCodecSettings(&config_, kVideoCodecVP8, 3, false, true, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
diff --git a/modules/video_coding/codecs/test/videoprocessor_integrationtest_openh264.cc b/modules/video_coding/codecs/test/videoprocessor_integrationtest_openh264.cc
index 41e42ed..e4c60e7 100644
--- a/modules/video_coding/codecs/test/videoprocessor_integrationtest_openh264.cc
+++ b/modules/video_coding/codecs/test/videoprocessor_integrationtest_openh264.cc
@@ -12,6 +12,8 @@
 
 #include <vector>
 
+#include "webrtc/test/testsupport/fileutils.h"
+
 namespace webrtc {
 namespace test {
 
@@ -19,33 +21,38 @@
 
 namespace {
 
-// Test settings.
-// Only allow encoder/decoder to use single core, for predictability.
-const bool kUseSingleCore = true;
-const bool kVerboseLogging = false;
-const bool kHwCodec = false;
-
 // Codec settings.
 const bool kResilienceOn = true;
-
-// Default sequence is foreman (CIF): may be better to use VGA for resize test.
 const int kCifWidth = 352;
 const int kCifHeight = 288;
-const char kForemanCif[] = "foreman_cif";
 const int kNumFrames = 100;
 
 const std::nullptr_t kNoVisualizationParams = nullptr;
 
 }  // namespace
 
+class VideoProcessorIntegrationTestOpenH264
+    : public VideoProcessorIntegrationTest {
+ protected:
+  VideoProcessorIntegrationTestOpenH264() {
+    config_.filename = "foreman_cif";
+    config_.input_filename = ResourcePath(config_.filename, "yuv");
+    config_.output_filename =
+        TempFilename(OutputPath(), "videoprocessor_integrationtest_libvpx");
+    config_.networking_config.packet_loss_probability = 0.0;
+    // Only allow encoder/decoder to use single core, for predictability.
+    config_.use_single_core = true;
+    config_.verbose = false;
+    config_.hw_codec = false;
+  }
+};
+
 // H264: Run with no packet loss and fixed bitrate. Quality should be very high.
 // Note(hbos): The PacketManipulatorImpl code used to simulate packet loss in
 // these unittests appears to drop "packets" in a way that is not compatible
 // with H264. Therefore ProcessXPercentPacketLossH264, X != 0, unittests have
 // not been added.
-TEST_F(VideoProcessorIntegrationTest, Process0PercentPacketLossH264) {
-  SetTestConfig(&config_, kHwCodec, kUseSingleCore, 0.0f, kForemanCif,
-                kVerboseLogging);
+TEST_F(VideoProcessorIntegrationTestOpenH264, Process0PercentPacketLossH264) {
   SetCodecSettings(&config_, kVideoCodecH264, 1, false, false, true, false,
                    kResilienceOn, kCifWidth, kCifHeight);
 
