Add support for y4m and ivf files in VideoCodecTestFixture.

Bug: webrtc:496266459
Change-Id: Ia20dfd42b57c515072e6c408cb332f4ad60f893c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/465620
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47514}
diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
index b1bce31..092cd05 100644
--- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
+++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc
@@ -75,6 +75,7 @@
 #include "test/testsupport/file_utils.h"
 #include "test/testsupport/frame_reader.h"
 #include "test/testsupport/frame_writer.h"
+#include "test/testsupport/ivf_frame_reader.h"
 #include "test/video_codec_settings.h"
 #include "video/config/encoder_stream_factory.h"
 #include "video/config/video_encoder_config.h"
@@ -121,7 +122,7 @@
   const std::vector<SpatialLayer> layers = GetSvcConfig(
       codec_settings->width, codec_settings->height, kDefaultMaxFramerateFps,
       /*first_active_layer=*/0, num_spatial_layers, num_temporal_layers,
-      /* is_screen_sharing = */ false);
+      codec_settings->mode == VideoCodecMode::kScreensharing);
   ASSERT_EQ(num_spatial_layers, layers.size())
       << "GetSvcConfig returned fewer spatial layers than configured.";
 
@@ -770,10 +771,18 @@
   int clip_height = config_.clip_height.value_or(config_.codec_settings.height);
 
   // Create file objects for quality analysis.
-  source_frame_reader_ = CreateYuvFrameReader(
-      config_.filepath,
-      Resolution({.width = clip_width, .height = clip_height}),
-      YuvFrameReaderImpl::RepeatMode::kPingPong);
+  if (config_.filepath.ends_with(".yuv")) {
+    source_frame_reader_ = CreateYuvFrameReader(
+        config_.filepath,
+        Resolution({.width = clip_width, .height = clip_height}),
+        YuvFrameReaderImpl::RepeatMode::kPingPong);
+  } else if (config_.filepath.ends_with(".y4m")) {
+    source_frame_reader_ = CreateY4mFrameReader(
+        config_.filepath, YuvFrameReaderImpl::RepeatMode::kPingPong);
+  } else if (config_.filepath.ends_with(".ivf")) {
+    source_frame_reader_ = std::make_unique<IvfFrameReader>(
+        env_, config_.filepath, /*repeat=*/true);
+  }
 
   RTC_DCHECK(encoded_frame_writers_.empty());
   RTC_DCHECK(decoded_frame_writers_.empty());