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

Unified 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: Util function name change 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 side-by-side diff with in-line comments
Download patch
Index: chromecast/media/cma/base/decoder_config_adapter.cc
diff --git a/chromecast/media/cma/base/decoder_config_adapter.cc b/chromecast/media/cma/base/decoder_config_adapter.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0935ed7dff7de601fdd05eec6646533dcb22659c
--- /dev/null
+++ b/chromecast/media/cma/base/decoder_config_adapter.cc
@@ -0,0 +1,126 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chromecast/media/cma/base/decoder_config_adapter.h"
+
+#include "base/logging.h"
+#include "media/base/channel_layout.h"
+
+namespace chromecast {
+namespace media {
+
+namespace {
+
+// Converts ::media::AudioCodec to chromecast::media::AudioCodec. Any unknown or
+// unsupported codec will be converted to chromecast::media::kCodecUnknown.
+AudioCodec ToAudioCodec(const ::media::AudioCodec audio_codec) {
+ switch (audio_codec) {
+ case ::media::kCodecAAC:
+ return kCodecAAC;
+ case ::media::kCodecMP3:
+ return kCodecMP3;
+ case ::media::kCodecPCM:
+ return kCodecPCM;
+ case ::media::kCodecPCM_S16BE:
+ return kCodecPCM_S16BE;
+ case ::media::kCodecVorbis:
+ return kCodecVorbis;
+ default:
+ 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
+ }
+ return kAudioCodecUnknown;
+}
+
+// Converts ::media::VideoCodec to chromecast::media::VideoCodec. Any unknown or
+// unsupported codec will be converted to chromecast::media::kCodecUnknown.
+VideoCodec ToVideoCodec(const ::media::VideoCodec video_codec) {
+ switch (video_codec) {
+ case ::media::kCodecH264:
+ return kCodecH264;
+ case ::media::kCodecVP8:
+ return kCodecVP8;
+ case ::media::kCodecVP9:
+ return kCodecVP9;
+ default:
+ LOG(INFO) << "Unsupported video codec " << video_codec;
+ }
+ return kVideoCodecUnknown;
+}
+
+// Converts ::media::VideoCodecProfile to chromecast::media::VideoProfile.
+VideoProfile ToVideoProfile(const ::media::VideoCodecProfile codec_profile) {
+ switch(codec_profile) {
+ case ::media::H264PROFILE_BASELINE:
+ return kH264Baseline;
+ case ::media::H264PROFILE_MAIN:
+ return kH264Main;
+ case ::media::H264PROFILE_EXTENDED:
+ return kH264Extended;
+ case ::media::H264PROFILE_HIGH:
+ return kH264High;
+ case ::media::H264PROFILE_HIGH10PROFILE:
+ return kH264High10;
+ case ::media::H264PROFILE_HIGH422PROFILE:
+ return kH264High422;
+ case ::media::H264PROFILE_HIGH444PREDICTIVEPROFILE:
+ return kH264High444Predictive;
+ case ::media::H264PROFILE_SCALABLEBASELINE:
+ return kH264ScalableBaseline;
+ case ::media::H264PROFILE_SCALABLEHIGH:
+ return kH264ScalableHigh;
+ case ::media::H264PROFILE_STEREOHIGH:
+ return kH264Stereohigh;
+ case ::media::H264PROFILE_MULTIVIEWHIGH:
+ return kH264MultiviewHigh;
+ case ::media::VP8PROFILE_ANY:
+ return kVP8ProfileAny;
+ case ::media::VP9PROFILE_ANY:
+ return kVP9ProfileAny;
+ default:
+ LOG(INFO) << "Unsupported video codec profile " << codec_profile;
+ }
+ return kVideoProfileUnknown;
+}
+
+} // namespace
+
+// static
+AudioConfig DecoderConfigAdapter::ToCastAudioConfig(
+ const ::media::AudioDecoderConfig& config) {
+ AudioConfig audio_config;
+ if (!config.IsValidConfig()) {
+ return audio_config;
+ }
+
+ audio_config.codec = ToAudioCodec(config.codec());
+ audio_config.bytes_per_channel = config.bytes_per_channel();
+ audio_config.channel_number =
+ ::media::ChannelLayoutToChannelCount(config.channel_layout()),
+ audio_config.samples_per_second = config.samples_per_second();
+ audio_config.extra_data = (config.extra_data_size() > 0) ?
+ config.extra_data() : nullptr;
+ audio_config.extra_data_size = config.extra_data_size();
+ audio_config.is_encrypted = config.is_encrypted();
+ return audio_config;
+}
+
+// static
+VideoConfig DecoderConfigAdapter::ToCastVideoConfig(
+ const ::media::VideoDecoderConfig& config) {
+ VideoConfig video_config;
+ if (!config.IsValidConfig()) {
+ return video_config;
+ }
+
+ video_config.codec = ToVideoCodec(config.codec());
+ video_config.profile = ToVideoProfile(config.profile());
+ video_config.extra_data = (config.extra_data_size() > 0) ?
+ config.extra_data() : nullptr;
+ video_config.extra_data_size = config.extra_data_size();
+ video_config.is_encrypted = config.is_encrypted();
+ return video_config;
+}
+
+} // namespace media
+} // namespace chromecast

Powered by Google App Engine
This is Rietveld 408576698