| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "media/mojo/common/media_type_converters.h" | 5 #include "media/mojo/common/media_type_converters.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/numerics/safe_conversions.h" | 10 #include "base/numerics/safe_conversions.h" |
| 11 #include "media/base/audio_buffer.h" | 11 #include "media/base/audio_buffer.h" |
| 12 #include "media/base/audio_decoder_config.h" | 12 #include "media/base/audio_decoder_config.h" |
| 13 #include "media/base/buffering_state.h" | 13 #include "media/base/buffering_state.h" |
| 14 #include "media/base/cdm_config.h" | 14 #include "media/base/cdm_config.h" |
| 15 #include "media/base/cdm_key_information.h" | 15 #include "media/base/cdm_key_information.h" |
| 16 #include "media/base/decoder_buffer.h" | 16 #include "media/base/decoder_buffer.h" |
| 17 #include "media/base/decrypt_config.h" | 17 #include "media/base/decrypt_config.h" |
| 18 #include "media/base/decryptor.h" | 18 #include "media/base/decryptor.h" |
| 19 #include "media/base/demuxer_stream.h" | 19 #include "media/base/demuxer_stream.h" |
| 20 #include "media/base/encryption_scheme.h" | |
| 21 #include "media/base/media_keys.h" | 20 #include "media/base/media_keys.h" |
| 22 #include "media/base/video_decoder_config.h" | 21 #include "media/base/video_decoder_config.h" |
| 23 #include "media/base/video_frame.h" | 22 #include "media/base/video_frame.h" |
| 24 #include "media/mojo/common/mojo_shared_buffer_video_frame.h" | 23 #include "media/mojo/common/mojo_shared_buffer_video_frame.h" |
| 25 #include "media/mojo/interfaces/demuxer_stream.mojom.h" | 24 #include "media/mojo/interfaces/demuxer_stream.mojom.h" |
| 26 #include "mojo/converters/geometry/geometry_type_converters.h" | 25 #include "mojo/converters/geometry/geometry_type_converters.h" |
| 27 #include "mojo/public/cpp/system/buffer.h" | 26 #include "mojo/public/cpp/system/buffer.h" |
| 28 | 27 |
| 29 namespace mojo { | 28 namespace mojo { |
| 30 | 29 |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 ASSERT_ENUM_EQ(VideoCodecProfile, , , H264PROFILE_MULTIVIEWHIGH); | 214 ASSERT_ENUM_EQ(VideoCodecProfile, , , H264PROFILE_MULTIVIEWHIGH); |
| 216 ASSERT_ENUM_EQ(VideoCodecProfile, , , H264PROFILE_MAX); | 215 ASSERT_ENUM_EQ(VideoCodecProfile, , , H264PROFILE_MAX); |
| 217 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP8PROFILE_MIN); | 216 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP8PROFILE_MIN); |
| 218 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP8PROFILE_ANY); | 217 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP8PROFILE_ANY); |
| 219 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP8PROFILE_MAX); | 218 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP8PROFILE_MAX); |
| 220 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP9PROFILE_MIN); | 219 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP9PROFILE_MIN); |
| 221 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP9PROFILE_ANY); | 220 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP9PROFILE_ANY); |
| 222 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP9PROFILE_MAX); | 221 ASSERT_ENUM_EQ(VideoCodecProfile, , , VP9PROFILE_MAX); |
| 223 ASSERT_ENUM_EQ(VideoCodecProfile, , , VIDEO_CODEC_PROFILE_MAX); | 222 ASSERT_ENUM_EQ(VideoCodecProfile, , , VIDEO_CODEC_PROFILE_MAX); |
| 224 | 223 |
| 225 // CipherMode | |
| 226 ASSERT_ENUM_EQ_RAW(EncryptionScheme::CipherMode, | |
| 227 EncryptionScheme::CipherMode::CIPHER_MODE_UNENCRYPTED, | |
| 228 CipherMode::UNENCRYPTED); | |
| 229 ASSERT_ENUM_EQ_RAW(EncryptionScheme::CipherMode, | |
| 230 EncryptionScheme::CipherMode::CIPHER_MODE_AES_CTR, | |
| 231 CipherMode::AES_CTR); | |
| 232 ASSERT_ENUM_EQ_RAW(EncryptionScheme::CipherMode, | |
| 233 EncryptionScheme::CipherMode::CIPHER_MODE_AES_CBC, | |
| 234 CipherMode::AES_CBC); | |
| 235 ASSERT_ENUM_EQ_RAW(EncryptionScheme::CipherMode, | |
| 236 EncryptionScheme::CipherMode::CIPHER_MODE_MAX, | |
| 237 CipherMode::MAX); | |
| 238 | |
| 239 // Decryptor Status | 224 // Decryptor Status |
| 240 ASSERT_ENUM_EQ_RAW(Decryptor::Status, | 225 ASSERT_ENUM_EQ_RAW(Decryptor::Status, |
| 241 Decryptor::kSuccess, | 226 Decryptor::kSuccess, |
| 242 Decryptor::Status::SUCCESS); | 227 Decryptor::Status::SUCCESS); |
| 243 ASSERT_ENUM_EQ_RAW(Decryptor::Status, | 228 ASSERT_ENUM_EQ_RAW(Decryptor::Status, |
| 244 Decryptor::kNoKey, | 229 Decryptor::kNoKey, |
| 245 Decryptor::Status::NO_KEY); | 230 Decryptor::Status::NO_KEY); |
| 246 ASSERT_ENUM_EQ_RAW(Decryptor::Status, | 231 ASSERT_ENUM_EQ_RAW(Decryptor::Status, |
| 247 Decryptor::kNeedMoreData, | 232 Decryptor::kNeedMoreData, |
| 248 Decryptor::Status::NEED_MORE_DATA); | 233 Decryptor::Status::NEED_MORE_DATA); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 // CDM Message Type | 288 // CDM Message Type |
| 304 #define ASSERT_CDM_MESSAGE_TYPE(value) \ | 289 #define ASSERT_CDM_MESSAGE_TYPE(value) \ |
| 305 static_assert(media::MediaKeys::value == \ | 290 static_assert(media::MediaKeys::value == \ |
| 306 static_cast<media::MediaKeys::MessageType>( \ | 291 static_cast<media::MediaKeys::MessageType>( \ |
| 307 media::interfaces::CdmMessageType::value), \ | 292 media::interfaces::CdmMessageType::value), \ |
| 308 "Mismatched CDM Message Type") | 293 "Mismatched CDM Message Type") |
| 309 ASSERT_CDM_MESSAGE_TYPE(LICENSE_REQUEST); | 294 ASSERT_CDM_MESSAGE_TYPE(LICENSE_REQUEST); |
| 310 ASSERT_CDM_MESSAGE_TYPE(LICENSE_RENEWAL); | 295 ASSERT_CDM_MESSAGE_TYPE(LICENSE_RENEWAL); |
| 311 ASSERT_CDM_MESSAGE_TYPE(LICENSE_RELEASE); | 296 ASSERT_CDM_MESSAGE_TYPE(LICENSE_RELEASE); |
| 312 | 297 |
| 313 template <> | |
| 314 struct TypeConverter<media::interfaces::PatternPtr, | |
| 315 media::EncryptionScheme::Pattern> { | |
| 316 static media::interfaces::PatternPtr Convert( | |
| 317 const media::EncryptionScheme::Pattern& input); | |
| 318 }; | |
| 319 template <> | |
| 320 struct TypeConverter<media::EncryptionScheme::Pattern, | |
| 321 media::interfaces::PatternPtr> { | |
| 322 static media::EncryptionScheme::Pattern Convert( | |
| 323 const media::interfaces::PatternPtr& input); | |
| 324 }; | |
| 325 | |
| 326 // static | |
| 327 media::interfaces::PatternPtr | |
| 328 TypeConverter<media::interfaces::PatternPtr, media::EncryptionScheme::Pattern>:: | |
| 329 Convert(const media::EncryptionScheme::Pattern& input) { | |
| 330 media::interfaces::PatternPtr mojo_pattern(media::interfaces::Pattern::New()); | |
| 331 mojo_pattern->encrypt_blocks = input.encrypt_blocks(); | |
| 332 mojo_pattern->skip_blocks = input.skip_blocks(); | |
| 333 return mojo_pattern; | |
| 334 } | |
| 335 | |
| 336 // static | |
| 337 media::EncryptionScheme::Pattern | |
| 338 TypeConverter<media::EncryptionScheme::Pattern, media::interfaces::PatternPtr>:: | |
| 339 Convert(const media::interfaces::PatternPtr& input) { | |
| 340 return media::EncryptionScheme::Pattern(input->encrypt_blocks, | |
| 341 input->skip_blocks); | |
| 342 } | |
| 343 | |
| 344 // static | |
| 345 media::interfaces::EncryptionSchemePtr TypeConverter< | |
| 346 media::interfaces::EncryptionSchemePtr, | |
| 347 media::EncryptionScheme>::Convert(const media::EncryptionScheme& input) { | |
| 348 media::interfaces::EncryptionSchemePtr mojo_encryption_scheme( | |
| 349 media::interfaces::EncryptionScheme::New()); | |
| 350 mojo_encryption_scheme->mode = | |
| 351 static_cast<media::interfaces::CipherMode>(input.mode()); | |
| 352 mojo_encryption_scheme->pattern = | |
| 353 media::interfaces::Pattern::From(input.pattern()); | |
| 354 return mojo_encryption_scheme; | |
| 355 } | |
| 356 | |
| 357 // static | |
| 358 media::EncryptionScheme | |
| 359 TypeConverter<media::EncryptionScheme, media::interfaces::EncryptionSchemePtr>:: | |
| 360 Convert(const media::interfaces::EncryptionSchemePtr& input) { | |
| 361 return media::EncryptionScheme( | |
| 362 static_cast<media::EncryptionScheme::CipherMode>(input->mode), | |
| 363 input->pattern.To<media::EncryptionScheme::Pattern>()); | |
| 364 } | |
| 365 | |
| 366 // static | 298 // static |
| 367 media::interfaces::SubsampleEntryPtr TypeConverter< | 299 media::interfaces::SubsampleEntryPtr TypeConverter< |
| 368 media::interfaces::SubsampleEntryPtr, | 300 media::interfaces::SubsampleEntryPtr, |
| 369 media::SubsampleEntry>::Convert(const media::SubsampleEntry& input) { | 301 media::SubsampleEntry>::Convert(const media::SubsampleEntry& input) { |
| 370 media::interfaces::SubsampleEntryPtr mojo_subsample_entry( | 302 media::interfaces::SubsampleEntryPtr mojo_subsample_entry( |
| 371 media::interfaces::SubsampleEntry::New()); | 303 media::interfaces::SubsampleEntry::New()); |
| 372 mojo_subsample_entry->clear_bytes = input.clear_bytes; | 304 mojo_subsample_entry->clear_bytes = input.clear_bytes; |
| 373 mojo_subsample_entry->cypher_bytes = input.cypher_bytes; | 305 mojo_subsample_entry->cypher_bytes = input.cypher_bytes; |
| 374 return mojo_subsample_entry; | 306 return mojo_subsample_entry; |
| 375 } | 307 } |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 config->sample_format = | 428 config->sample_format = |
| 497 static_cast<media::interfaces::SampleFormat>(input.sample_format()); | 429 static_cast<media::interfaces::SampleFormat>(input.sample_format()); |
| 498 config->channel_layout = | 430 config->channel_layout = |
| 499 static_cast<media::interfaces::ChannelLayout>(input.channel_layout()); | 431 static_cast<media::interfaces::ChannelLayout>(input.channel_layout()); |
| 500 config->samples_per_second = input.samples_per_second(); | 432 config->samples_per_second = input.samples_per_second(); |
| 501 if (!input.extra_data().empty()) { | 433 if (!input.extra_data().empty()) { |
| 502 config->extra_data = mojo::Array<uint8_t>::From(input.extra_data()); | 434 config->extra_data = mojo::Array<uint8_t>::From(input.extra_data()); |
| 503 } | 435 } |
| 504 config->seek_preroll_usec = input.seek_preroll().InMicroseconds(); | 436 config->seek_preroll_usec = input.seek_preroll().InMicroseconds(); |
| 505 config->codec_delay = input.codec_delay(); | 437 config->codec_delay = input.codec_delay(); |
| 506 config->encryption_scheme = | 438 config->is_encrypted = input.is_encrypted(); |
| 507 media::interfaces::EncryptionScheme::From(input.encryption_scheme()); | |
| 508 return config; | 439 return config; |
| 509 } | 440 } |
| 510 | 441 |
| 511 // static | 442 // static |
| 512 media::AudioDecoderConfig | 443 media::AudioDecoderConfig |
| 513 TypeConverter<media::AudioDecoderConfig, | 444 TypeConverter<media::AudioDecoderConfig, |
| 514 media::interfaces::AudioDecoderConfigPtr>:: | 445 media::interfaces::AudioDecoderConfigPtr>:: |
| 515 Convert(const media::interfaces::AudioDecoderConfigPtr& input) { | 446 Convert(const media::interfaces::AudioDecoderConfigPtr& input) { |
| 516 media::AudioDecoderConfig config; | 447 media::AudioDecoderConfig config; |
| 517 config.Initialize(static_cast<media::AudioCodec>(input->codec), | 448 config.Initialize(static_cast<media::AudioCodec>(input->codec), |
| 518 static_cast<media::SampleFormat>(input->sample_format), | 449 static_cast<media::SampleFormat>(input->sample_format), |
| 519 static_cast<media::ChannelLayout>(input->channel_layout), | 450 static_cast<media::ChannelLayout>(input->channel_layout), |
| 520 input->samples_per_second, input->extra_data.storage(), | 451 input->samples_per_second, input->extra_data.storage(), |
| 521 input->encryption_scheme.To<media::EncryptionScheme>(), | 452 input->is_encrypted, |
| 522 base::TimeDelta::FromMicroseconds(input->seek_preroll_usec), | 453 base::TimeDelta::FromMicroseconds(input->seek_preroll_usec), |
| 523 input->codec_delay); | 454 input->codec_delay); |
| 524 return config; | 455 return config; |
| 525 } | 456 } |
| 526 | 457 |
| 527 // static | 458 // static |
| 528 media::interfaces::VideoDecoderConfigPtr TypeConverter< | 459 media::interfaces::VideoDecoderConfigPtr TypeConverter< |
| 529 media::interfaces::VideoDecoderConfigPtr, | 460 media::interfaces::VideoDecoderConfigPtr, |
| 530 media::VideoDecoderConfig>::Convert(const media::VideoDecoderConfig& | 461 media::VideoDecoderConfig>::Convert(const media::VideoDecoderConfig& |
| 531 input) { | 462 input) { |
| 532 media::interfaces::VideoDecoderConfigPtr config( | 463 media::interfaces::VideoDecoderConfigPtr config( |
| 533 media::interfaces::VideoDecoderConfig::New()); | 464 media::interfaces::VideoDecoderConfig::New()); |
| 534 config->codec = static_cast<media::interfaces::VideoCodec>(input.codec()); | 465 config->codec = static_cast<media::interfaces::VideoCodec>(input.codec()); |
| 535 config->profile = | 466 config->profile = |
| 536 static_cast<media::interfaces::VideoCodecProfile>(input.profile()); | 467 static_cast<media::interfaces::VideoCodecProfile>(input.profile()); |
| 537 config->format = static_cast<media::interfaces::VideoFormat>(input.format()); | 468 config->format = static_cast<media::interfaces::VideoFormat>(input.format()); |
| 538 config->color_space = | 469 config->color_space = |
| 539 static_cast<media::interfaces::ColorSpace>(input.color_space()); | 470 static_cast<media::interfaces::ColorSpace>(input.color_space()); |
| 540 config->coded_size = Size::From(input.coded_size()); | 471 config->coded_size = Size::From(input.coded_size()); |
| 541 config->visible_rect = Rect::From(input.visible_rect()); | 472 config->visible_rect = Rect::From(input.visible_rect()); |
| 542 config->natural_size = Size::From(input.natural_size()); | 473 config->natural_size = Size::From(input.natural_size()); |
| 543 if (!input.extra_data().empty()) { | 474 if (!input.extra_data().empty()) { |
| 544 config->extra_data = mojo::Array<uint8_t>::From(input.extra_data()); | 475 config->extra_data = mojo::Array<uint8_t>::From(input.extra_data()); |
| 545 } | 476 } |
| 546 config->encryption_scheme = | 477 config->is_encrypted = input.is_encrypted(); |
| 547 media::interfaces::EncryptionScheme::From(input.encryption_scheme()); | |
| 548 return config; | 478 return config; |
| 549 } | 479 } |
| 550 | 480 |
| 551 // static | 481 // static |
| 552 media::VideoDecoderConfig | 482 media::VideoDecoderConfig |
| 553 TypeConverter<media::VideoDecoderConfig, | 483 TypeConverter<media::VideoDecoderConfig, |
| 554 media::interfaces::VideoDecoderConfigPtr>:: | 484 media::interfaces::VideoDecoderConfigPtr>:: |
| 555 Convert(const media::interfaces::VideoDecoderConfigPtr& input) { | 485 Convert(const media::interfaces::VideoDecoderConfigPtr& input) { |
| 556 media::VideoDecoderConfig config; | 486 media::VideoDecoderConfig config; |
| 557 config.Initialize( | 487 config.Initialize(static_cast<media::VideoCodec>(input->codec), |
| 558 static_cast<media::VideoCodec>(input->codec), | 488 static_cast<media::VideoCodecProfile>(input->profile), |
| 559 static_cast<media::VideoCodecProfile>(input->profile), | 489 static_cast<media::VideoPixelFormat>(input->format), |
| 560 static_cast<media::VideoPixelFormat>(input->format), | 490 static_cast<media::ColorSpace>(input->color_space), |
| 561 static_cast<media::ColorSpace>(input->color_space), | 491 input->coded_size.To<gfx::Size>(), |
| 562 input->coded_size.To<gfx::Size>(), input->visible_rect.To<gfx::Rect>(), | 492 input->visible_rect.To<gfx::Rect>(), |
| 563 input->natural_size.To<gfx::Size>(), input->extra_data.storage(), | 493 input->natural_size.To<gfx::Size>(), |
| 564 input->encryption_scheme.To<media::EncryptionScheme>()); | 494 input->extra_data.storage(), input->is_encrypted); |
| 565 return config; | 495 return config; |
| 566 } | 496 } |
| 567 | 497 |
| 568 // static | 498 // static |
| 569 media::interfaces::CdmKeyInformationPtr TypeConverter< | 499 media::interfaces::CdmKeyInformationPtr TypeConverter< |
| 570 media::interfaces::CdmKeyInformationPtr, | 500 media::interfaces::CdmKeyInformationPtr, |
| 571 media::CdmKeyInformation>::Convert(const media::CdmKeyInformation& input) { | 501 media::CdmKeyInformation>::Convert(const media::CdmKeyInformation& input) { |
| 572 media::interfaces::CdmKeyInformationPtr info( | 502 media::interfaces::CdmKeyInformationPtr info( |
| 573 media::interfaces::CdmKeyInformation::New()); | 503 media::interfaces::CdmKeyInformation::New()); |
| 574 std::vector<uint8_t> key_id_copy(input.key_id); | 504 std::vector<uint8_t> key_id_copy(input.key_id); |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 input->natural_size.To<gfx::Size>(), std::move(input->frame_data), | 645 input->natural_size.To<gfx::Size>(), std::move(input->frame_data), |
| 716 base::saturated_cast<size_t>(input->frame_data_size), | 646 base::saturated_cast<size_t>(input->frame_data_size), |
| 717 base::saturated_cast<size_t>(input->y_offset), | 647 base::saturated_cast<size_t>(input->y_offset), |
| 718 base::saturated_cast<size_t>(input->u_offset), | 648 base::saturated_cast<size_t>(input->u_offset), |
| 719 base::saturated_cast<size_t>(input->v_offset), input->y_stride, | 649 base::saturated_cast<size_t>(input->v_offset), input->y_stride, |
| 720 input->u_stride, input->v_stride, | 650 input->u_stride, input->v_stride, |
| 721 base::TimeDelta::FromMicroseconds(input->timestamp_usec)); | 651 base::TimeDelta::FromMicroseconds(input->timestamp_usec)); |
| 722 } | 652 } |
| 723 | 653 |
| 724 } // namespace mojo | 654 } // namespace mojo |
| OLD | NEW |