| // Copyright 2016 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 "cobalt/media/base/audio_codecs.h" |
| |
| #include "base/logging.h" |
| #include "base/strings/string_util.h" |
| |
| namespace cobalt { |
| namespace media { |
| |
| // These names come from src/third_party/ffmpeg/libavcodec/codec_desc.c |
| std::string GetCodecName(AudioCodec codec) { |
| switch (codec) { |
| case kUnknownAudioCodec: |
| return "unknown"; |
| case kCodecAAC: |
| return "aac"; |
| case kCodecMP3: |
| return "mp3"; |
| case kCodecPCM: |
| case kCodecPCM_S16BE: |
| case kCodecPCM_S24BE: |
| return "pcm"; |
| case kCodecVorbis: |
| return "vorbis"; |
| case kCodecFLAC: |
| return "flac"; |
| case kCodecAMR_NB: |
| return "amr_nb"; |
| case kCodecAMR_WB: |
| return "amr_wb"; |
| case kCodecPCM_MULAW: |
| return "pcm_mulaw"; |
| case kCodecGSM_MS: |
| return "gsm_ms"; |
| case kCodecOpus: |
| return "opus"; |
| case kCodecPCM_ALAW: |
| return "pcm_alaw"; |
| case kCodecEAC3: |
| return "eac3"; |
| case kCodecALAC: |
| return "alac"; |
| case kCodecAC3: |
| return "ac3"; |
| } |
| NOTREACHED(); |
| return ""; |
| } |
| |
| AudioCodec StringToAudioCodec(const std::string& codec_id) { |
| if (codec_id == "aac") return kCodecAAC; |
| if (codec_id == "ac-3" || codec_id == "mp4a.A5") return kCodecAC3; |
| if (codec_id == "ec-3" || codec_id == "mp4a.A6") return kCodecEAC3; |
| if (codec_id == "mp3") return kCodecMP3; |
| if (codec_id == "alac") return kCodecALAC; |
| if (codec_id == "flac") return kCodecFLAC; |
| if (codec_id == "opus") return kCodecOpus; |
| if (codec_id == "vorbis") return kCodecVorbis; |
| if (StartsWith(codec_id, "mp4a.40.", base::CompareCase::SENSITIVE)) |
| return kCodecAAC; |
| return kUnknownAudioCodec; |
| } |
| |
| } // namespace media |
| } // namespace cobalt |