Introduce factory method for IVF frame generator

Bug: webrtc:10138
Change-Id: I9039aa289c935b7fcc2f3ab4ddec6413eb1302c4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161324
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30011}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 4265f97..8bb6f06 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -459,6 +459,7 @@
       ":frame_generator_api",
       "../system_wrappers",
       "../test:video_test_common",
+      "../test:video_test_support",
       "//third_party/abseil-cpp/absl/types:optional",
     ]
   }
diff --git a/api/test/create_frame_generator.cc b/api/test/create_frame_generator.cc
index b6e62a4..6b5b9fa 100644
--- a/api/test/create_frame_generator.cc
+++ b/api/test/create_frame_generator.cc
@@ -13,6 +13,7 @@
 #include <utility>
 
 #include "test/frame_generator.h"
+#include "test/testsupport/ivf_video_frame_generator.h"
 
 namespace webrtc {
 namespace test {
@@ -35,6 +36,12 @@
                                            frame_repeat_count);
 }
 
+// Creates a frame generator that repeatedly plays an ivf file.
+std::unique_ptr<FrameGeneratorInterface> CreateFromYuvFileFrameGenerator(
+    std::string file) {
+  return std::make_unique<IvfVideoFrameGenerator>(std::move(file));
+}
+
 std::unique_ptr<FrameGeneratorInterface>
 CreateScrollingInputFromYuvFilesFrameGenerator(
     Clock* clock,
diff --git a/api/test/create_frame_generator.h b/api/test/create_frame_generator.h
index 692c964..920ff86 100644
--- a/api/test/create_frame_generator.h
+++ b/api/test/create_frame_generator.h
@@ -41,6 +41,10 @@
     size_t height,
     int frame_repeat_count);
 
+// Creates a frame generator that repeatedly plays an ivf file.
+std::unique_ptr<FrameGeneratorInterface> CreateFromYuvFileFrameGenerator(
+    std::string file);
+
 // Creates a frame generator which takes a set of yuv files (wrapping a
 // frame generator created by CreateFromYuvFile() above), but outputs frames
 // that have been cropped to specified resolution: source_width/source_height