// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_BASE_BITSTREAM_AUDIO_CODECS_H_
#define CHROMECAST_BASE_BITSTREAM_AUDIO_CODECS_H_
#include <string>
namespace chromecast {
constexpr int kBitstreamAudioCodecNone = 0b000000;
constexpr int kBitstreamAudioCodecAc3 = 0b000001;
constexpr int kBitstreamAudioCodecDts = 0b000010;
constexpr int kBitstreamAudioCodecDtsHd = 0b000100;
constexpr int kBitstreamAudioCodecEac3 = 0b001000;
constexpr int kBitstreamAudioCodecPcmSurround = 0b010000;
constexpr int kBitstreamAudioCodecMpegHAudio = 0b100000;
constexpr int kBitstreamAudioCodecDtsXP2 = 0b1000000;
constexpr int kBitstreamAudioCodecAll = 0b1111111;
// Supported bitstream audio codecs and their associated properties.
struct BitstreamAudioCodecsInfo {
// Bitmap of supported bitstream audio codecs.
int codecs = kBitstreamAudioCodecNone;
// Bitmap specifying which of the corresponding codecs in |codecs| support
// spatial rendering.
int spatial_rendering = kBitstreamAudioCodecNone;
BitstreamAudioCodecsInfo operator&(
const BitstreamAudioCodecsInfo& other) const;
bool operator==(const BitstreamAudioCodecsInfo& other) const;
bool operator!=(const BitstreamAudioCodecsInfo& other) const;
BitstreamAudioCodecsInfo ApplyCodecMask(int mask) const;
};
std::string BitstreamAudioCodecsToString(int codecs);
std::string BitstreamAudioCodecsInfoToString(
const BitstreamAudioCodecsInfo& info);
} // namespace chromecast
#endif // CHROMECAST_BASE_BITSTREAM_AUDIO_CODECS_H_