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; | |
gunsch-google
2015/05/06 01:32:42
should these be LOG(ERROR)s? I looked back and the
erickung1
2015/05/06 03:01:33
Sure, I'll make this and line #46 to Error, but le
| |
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::ToCastAudioConfig( | |
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::ToCastVideoConfig( | |
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 |