Refactor creation of ColorSpace test data

Bug: webrtc:8651
Change-Id: I2ebb5fcdc260af19d04513ab5f3d76f81a3b4ca9
Reviewed-on: https://webrtc-review.googlesource.com/c/114282
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26012}
diff --git a/common_video/test/BUILD.gn b/common_video/test/BUILD.gn
new file mode 100644
index 0000000..d9cf786
--- /dev/null
+++ b/common_video/test/BUILD.gn
@@ -0,0 +1,22 @@
+# Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS.  All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+import("../../webrtc.gni")
+
+if (rtc_include_tests) {
+  rtc_source_set("utilities") {
+    testonly = true
+    sources = [
+      "utilities.cc",
+      "utilities.h",
+    ]
+    deps = [
+      "../../api/video:video_frame",
+    ]
+  }
+}
diff --git a/common_video/test/utilities.cc b/common_video/test/utilities.cc
new file mode 100644
index 0000000..5769f74
--- /dev/null
+++ b/common_video/test/utilities.cc
@@ -0,0 +1,42 @@
+/*
+ *  Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+#include "common_video/test/utilities.h"
+
+namespace webrtc {
+
+HdrMetadata CreateTestHdrMetadata() {
+  // Random but reasonable (in the sense of a valid range) HDR metadata.
+  HdrMetadata hdr_metadata;
+  hdr_metadata.mastering_metadata.luminance_max = 2000.0;
+  hdr_metadata.mastering_metadata.luminance_min = 2.0001;
+  hdr_metadata.mastering_metadata.primary_r.x = 0.3003;
+  hdr_metadata.mastering_metadata.primary_r.y = 0.4004;
+  hdr_metadata.mastering_metadata.primary_g.x = 0.3201;
+  hdr_metadata.mastering_metadata.primary_g.y = 0.4604;
+  hdr_metadata.mastering_metadata.primary_b.x = 0.3409;
+  hdr_metadata.mastering_metadata.primary_b.y = 0.4907;
+  hdr_metadata.mastering_metadata.white_point.x = 0.4103;
+  hdr_metadata.mastering_metadata.white_point.y = 0.4806;
+  hdr_metadata.max_content_light_level = 2345;
+  hdr_metadata.max_frame_average_light_level = 1789;
+  return hdr_metadata;
+}
+
+ColorSpace CreateTestColorSpace(bool with_hdr_metadata) {
+  HdrMetadata hdr_metadata = CreateTestHdrMetadata();
+  return ColorSpace(
+      ColorSpace::PrimaryID::kBT709, ColorSpace::TransferID::kGAMMA22,
+      ColorSpace::MatrixID::kSMPTE2085, ColorSpace::RangeID::kFull,
+      ColorSpace::ChromaSiting::kCollocated,
+      ColorSpace::ChromaSiting::kCollocated,
+      with_hdr_metadata ? &hdr_metadata : nullptr);
+}
+
+}  // namespace webrtc
diff --git a/common_video/test/utilities.h b/common_video/test/utilities.h
new file mode 100644
index 0000000..d50df62
--- /dev/null
+++ b/common_video/test/utilities.h
@@ -0,0 +1,22 @@
+/*
+ *  Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef COMMON_VIDEO_TEST_UTILITIES_H_
+#define COMMON_VIDEO_TEST_UTILITIES_H_
+
+#include "api/video/color_space.h"
+
+namespace webrtc {
+
+HdrMetadata CreateTestHdrMetadata();
+ColorSpace CreateTestColorSpace(bool with_hdr_metadata);
+
+}  // namespace webrtc
+#endif  // COMMON_VIDEO_TEST_UTILITIES_H_
diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn
index 807203c..e7f93eb 100644
--- a/modules/rtp_rtcp/BUILD.gn
+++ b/modules/rtp_rtcp/BUILD.gn
@@ -431,6 +431,7 @@
       "../../api/video_codecs:video_codecs_api",
       "../../call:rtp_receiver",
       "../../common_video:common_video",
+      "../../common_video/test:utilities",
       "../../logging:mocks",
       "../../logging:rtc_event_log_api",
       "../../rtc_base:checks",
diff --git a/modules/rtp_rtcp/source/rtp_packet_unittest.cc b/modules/rtp_rtcp/source/rtp_packet_unittest.cc
index e53125b..0d24272 100644
--- a/modules/rtp_rtcp/source/rtp_packet_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_packet_unittest.cc
@@ -10,6 +10,7 @@
 #include "modules/rtp_rtcp/source/rtp_packet_received.h"
 #include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
 
+#include "common_video/test/utilities.h"
 #include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
 #include "modules/rtp_rtcp/source/rtp_header_extensions.h"
 #include "rtc_base/random.h"
@@ -186,34 +187,6 @@
     0x00, 0x00, 0x00, 0x00};
 // clang-format on
 
-HdrMetadata CreateTestHdrMetadata() {
-  // Random but reasonable HDR metadata.
-  HdrMetadata hdr_metadata;
-  hdr_metadata.mastering_metadata.luminance_max = 2000.0;
-  hdr_metadata.mastering_metadata.luminance_min = 2.0001;
-  hdr_metadata.mastering_metadata.primary_r.x = 0.3003;
-  hdr_metadata.mastering_metadata.primary_r.y = 0.4004;
-  hdr_metadata.mastering_metadata.primary_g.x = 0.3201;
-  hdr_metadata.mastering_metadata.primary_g.y = 0.4604;
-  hdr_metadata.mastering_metadata.primary_b.x = 0.3409;
-  hdr_metadata.mastering_metadata.primary_b.y = 0.4907;
-  hdr_metadata.mastering_metadata.white_point.x = 0.4103;
-  hdr_metadata.mastering_metadata.white_point.y = 0.4806;
-  hdr_metadata.max_content_light_level = 2345;
-  hdr_metadata.max_frame_average_light_level = 1789;
-  return hdr_metadata;
-}
-
-ColorSpace CreateTestColorSpace(bool with_hdr_metadata) {
-  HdrMetadata hdr_metadata = CreateTestHdrMetadata();
-  return ColorSpace(
-      ColorSpace::PrimaryID::kBT709, ColorSpace::TransferID::kGAMMA22,
-      ColorSpace::MatrixID::kSMPTE2085, ColorSpace::RangeID::kFull,
-      ColorSpace::ChromaSiting::kCollocated,
-      ColorSpace::ChromaSiting::kCollocated,
-      with_hdr_metadata ? &hdr_metadata : nullptr);
-}
-
 void TestCreateAndParseColorSpaceExtension(bool with_hdr_metadata) {
   // Create packet with extension.
   RtpPacket::ExtensionManager extensions(/*extmap-allow-mixed=*/true);
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 196880d..1f737f6 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -813,6 +813,7 @@
       "../../api/video_codecs:rtc_software_fallback_wrappers",
       "../../api/video_codecs:video_codecs_api",
       "../../common_video",
+      "../../common_video/test:utilities",
       "../../media:rtc_h264_profile_id",
       "../../media:rtc_internal_video_codecs",
       "../../media:rtc_media_base",
diff --git a/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc b/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
index 9faeb5a..62cf6af 100644
--- a/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
+++ b/modules/video_coding/codecs/vp9/test/vp9_impl_unittest.cc
@@ -11,6 +11,7 @@
 #include "api/video/color_space.h"
 #include "api/video/i420_buffer.h"
 #include "common_video/libyuv/include/webrtc_libyuv.h"
+#include "common_video/test/utilities.h"
 #include "media/base/vp9_profile.h"
 #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
 #include "modules/video_coding/codecs/test/video_codec_unittest.h"
@@ -105,34 +106,6 @@
       codec_settings_.spatialLayers[i] = layers[i];
     }
   }
-
-  HdrMetadata CreateTestHdrMetadata() const {
-    // Random but reasonable HDR metadata.
-    HdrMetadata hdr_metadata;
-    hdr_metadata.mastering_metadata.luminance_max = 2000.0;
-    hdr_metadata.mastering_metadata.luminance_min = 2.0001;
-    hdr_metadata.mastering_metadata.primary_r.x = 0.30;
-    hdr_metadata.mastering_metadata.primary_r.y = 0.40;
-    hdr_metadata.mastering_metadata.primary_g.x = 0.32;
-    hdr_metadata.mastering_metadata.primary_g.y = 0.46;
-    hdr_metadata.mastering_metadata.primary_b.x = 0.34;
-    hdr_metadata.mastering_metadata.primary_b.y = 0.49;
-    hdr_metadata.mastering_metadata.white_point.x = 0.41;
-    hdr_metadata.mastering_metadata.white_point.y = 0.48;
-    hdr_metadata.max_content_light_level = 2345;
-    hdr_metadata.max_frame_average_light_level = 1789;
-    return hdr_metadata;
-  }
-
-  ColorSpace CreateTestColorSpace() const {
-    HdrMetadata hdr_metadata = CreateTestHdrMetadata();
-    ColorSpace color_space(
-        ColorSpace::PrimaryID::kBT709, ColorSpace::TransferID::kGAMMA22,
-        ColorSpace::MatrixID::kSMPTE2085, ColorSpace::RangeID::kFull,
-        ColorSpace::ChromaSiting::kCollocated,
-        ColorSpace::ChromaSiting::kCollocated, &hdr_metadata);
-    return color_space;
-  }
 };
 
 // Disabled on ios as flake, see https://crbug.com/webrtc/7057
@@ -201,7 +174,7 @@
   EXPECT_FALSE(encoded_frame.ColorSpace());
 
   // Video frame with explicit color space information.
-  ColorSpace color_space = CreateTestColorSpace();
+  ColorSpace color_space = CreateTestColorSpace(/*with_hdr_metadata=*/true);
   VideoFrame input_frame_w_hdr =
       VideoFrame::Builder()
           .set_video_frame_buffer(input_frame->video_frame_buffer())
@@ -234,7 +207,7 @@
   EXPECT_FALSE(decoded_frame->color_space()->hdr_metadata());
 
   // Encoded frame with explicit color space information.
-  ColorSpace color_space = CreateTestColorSpace();
+  ColorSpace color_space = CreateTestColorSpace(/*with_hdr_metadata=*/true);
   encoded_frame.SetColorSpace(&color_space);
   EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
             decoder_->Decode(encoded_frame, false, nullptr, 0));
diff --git a/video/BUILD.gn b/video/BUILD.gn
index a554213..5df2c02 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -510,6 +510,7 @@
       "../call:simulated_packet_receiver",
       "../call:video_stream_api",
       "../common_video",
+      "../common_video/test:utilities",
       "../logging:rtc_event_log_api",
       "../media:rtc_audio_video",
       "../media:rtc_internal_video_codecs",
diff --git a/video/end_to_end_tests/codec_tests.cc b/video/end_to_end_tests/codec_tests.cc
index 4482a09..7b806e3 100644
--- a/video/end_to_end_tests/codec_tests.cc
+++ b/video/end_to_end_tests/codec_tests.cc
@@ -12,6 +12,7 @@
 #include "api/test/video/function_video_encoder_factory.h"
 #include "api/video/color_space.h"
 #include "api/video/video_rotation.h"
+#include "common_video/test/utilities.h"
 #include "media/engine/internaldecoderfactory.h"
 #include "media/engine/internalencoderfactory.h"
 #include "modules/video_coding/codecs/h264/include/h264.h"
@@ -25,35 +26,6 @@
 #include "test/gtest.h"
 
 namespace webrtc {
-namespace {
-HdrMetadata CreateTestHdrMetadata() {
-  // Random but reasonable HDR metadata.
-  HdrMetadata hdr_metadata;
-  hdr_metadata.mastering_metadata.luminance_max = 2000.0;
-  hdr_metadata.mastering_metadata.luminance_min = 2.0001;
-  hdr_metadata.mastering_metadata.primary_r.x = 0.3003;
-  hdr_metadata.mastering_metadata.primary_r.y = 0.4004;
-  hdr_metadata.mastering_metadata.primary_g.x = 0.3201;
-  hdr_metadata.mastering_metadata.primary_g.y = 0.4604;
-  hdr_metadata.mastering_metadata.primary_b.x = 0.3409;
-  hdr_metadata.mastering_metadata.primary_b.y = 0.4907;
-  hdr_metadata.mastering_metadata.white_point.x = 0.4103;
-  hdr_metadata.mastering_metadata.white_point.y = 0.4806;
-  hdr_metadata.max_content_light_level = 2345;
-  hdr_metadata.max_frame_average_light_level = 1789;
-  return hdr_metadata;
-}
-
-ColorSpace CreateTestColorSpace(bool with_hdr_metadata) {
-  HdrMetadata hdr_metadata = CreateTestHdrMetadata();
-  return ColorSpace(
-      ColorSpace::PrimaryID::kBT709, ColorSpace::TransferID::kGAMMA22,
-      ColorSpace::MatrixID::kSMPTE2085, ColorSpace::RangeID::kFull,
-      ColorSpace::ChromaSiting::kCollocated,
-      ColorSpace::ChromaSiting::kCollocated,
-      with_hdr_metadata ? &hdr_metadata : nullptr);
-}
-}  // namespace
 
 class CodecEndToEndTest : public test::CallTest,
                           public testing::WithParamInterface<std::string> {