Chromium Code Reviews| 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 kH264ScalabBaseline; | |
|
gunsch
2015/04/29 17:42:52
rename: kH264ScalableBaseline
erickung1
2015/04/29 20:49:15
Done.
| |
| 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 NOTREACHED(); | |
| 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.assign( | |
| 102 config.extra_data(), config.extra_data() + config.extra_data_size()); | |
| 103 audio_config.is_encrypted = config.is_encrypted(); | |
| 104 return audio_config; | |
| 105 } | |
| 106 | |
| 107 // static | |
| 108 VideoConfig DecoderConfigAdapter::ToVideoConfig( | |
| 109 const ::media::VideoDecoderConfig& config) { | |
| 110 VideoConfig video_config; | |
| 111 if (!config.IsValidConfig()) { | |
| 112 return video_config; | |
| 113 } | |
| 114 | |
| 115 video_config.codec = ToVideoCodec(config.codec()); | |
| 116 video_config.profile = ToVideoProfile(config.profile()); | |
| 117 video_config.extra_data.assign( | |
| 118 config.extra_data(), config.extra_data()+config.extra_data_size()); | |
| 119 video_config.is_encrypted = config.is_encrypted(); | |
| 120 return video_config; | |
| 121 } | |
| 122 | |
| 123 } // namespace media | |
| 124 } // namespace chromecast | |
| OLD | NEW |