Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: chromecast/media/cma/base/decoder_config_adapter.cc

Issue 1074383002: Introduce VideoConfig/AudioConfig class for CMA backend (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Split the strcutre into {Audio|Video}Config Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698