Index: chromecast/media/cma/base/decoder_config_adapter.cc |
diff --git a/chromecast/media/cma/base/decoder_config_adapter.cc b/chromecast/media/cma/base/decoder_config_adapter.cc |
index 691ee4768650621b1a71c03c474322afea1bc090..0c59b30fa5e979ef21ff686838d5e4108596be96 100644 |
--- a/chromecast/media/cma/base/decoder_config_adapter.cc |
+++ b/chromecast/media/cma/base/decoder_config_adapter.cc |
@@ -236,8 +236,103 @@ VideoConfig DecoderConfigAdapter::ToCastVideoConfig( |
video_config.extra_data = config.extra_data(); |
video_config.encryption_scheme = ToEncryptionScheme( |
config.encryption_scheme()); |
+ |
+ // TODO(servolk): gfx::ColorSpace currently doesn't provide getters for color |
+ // space components. We'll need to way to fix this. crbug.com/649758 |
+ // video_config.primaries = |
+ // static_cast<PrimaryID>(config.color_space_info().primaries()); |
+ // video_config.transfer = |
+ // static_cast<TransferID>(config.color_space_info().transfer()); |
+ // video_config.matrix = |
+ // static_cast<MatrixID>(config.color_space_info().matrix()); |
+ // video_config.range = |
+ // static_cast<RangeID>(config.color_space_info().range()); |
+ |
+ base::Optional<::media::HDRMetadata> hdr_metadata = config.hdr_metadata(); |
+ if (hdr_metadata) { |
+ video_config.have_hdr_metadata = true; |
+ video_config.hdr_metadata.max_cll = hdr_metadata->max_cll; |
+ video_config.hdr_metadata.max_fall = hdr_metadata->max_fall; |
+ |
+ const auto& mm1 = hdr_metadata->mastering_metadata; |
+ auto& mm2 = video_config.hdr_metadata.mastering_metadata; |
+ mm2.primary_r_chromaticity_x = mm1.primary_r_chromaticity_x; |
+ mm2.primary_r_chromaticity_y = mm1.primary_r_chromaticity_y; |
+ mm2.primary_g_chromaticity_x = mm1.primary_g_chromaticity_x; |
+ mm2.primary_g_chromaticity_y = mm1.primary_g_chromaticity_y; |
+ mm2.primary_b_chromaticity_x = mm1.primary_b_chromaticity_x; |
+ mm2.primary_b_chromaticity_y = mm1.primary_b_chromaticity_y; |
+ mm2.white_point_chromaticity_x = mm1.white_point_chromaticity_x; |
+ mm2.white_point_chromaticity_y = mm1.white_point_chromaticity_y; |
+ mm2.luminance_max = mm1.luminance_max; |
+ mm2.luminance_min = mm1.luminance_min; |
+ } |
+ |
return video_config; |
} |
+MasteringMetadata::MasteringMetadata() {} |
+MasteringMetadata::MasteringMetadata(const MasteringMetadata& rhs) = default; |
+ |
+HDRMetadata::HDRMetadata() {} |
+HDRMetadata::HDRMetadata(const HDRMetadata& rhs) = default; |
+ |
+// Ensure that Chromecast enum values match enums in gfx::ColorSpace. |
+#define STATIC_ASSERT_ENUM(a, b) \ |
+ static_assert(static_cast<int>(a) == static_cast<int>(gfx::ColorSpace::b), \ |
+ "mismatching enums: " #a " and " #b) |
+ |
+STATIC_ASSERT_ENUM(PrimaryID::RESERVED0, PrimaryID::RESERVED0); |
+STATIC_ASSERT_ENUM(PrimaryID::BT709, PrimaryID::BT709); |
+STATIC_ASSERT_ENUM(PrimaryID::UNSPECIFIED, PrimaryID::UNSPECIFIED); |
+STATIC_ASSERT_ENUM(PrimaryID::RESERVED, PrimaryID::RESERVED); |
+STATIC_ASSERT_ENUM(PrimaryID::BT470M, PrimaryID::BT470M); |
+STATIC_ASSERT_ENUM(PrimaryID::BT470BG, PrimaryID::BT470BG); |
+STATIC_ASSERT_ENUM(PrimaryID::SMPTE170M, PrimaryID::SMPTE170M); |
+STATIC_ASSERT_ENUM(PrimaryID::SMPTE240M, PrimaryID::SMPTE240M); |
+STATIC_ASSERT_ENUM(PrimaryID::FILM, PrimaryID::FILM); |
+STATIC_ASSERT_ENUM(PrimaryID::BT2020, PrimaryID::BT2020); |
+STATIC_ASSERT_ENUM(PrimaryID::SMPTEST428_1, PrimaryID::SMPTEST428_1); |
+STATIC_ASSERT_ENUM(PrimaryID::SMPTEST431_2, PrimaryID::SMPTEST431_2); |
+STATIC_ASSERT_ENUM(PrimaryID::SMPTEST431_2, PrimaryID::SMPTEST431_2); |
+STATIC_ASSERT_ENUM(PrimaryID::SMPTEST432_1, PrimaryID::SMPTEST432_1); |
+ |
+STATIC_ASSERT_ENUM(TransferID::RESERVED0, TransferID::RESERVED0); |
+STATIC_ASSERT_ENUM(TransferID::BT709, TransferID::BT709); |
+STATIC_ASSERT_ENUM(TransferID::UNSPECIFIED, TransferID::UNSPECIFIED); |
+STATIC_ASSERT_ENUM(TransferID::RESERVED, TransferID::RESERVED); |
+STATIC_ASSERT_ENUM(TransferID::GAMMA22, TransferID::GAMMA22); |
+STATIC_ASSERT_ENUM(TransferID::GAMMA28, TransferID::GAMMA28); |
+STATIC_ASSERT_ENUM(TransferID::SMPTE170M, TransferID::SMPTE170M); |
+STATIC_ASSERT_ENUM(TransferID::SMPTE240M, TransferID::SMPTE240M); |
+STATIC_ASSERT_ENUM(TransferID::LINEAR, TransferID::LINEAR); |
+STATIC_ASSERT_ENUM(TransferID::LOG, TransferID::LOG); |
+STATIC_ASSERT_ENUM(TransferID::LOG_SQRT, TransferID::LOG_SQRT); |
+STATIC_ASSERT_ENUM(TransferID::IEC61966_2_4, TransferID::IEC61966_2_4); |
+STATIC_ASSERT_ENUM(TransferID::BT1361_ECG, TransferID::BT1361_ECG); |
+STATIC_ASSERT_ENUM(TransferID::IEC61966_2_1, TransferID::IEC61966_2_1); |
+STATIC_ASSERT_ENUM(TransferID::BT2020_10, TransferID::BT2020_10); |
+STATIC_ASSERT_ENUM(TransferID::BT2020_12, TransferID::BT2020_12); |
+STATIC_ASSERT_ENUM(TransferID::SMPTEST2084, TransferID::SMPTEST2084); |
+STATIC_ASSERT_ENUM(TransferID::SMPTEST428_1, TransferID::SMPTEST428_1); |
+STATIC_ASSERT_ENUM(TransferID::ARIB_STD_B67, TransferID::ARIB_STD_B67); |
+ |
+STATIC_ASSERT_ENUM(MatrixID::RGB, MatrixID::RGB); |
+STATIC_ASSERT_ENUM(MatrixID::BT709, MatrixID::BT709); |
+STATIC_ASSERT_ENUM(MatrixID::UNSPECIFIED, MatrixID::UNSPECIFIED); |
+STATIC_ASSERT_ENUM(MatrixID::RESERVED, MatrixID::RESERVED); |
+STATIC_ASSERT_ENUM(MatrixID::FCC, MatrixID::FCC); |
+STATIC_ASSERT_ENUM(MatrixID::BT470BG, MatrixID::BT470BG); |
+STATIC_ASSERT_ENUM(MatrixID::SMPTE170M, MatrixID::SMPTE170M); |
+STATIC_ASSERT_ENUM(MatrixID::SMPTE240M, MatrixID::SMPTE240M); |
+STATIC_ASSERT_ENUM(MatrixID::YCOCG, MatrixID::YCOCG); |
+STATIC_ASSERT_ENUM(MatrixID::BT2020_NCL, MatrixID::BT2020_NCL); |
+STATIC_ASSERT_ENUM(MatrixID::BT2020_CL, MatrixID::BT2020_CL); |
+ |
+STATIC_ASSERT_ENUM(RangeID::UNSPECIFIED, RangeID::UNSPECIFIED); |
+STATIC_ASSERT_ENUM(RangeID::LIMITED, RangeID::LIMITED); |
+STATIC_ASSERT_ENUM(RangeID::FULL, RangeID::FULL); |
+STATIC_ASSERT_ENUM(RangeID::DERIVED, RangeID::DERIVED); |
+ |
} // namespace media |
} // namespace chromecast |