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 |