Files
MuditaOS/module-audio/Audio/AudioFormat.hpp
Marcin Smoczyński 8b21df135c [EGD-5742] Add audio format checking
Check if decoder's file format is supported by the sink audio device
before playing the sound. Add list of supported formats to each of audio
devices.

Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
2021-04-12 10:00:00 +02:00

51 lines
1.7 KiB
C++

// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include <set>
#include <string>
#include <vector>
namespace audio
{
class AudioFormat
{
private:
unsigned int sampleRate = 0;
unsigned int bitWidth = 0;
unsigned int channels = 0;
public:
constexpr AudioFormat() = default;
constexpr AudioFormat(unsigned int sampleRate, unsigned int bitWidth, unsigned int channels) noexcept
: sampleRate(sampleRate), bitWidth(bitWidth), channels(channels)
{}
auto getSampleRate() const noexcept -> unsigned int;
auto getBitWidth() const noexcept -> unsigned int;
auto getChannels() const noexcept -> unsigned int;
auto getBitrate() const noexcept -> unsigned long int;
auto toString() const -> std::string;
auto operator==(const AudioFormat &other) const -> bool;
auto operator!=(const AudioFormat &other) const -> bool;
auto operator>(const AudioFormat &other) const -> bool;
auto operator<(const AudioFormat &other) const -> bool;
auto operator<=(const AudioFormat &other) const -> bool;
auto operator>=(const AudioFormat &other) const -> bool;
auto isValid() const noexcept -> bool;
auto isNull() const noexcept -> bool;
static auto makeMatrix(std::set<unsigned int> sampleRates,
std::set<unsigned int> bitWidths,
std::set<unsigned int> channels) -> std::vector<AudioFormat>;
};
static constexpr inline auto nullFormat = AudioFormat();
}; // namespace audio