OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chromecast/media/cma/base/decoder_config_adapter.h" |
| 6 |
| 7 #include "base/logging.h" |
| 8 #include "media/base/channel_layout.h" |
| 9 |
| 10 namespace chromecast { |
| 11 namespace media { |
| 12 |
| 13 namespace { |
| 14 |
| 15 // Converts ::media::AudioCodec to chromecast::media::AudioCodec. Any unknown or |
| 16 // unsupported codec will be converted to chromecast::media::kCodecUnknown. |
| 17 AudioCodec ToAudioCodec(const ::media::AudioCodec audio_codec) { |
| 18 switch (audio_codec) { |
| 19 case ::media::kCodecAAC: |
| 20 return kCodecAAC; |
| 21 case ::media::kCodecMP3: |
| 22 return kCodecMP3; |
| 23 case ::media::kCodecPCM: |
| 24 return kCodecPCM; |
| 25 case ::media::kCodecPCM_S16BE: |
| 26 return kCodecPCM_S16BE; |
| 27 case ::media::kCodecVorbis: |
| 28 return kCodecVorbis; |
| 29 default: |
| 30 LOG(INFO) << "Unsupported audio codec " << audio_codec; |
| 31 } |
| 32 return kAudioCodecUnknown; |
| 33 } |
| 34 |
| 35 // Converts ::media::VideoCodec to chromecast::media::VideoCodec. Any unknown or |
| 36 // unsupported codec will be converted to chromecast::media::kCodecUnknown. |
| 37 VideoCodec ToVideoCodec(const ::media::VideoCodec video_codec) { |
| 38 switch (video_codec) { |
| 39 case ::media::kCodecH264: |
| 40 return kCodecH264; |
| 41 case ::media::kCodecVP8: |
| 42 return kCodecVP8; |
| 43 case ::media::kCodecVP9: |
| 44 return kCodecVP9; |
| 45 default: |
| 46 LOG(INFO) << "Unsupported video codec " << video_codec; |
| 47 } |
| 48 return kVideoCodecUnknown; |
| 49 } |
| 50 |
| 51 // Converts ::media::VideoCodecProfile to chromecast::media::VideoProfile. |
| 52 VideoProfile ToVideoProfile(const ::media::VideoCodecProfile codec_profile) { |
| 53 switch(codec_profile) { |
| 54 case ::media::H264PROFILE_BASELINE: |
| 55 return kH264Baseline; |
| 56 case ::media::H264PROFILE_MAIN: |
| 57 return kH264Main; |
| 58 case ::media::H264PROFILE_EXTENDED: |
| 59 return kH264Extended; |
| 60 case ::media::H264PROFILE_HIGH: |
| 61 return kH264High; |
| 62 case ::media::H264PROFILE_HIGH10PROFILE: |
| 63 return kH264High10; |
| 64 case ::media::H264PROFILE_HIGH422PROFILE: |
| 65 return kH264High422; |
| 66 case ::media::H264PROFILE_HIGH444PREDICTIVEPROFILE: |
| 67 return kH264High444Predictive; |
| 68 case ::media::H264PROFILE_SCALABLEBASELINE: |
| 69 return kH264ScalableBaseline; |
| 70 case ::media::H264PROFILE_SCALABLEHIGH: |
| 71 return kH264ScalableHigh; |
| 72 case ::media::H264PROFILE_STEREOHIGH: |
| 73 return kH264Stereohigh; |
| 74 case ::media::H264PROFILE_MULTIVIEWHIGH: |
| 75 return kH264MultiviewHigh; |
| 76 case ::media::VP8PROFILE_ANY: |
| 77 return kVP8ProfileAny; |
| 78 case ::media::VP9PROFILE_ANY: |
| 79 return kVP9ProfileAny; |
| 80 default: |
| 81 LOG(INFO) << "Unsupported video codec profile " << codec_profile; |
| 82 } |
| 83 return kVideoProfileUnknown; |
| 84 } |
| 85 |
| 86 } // namespace |
| 87 |
| 88 // static |
| 89 AudioConfig DecoderConfigAdapter::ToAudioConfig( |
| 90 const ::media::AudioDecoderConfig& config) { |
| 91 AudioConfig audio_config; |
| 92 if (!config.IsValidConfig()) { |
| 93 return audio_config; |
| 94 } |
| 95 |
| 96 audio_config.codec = ToAudioCodec(config.codec()); |
| 97 audio_config.bytes_per_channel = config.bytes_per_channel(); |
| 98 audio_config.channel_number = |
| 99 ::media::ChannelLayoutToChannelCount(config.channel_layout()), |
| 100 audio_config.samples_per_second = config.samples_per_second(); |
| 101 audio_config.extra_data = (config.extra_data_size() > 0) ? |
| 102 config.extra_data() : nullptr; |
| 103 audio_config.extra_data_size = config.extra_data_size(); |
| 104 audio_config.is_encrypted = config.is_encrypted(); |
| 105 return audio_config; |
| 106 } |
| 107 |
| 108 // static |
| 109 VideoConfig DecoderConfigAdapter::ToVideoConfig( |
| 110 const ::media::VideoDecoderConfig& config) { |
| 111 VideoConfig video_config; |
| 112 if (!config.IsValidConfig()) { |
| 113 return video_config; |
| 114 } |
| 115 |
| 116 video_config.codec = ToVideoCodec(config.codec()); |
| 117 video_config.profile = ToVideoProfile(config.profile()); |
| 118 video_config.extra_data = (config.extra_data_size() > 0) ? |
| 119 config.extra_data() : nullptr; |
| 120 video_config.extra_data_size = config.extra_data_size(); |
| 121 video_config.is_encrypted = config.is_encrypted(); |
| 122 return video_config; |
| 123 } |
| 124 |
| 125 } // namespace media |
| 126 } // namespace chromecast |
OLD | NEW |