31#include "utility/system_io/file.hpp"
33namespace utility::sound
89 enum class AudioDecoderType {
142 virtual bool canDecode(
const std::string &filePath)
const = 0;
154 AudioDecoderType type = AudioDecoderType::UNKNOWN)
const = 0;
170 virtual std::shared_ptr<AudioBuffer>
171 decode(std::shared_ptr<utility::File> file) = 0;
186 ALenum
getALFormat(uint16_t channels, uint16_t bitsPerSample)
const;
Abstract base class for audio decoders.
virtual bool canDecode(const std::string &filePath) const =0
Determines whether the decoder supports the specified file.
virtual bool canDecode(AudioDecoderType type=AudioDecoderType::UNKNOWN) const =0
Determines whether the decoder supports the specified audio type.
virtual std::shared_ptr< AudioBuffer > decode(std::shared_ptr< utility::File > file)=0
Decodes an audio file into an AudioBuffer.
ALenum getALFormat(uint16_t channels, uint16_t bitsPerSample) const
Converts audio properties to an OpenAL format.
virtual ~AAudioDecoder()=default
Virtual destructor.
Contains decoded Pulse-Code Modulation (PCM) audio data.
uint16_t bitsPerSample
Number of bits used to represent each sample.
uint16_t channels
Number of audio channels.
std::vector< std::byte > samples
Raw PCM sample data.
ALenum format
OpenAL format corresponding to the decoded audio data.
uint32_t sampleRate
Audio sample rate in hertz.