Extract video writing into separate target

Bug: None
Change-Id: I3af192606eb623e21a4d648fb69bb62c14ab8b0d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/355560
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42541}
diff --git a/api/test/pclf/BUILD.gn b/api/test/pclf/BUILD.gn
index 6a42f95..f88ce19 100644
--- a/api/test/pclf/BUILD.gn
+++ b/api/test/pclf/BUILD.gn
@@ -39,7 +39,7 @@
     "../../../rtc_base:stringutils",
     "../../../rtc_base:threading",
     "../../../test:fileutils",
-    "../../../test:video_test_support",
+    "../../../test:video_frame_writer",
     "../../../test/pc/e2e/analyzer/video:video_dumping",
     "../../audio:audio_mixer_api",
     "../../audio:audio_processing",
diff --git a/api/test/video/BUILD.gn b/api/test/video/BUILD.gn
index ab9da97..61af6b0 100644
--- a/api/test/video/BUILD.gn
+++ b/api/test/video/BUILD.gn
@@ -25,7 +25,6 @@
 
 rtc_library("video_frame_writer") {
   visibility = [ "*" ]
-  testonly = true
   sources = [ "video_frame_writer.h" ]
 
   deps = [ "../../video:video_frame" ]
diff --git a/api/video_codecs/BUILD.gn b/api/video_codecs/BUILD.gn
index f71fa08..b911e6b 100644
--- a/api/video_codecs/BUILD.gn
+++ b/api/video_codecs/BUILD.gn
@@ -381,6 +381,7 @@
     "../../rtc_base:logging",
     "../../test:fileutils",
     "../../test:test_support",
+    "../../test:video_frame_writer",
     "../../test:video_test_support",
     "//third_party/abseil-cpp/absl/types:variant",
   ]
diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn
index 90930ad..ddbf3c3 100644
--- a/modules/desktop_capture/BUILD.gn
+++ b/modules/desktop_capture/BUILD.gn
@@ -67,7 +67,6 @@
         "../../rtc_base/third_party/base64",
         "../../system_wrappers",
         "../../test:test_support",
-        "../../test:video_test_support",
       ]
       sources += [
         "screen_capturer_integration_test.cc",
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 6f39202..606a49f 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -838,6 +838,7 @@
       "../../rtc_base/synchronization:mutex",
       "../../rtc_base/system:no_unique_address",
       "../../test:test_support",
+      "../../test:video_frame_writer",
       "../../test:video_test_common",
       "../../test:video_test_support",
       "../rtp_rtcp:rtp_rtcp_format",
@@ -925,6 +926,7 @@
       "../../system_wrappers",
       "../../test:fileutils",
       "../../test:test_support",
+      "../../test:video_frame_writer",
       "../../test:video_test_common",
       "../../test:video_test_support",
       "../../video/config:encoder_config",
diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn
index 6e12b59..78985e1 100644
--- a/rtc_tools/BUILD.gn
+++ b/rtc_tools/BUILD.gn
@@ -261,9 +261,9 @@
       "../test:test_renderer",
       "../test:test_support",
       "../test:test_video_capturer",
+      "../test:video_frame_writer",
       "../test:video_test_common",
       "../test:video_test_constants",
-      "../test:video_test_support",
       "../test/time_controller:time_controller",
       "//third_party/abseil-cpp/absl/flags:flag",
       "//third_party/abseil-cpp/absl/flags:parse",
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 2a91b4d..3055c61 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -484,14 +484,12 @@
 
 rtc_library("fixed_fps_video_frame_writer_adapter") {
   visibility = [ "*" ]
-  testonly = true
   sources = [
     "testsupport/fixed_fps_video_frame_writer_adapter.cc",
     "testsupport/fixed_fps_video_frame_writer_adapter.h",
   ]
   deps = [
     ":video_frame_writer",
-    ":video_test_support",
     "../api/test/video:video_frame_writer",
     "../api/units:time_delta",
     "../api/video:video_frame",
@@ -502,9 +500,30 @@
 }
 
 rtc_library("video_frame_writer") {
-  sources = []
+  sources = [
+    "testsupport/frame_writer.h",
+    "testsupport/video_frame_writer.cc",
+    "testsupport/video_frame_writer.h",
+    "testsupport/y4m_frame_writer.cc",
+    "testsupport/yuv_frame_writer.cc",
+  ]
 
-  deps = []
+  deps = [
+    "../api:scoped_refptr",
+    "../api/test/video:video_frame_writer",
+    "../api/video:video_frame",
+    "../common_video",
+    "../rtc_base:buffer",
+    "../rtc_base:checks",
+    "../rtc_base:logging",
+  ]
+
+  if (!is_ios) {
+    deps += [ "//third_party:jpeg" ]
+    sources += [ "testsupport/jpeg_frame_writer.cc" ]
+  } else {
+    sources += [ "testsupport/jpeg_frame_writer_ios.cc" ]
+  }
 }
 
 rtc_library("video_test_support") {
@@ -512,14 +531,9 @@
 
   sources = [
     "testsupport/frame_reader.h",
-    "testsupport/frame_writer.h",
     "testsupport/mock/mock_frame_reader.h",
-    "testsupport/video_frame_writer.cc",
-    "testsupport/video_frame_writer.h",
     "testsupport/y4m_frame_reader.cc",
-    "testsupport/y4m_frame_writer.cc",
     "testsupport/yuv_frame_reader.cc",
-    "testsupport/yuv_frame_writer.cc",
   ]
 
   deps = [
@@ -549,13 +563,6 @@
     "../rtc_base/system:file_wrapper",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
-
-  if (!is_ios) {
-    deps += [ "//third_party:jpeg" ]
-    sources += [ "testsupport/jpeg_frame_writer.cc" ]
-  } else {
-    sources += [ "testsupport/jpeg_frame_writer_ios.cc" ]
-  }
 }
 
 if (rtc_include_tests) {
@@ -675,7 +682,7 @@
       deps = [
         ":fixed_fps_video_frame_writer_adapter",
         ":test_support",
-        ":video_test_support",
+        ":video_frame_writer",
         "../api/units:time_delta",
         "../api/units:timestamp",
         "../api/video:video_frame",
@@ -705,6 +712,7 @@
         ":test_support",
         ":test_support_test_artifacts",
         ":video_codec_tester",
+        ":video_frame_writer",
         ":video_test_common",
         ":video_test_support",
         ":y4m_frame_generator",
@@ -1346,6 +1354,8 @@
   ]
   deps = [
     ":scoped_key_value_config",
+    ":video_frame_writer",
+    ":video_test_support",
     "../api:array_view",
     "../api:create_frame_generator",
     "../api:frame_generator_api",
@@ -1381,7 +1391,6 @@
     "../rtc_base/synchronization:mutex",
     "../system_wrappers",
     "../test:fileutils",
-    "../test:video_test_support",
     "../video/config:streams_config",
     "//third_party/abseil-cpp/absl/strings",
     "//third_party/abseil-cpp/absl/types:optional",
diff --git a/test/pc/e2e/analyzer/video/BUILD.gn b/test/pc/e2e/analyzer/video/BUILD.gn
index b4de081..33e358a 100644
--- a/test/pc/e2e/analyzer/video/BUILD.gn
+++ b/test/pc/e2e/analyzer/video/BUILD.gn
@@ -63,7 +63,7 @@
     "video_dumping.h",
   ]
   deps = [
-    "../../../..:video_test_support",
+    "../../../..:video_frame_writer",
     "../../../../../api/test/video:video_frame_writer",
     "../../../../../api/video:video_frame",
     "../../../../../rtc_base:logging",
@@ -383,8 +383,8 @@
     "../../../..:fixed_fps_video_frame_writer_adapter",
     "../../../..:test_renderer",
     "../../../..:test_video_capturer",
+    "../../../..:video_frame_writer",
     "../../../..:video_test_common",
-    "../../../..:video_test_support",
     "../../../../../api:array_view",
     "../../../../../api:stats_observer_interface",
     "../../../../../api:video_quality_analyzer_api",
@@ -543,6 +543,7 @@
       ":video_dumping",
       "../../../..:fileutils",
       "../../../..:test_support",
+      "../../../..:video_frame_writer",
       "../../../..:video_test_support",
       "../../../../../api:scoped_refptr",
       "../../../../../api/video:video_frame",
diff --git a/video/BUILD.gn b/video/BUILD.gn
index e8449b5..227febc 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -555,9 +555,9 @@
         "../test:test_renderer",
         "../test:test_support",
         "../test:test_support_test_artifacts",
+        "../test:video_frame_writer",
         "../test:video_test_common",
         "../test:video_test_constants",
-        "../test:video_test_support",
         "config:streams_config",
         "//third_party/abseil-cpp/absl/algorithm:container",
         "//third_party/abseil-cpp/absl/flags:flag",