| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chromecast/media/cma/base/decoder_config_adapter.h" | 5 #include "chromecast/media/cma/base/decoder_config_adapter.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "chromecast/media/base/media_codec_support.h" | 8 #include "chromecast/media/base/media_codec_support.h" |
| 9 #include "media/base/channel_layout.h" | 9 #include "media/base/channel_layout.h" |
| 10 | 10 |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 const AudioConfig& config) { | 217 const AudioConfig& config) { |
| 218 return ::media::AudioDecoderConfig( | 218 return ::media::AudioDecoderConfig( |
| 219 ToMediaAudioCodec(config.codec), | 219 ToMediaAudioCodec(config.codec), |
| 220 ToMediaSampleFormat(config.sample_format), | 220 ToMediaSampleFormat(config.sample_format), |
| 221 ToMediaChannelLayout(config.channel_number), config.samples_per_second, | 221 ToMediaChannelLayout(config.channel_number), config.samples_per_second, |
| 222 config.extra_data, | 222 config.extra_data, |
| 223 ToMediaEncryptionScheme(config.encryption_scheme)); | 223 ToMediaEncryptionScheme(config.encryption_scheme)); |
| 224 } | 224 } |
| 225 | 225 |
| 226 // static | 226 // static |
| 227 #define STATIC_ASSERT_MATCHING_ENUM(chromium_name, chromecast_name) \ |
| 228 static_assert(static_cast<int>(::media::VideoColorSpace::chromium_name) == \ |
| 229 static_cast<int>(::chromecast::media::chromecast_name), \ |
| 230 "mismatching status enum values: " #chromium_name) |
| 231 |
| 232 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::BT709, PrimaryID::BT709); |
| 233 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::UNSPECIFIED, PrimaryID::UNSPECIFIED); |
| 234 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::BT470M, PrimaryID::BT470M); |
| 235 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::BT470BG, PrimaryID::BT470BG); |
| 236 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::SMPTE170M, PrimaryID::SMPTE170M); |
| 237 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::SMPTE240M, PrimaryID::SMPTE240M); |
| 238 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::FILM, PrimaryID::FILM); |
| 239 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::BT2020, PrimaryID::BT2020); |
| 240 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::SMPTEST428_1, PrimaryID::SMPTEST428_1); |
| 241 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::SMPTEST431_2, PrimaryID::SMPTEST431_2); |
| 242 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::SMPTEST432_1, PrimaryID::SMPTEST432_1); |
| 243 STATIC_ASSERT_MATCHING_ENUM(PrimaryID::EBU_3213_E, PrimaryID::EBU_3213_E); |
| 244 |
| 245 STATIC_ASSERT_MATCHING_ENUM(TransferID::BT709, TransferID::BT709); |
| 246 STATIC_ASSERT_MATCHING_ENUM(TransferID::UNSPECIFIED, TransferID::UNSPECIFIED); |
| 247 STATIC_ASSERT_MATCHING_ENUM(TransferID::GAMMA22, TransferID::GAMMA22); |
| 248 STATIC_ASSERT_MATCHING_ENUM(TransferID::GAMMA28, TransferID::GAMMA28); |
| 249 STATIC_ASSERT_MATCHING_ENUM(TransferID::SMPTE170M, TransferID::SMPTE170M); |
| 250 STATIC_ASSERT_MATCHING_ENUM(TransferID::SMPTE240M, TransferID::SMPTE240M); |
| 251 STATIC_ASSERT_MATCHING_ENUM(TransferID::LINEAR, TransferID::LINEAR); |
| 252 STATIC_ASSERT_MATCHING_ENUM(TransferID::LOG, TransferID::LOG); |
| 253 STATIC_ASSERT_MATCHING_ENUM(TransferID::LOG_SQRT, TransferID::LOG_SQRT); |
| 254 STATIC_ASSERT_MATCHING_ENUM(TransferID::IEC61966_2_4, TransferID::IEC61966_2_4); |
| 255 STATIC_ASSERT_MATCHING_ENUM(TransferID::BT1361_ECG, TransferID::BT1361_ECG); |
| 256 STATIC_ASSERT_MATCHING_ENUM(TransferID::IEC61966_2_1, TransferID::IEC61966_2_1); |
| 257 STATIC_ASSERT_MATCHING_ENUM(TransferID::BT2020_10, TransferID::BT2020_10); |
| 258 STATIC_ASSERT_MATCHING_ENUM(TransferID::BT2020_12, TransferID::BT2020_12); |
| 259 STATIC_ASSERT_MATCHING_ENUM(TransferID::SMPTEST2084, TransferID::SMPTEST2084); |
| 260 STATIC_ASSERT_MATCHING_ENUM(TransferID::SMPTEST428_1, TransferID::SMPTEST428_1); |
| 261 STATIC_ASSERT_MATCHING_ENUM(TransferID::ARIB_STD_B67, TransferID::ARIB_STD_B67); |
| 262 |
| 263 STATIC_ASSERT_MATCHING_ENUM(MatrixID::RGB, MatrixID::RGB); |
| 264 STATIC_ASSERT_MATCHING_ENUM(MatrixID::BT709, MatrixID::BT709); |
| 265 STATIC_ASSERT_MATCHING_ENUM(MatrixID::UNSPECIFIED, MatrixID::UNSPECIFIED); |
| 266 STATIC_ASSERT_MATCHING_ENUM(MatrixID::FCC, MatrixID::FCC); |
| 267 STATIC_ASSERT_MATCHING_ENUM(MatrixID::BT470BG, MatrixID::BT470BG); |
| 268 STATIC_ASSERT_MATCHING_ENUM(MatrixID::SMPTE170M, MatrixID::SMPTE170M); |
| 269 STATIC_ASSERT_MATCHING_ENUM(MatrixID::SMPTE240M, MatrixID::SMPTE240M); |
| 270 STATIC_ASSERT_MATCHING_ENUM(MatrixID::YCOCG, MatrixID::YCOCG); |
| 271 STATIC_ASSERT_MATCHING_ENUM(MatrixID::BT2020_NCL, MatrixID::BT2020_NCL); |
| 272 STATIC_ASSERT_MATCHING_ENUM(MatrixID::BT2020_CL, MatrixID::BT2020_CL); |
| 273 STATIC_ASSERT_MATCHING_ENUM(MatrixID::YDZDX, MatrixID::YDZDX); |
| 274 |
| 275 #define STATIC_ASSERT_MATCHING_ENUM2(chromium_name, chromecast_name) \ |
| 276 static_assert(static_cast<int>(::gfx::ColorSpace::chromium_name) == \ |
| 277 static_cast<int>(::chromecast::media::chromecast_name), \ |
| 278 "mismatching status enum values: " #chromium_name) |
| 279 |
| 280 STATIC_ASSERT_MATCHING_ENUM2(RangeID::INVALID, RangeID::INVALID); |
| 281 STATIC_ASSERT_MATCHING_ENUM2(RangeID::LIMITED, RangeID::LIMITED); |
| 282 STATIC_ASSERT_MATCHING_ENUM2(RangeID::FULL, RangeID::FULL); |
| 283 STATIC_ASSERT_MATCHING_ENUM2(RangeID::DERIVED, RangeID::DERIVED); |
| 284 |
| 227 VideoConfig DecoderConfigAdapter::ToCastVideoConfig( | 285 VideoConfig DecoderConfigAdapter::ToCastVideoConfig( |
| 228 StreamId id, | 286 StreamId id, |
| 229 const ::media::VideoDecoderConfig& config) { | 287 const ::media::VideoDecoderConfig& config) { |
| 230 VideoConfig video_config; | 288 VideoConfig video_config; |
| 231 if (!config.IsValidConfig()) { | 289 if (!config.IsValidConfig()) { |
| 232 return video_config; | 290 return video_config; |
| 233 } | 291 } |
| 234 | 292 |
| 235 video_config.id = id; | 293 video_config.id = id; |
| 236 video_config.codec = ToCastVideoCodec(config.codec(), config.profile()); | 294 video_config.codec = ToCastVideoCodec(config.codec(), config.profile()); |
| 237 video_config.profile = ToCastVideoProfile(config.profile()); | 295 video_config.profile = ToCastVideoProfile(config.profile()); |
| 238 video_config.extra_data = config.extra_data(); | 296 video_config.extra_data = config.extra_data(); |
| 239 video_config.encryption_scheme = ToEncryptionScheme( | 297 video_config.encryption_scheme = ToEncryptionScheme( |
| 240 config.encryption_scheme()); | 298 config.encryption_scheme()); |
| 241 | 299 |
| 242 // TODO(servolk): gfx::ColorSpace currently doesn't provide getters for color | 300 video_config.primaries = |
| 243 // space components. We'll need to way to fix this. crbug.com/649758 | 301 static_cast<PrimaryID>(config.color_space_info().primaries); |
| 244 // video_config.primaries = | 302 video_config.transfer = |
| 245 // static_cast<PrimaryID>(config.color_space_info().primaries()); | 303 static_cast<TransferID>(config.color_space_info().transfer); |
| 246 // video_config.transfer = | 304 video_config.matrix = static_cast<MatrixID>(config.color_space_info().matrix); |
| 247 // static_cast<TransferID>(config.color_space_info().transfer()); | 305 video_config.range = static_cast<RangeID>(config.color_space_info().range); |
| 248 // video_config.matrix = | |
| 249 // static_cast<MatrixID>(config.color_space_info().matrix()); | |
| 250 // video_config.range = | |
| 251 // static_cast<RangeID>(config.color_space_info().range()); | |
| 252 | 306 |
| 253 base::Optional<::media::HDRMetadata> hdr_metadata = config.hdr_metadata(); | 307 base::Optional<::media::HDRMetadata> hdr_metadata = config.hdr_metadata(); |
| 254 if (hdr_metadata) { | 308 if (hdr_metadata) { |
| 255 video_config.have_hdr_metadata = true; | 309 video_config.have_hdr_metadata = true; |
| 256 video_config.hdr_metadata.max_cll = hdr_metadata->max_cll; | 310 video_config.hdr_metadata.max_cll = hdr_metadata->max_cll; |
| 257 video_config.hdr_metadata.max_fall = hdr_metadata->max_fall; | 311 video_config.hdr_metadata.max_fall = hdr_metadata->max_fall; |
| 258 | 312 |
| 259 const auto& mm1 = hdr_metadata->mastering_metadata; | 313 const auto& mm1 = hdr_metadata->mastering_metadata; |
| 260 auto& mm2 = video_config.hdr_metadata.mastering_metadata; | 314 auto& mm2 = video_config.hdr_metadata.mastering_metadata; |
| 261 mm2.primary_r_chromaticity_x = mm1.primary_r_chromaticity_x; | 315 mm2.primary_r_chromaticity_x = mm1.primary_r_chromaticity_x; |
| 262 mm2.primary_r_chromaticity_y = mm1.primary_r_chromaticity_y; | 316 mm2.primary_r_chromaticity_y = mm1.primary_r_chromaticity_y; |
| 263 mm2.primary_g_chromaticity_x = mm1.primary_g_chromaticity_x; | 317 mm2.primary_g_chromaticity_x = mm1.primary_g_chromaticity_x; |
| 264 mm2.primary_g_chromaticity_y = mm1.primary_g_chromaticity_y; | 318 mm2.primary_g_chromaticity_y = mm1.primary_g_chromaticity_y; |
| 265 mm2.primary_b_chromaticity_x = mm1.primary_b_chromaticity_x; | 319 mm2.primary_b_chromaticity_x = mm1.primary_b_chromaticity_x; |
| 266 mm2.primary_b_chromaticity_y = mm1.primary_b_chromaticity_y; | 320 mm2.primary_b_chromaticity_y = mm1.primary_b_chromaticity_y; |
| 267 mm2.white_point_chromaticity_x = mm1.white_point_chromaticity_x; | 321 mm2.white_point_chromaticity_x = mm1.white_point_chromaticity_x; |
| 268 mm2.white_point_chromaticity_y = mm1.white_point_chromaticity_y; | 322 mm2.white_point_chromaticity_y = mm1.white_point_chromaticity_y; |
| 269 mm2.luminance_max = mm1.luminance_max; | 323 mm2.luminance_max = mm1.luminance_max; |
| 270 mm2.luminance_min = mm1.luminance_min; | 324 mm2.luminance_min = mm1.luminance_min; |
| 271 } | 325 } |
| 272 | 326 |
| 273 return video_config; | 327 return video_config; |
| 274 } | 328 } |
| 275 | 329 |
| 276 } // namespace media | 330 } // namespace media |
| 277 } // namespace chromecast | 331 } // namespace chromecast |
| OLD | NEW |