diff --git a/common_video/test/BUILD.gn b/common_video/test/BUILD.gn new file mode 100644 index 0000000000..d9cf786dd3 --- /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 0000000000..5769f74268 --- /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 0000000000..d50df62af1 --- /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 807203ce49..e7f93eb291 100644 --- a/modules/rtp_rtcp/BUILD.gn +++ b/modules/rtp_rtcp/BUILD.gn @@ -431,6 +431,7 @@ if (rtc_include_tests) { "../../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 e53125b4aa..0d24272f5f 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 @@ constexpr uint8_t kPacketWithLegacyTimingExtension[] = { 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 196880dcbd..1f737f6b02 100644 --- a/modules/video_coding/BUILD.gn +++ b/modules/video_coding/BUILD.gn @@ -813,6 +813,7 @@ if (rtc_include_tests) { "../../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 9faeb5a431..62cf6afcf0 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 @@ class TestVp9Impl : public VideoCodecUnitTest { 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 @@ TEST_F(TestVp9Impl, EncodedColorSpaceEqualsInputColorSpace) { 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 @@ TEST_F(TestVp9Impl, DecodedHdrMetadataEqualsEncodedHdrMetadata) { 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 a554213446..5df2c027db 100644 --- a/video/BUILD.gn +++ b/video/BUILD.gn @@ -510,6 +510,7 @@ if (rtc_include_tests) { "../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 4482a09026..7b806e3d36 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 {