SDL_audiolib 0.0.0
An audio decoding, resampling and mixing library
Aulib::DecoderFlac Class Reference

libFLAC decoder. More...

#include <DecoderFlac.h>

Inheritance diagram for Aulib::DecoderFlac:
Aulib::Decoder

Public Types

enum class  FileFormat { Detect , Flac , Ogg }
 Format of the input file. More...
 

Public Member Functions

 DecoderFlac (FileFormat file_type=FileFormat::Detect)
 
 ~DecoderFlac () override
 
auto open (SDL_RWops *rwops) -> bool override
 
auto getChannels () const -> int override
 
auto getRate () const -> int override
 
auto rewind () -> bool override
 
auto duration () const -> std::chrono::microseconds override
 
auto seekToTime (std::chrono::microseconds pos) -> bool override
 
- Public Member Functions inherited from Aulib::Decoder
 Decoder ()
 
virtual ~Decoder ()
 
 Decoder (const Decoder &)=delete
 
auto operator= (const Decoder &) -> Decoder &=delete
 
auto isOpen () const -> bool
 
auto decode (float buf[], int len, bool &callAgain) -> int
 
virtual auto open (SDL_RWops *rwops) -> bool=0
 
virtual auto getChannels () const -> int=0
 
virtual auto getRate () const -> int=0
 
virtual auto rewind () -> bool=0
 
virtual auto duration () const -> std::chrono::microseconds=0
 
virtual auto seekToTime (std::chrono::microseconds pos) -> bool=0
 

Protected Member Functions

auto doDecoding (float buf[], int len, bool &callAgain) -> int override
 
- Protected Member Functions inherited from Aulib::Decoder
void setIsOpen (bool f)
 
virtual auto doDecoding (float buf[], int len, bool &callAgain) -> int=0
 

Additional Inherited Members

- Static Public Member Functions inherited from Aulib::Decoder
template<class... Decoders>
static auto decoderFor (const std::string &filename) -> std::unique_ptr< Decoder >
 Find and return an instance of the first decoder that can open the specified file. More...
 
template<class... Decoders>
static auto decoderFor (SDL_RWops *rwops) -> std::unique_ptr< Decoder >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
static auto decoderFor (const std::string &filename) -> std::unique_ptr< Decoder >
 Find and return an instance of the first decoder that can open the specified file. More...
 
static auto decoderFor (SDL_RWops *rwops) -> std::unique_ptr< Decoder >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 

Detailed Description

libFLAC decoder.

The decoder supports raw FLAC data (as found in .flac files) or FLAC streams inside an Ogg container (as found in .ogg or .oga files.) The format can be automatically detected if the input is seekable.

Note
For Ogg support to work, libFLAC must have been built with Ogg support.

Member Enumeration Documentation

◆ FileFormat

enum class Aulib::DecoderFlac::FileFormat
strong

Format of the input file.

Enumerator
Detect 

Try and detect the format. Only works if the input is seekable.

Flac 

Assume input is raw FLAC.

Ogg 

Assume input is FLAC data inside an Ogg container.

Constructor & Destructor Documentation

◆ DecoderFlac()

Aulib::DecoderFlac::DecoderFlac ( FileFormat  file_type = FileFormat::Detect)

◆ ~DecoderFlac()

Aulib::DecoderFlac::~DecoderFlac ( )
override

Member Function Documentation

◆ doDecoding()

auto Aulib::DecoderFlac::doDecoding ( float  buf[],
int  len,
bool &  callAgain 
) -> int
overrideprotectedvirtual

Implements Aulib::Decoder.

◆ duration()

auto Aulib::DecoderFlac::duration ( ) const -> std::chrono::microseconds
overridevirtual

Implements Aulib::Decoder.

◆ getChannels()

auto Aulib::DecoderFlac::getChannels ( ) const -> int
overridevirtual

Implements Aulib::Decoder.

◆ getRate()

auto Aulib::DecoderFlac::getRate ( ) const -> int
overridevirtual

Implements Aulib::Decoder.

◆ open()

auto Aulib::DecoderFlac::open ( SDL_RWops *  rwops) -> bool
overridevirtual

Implements Aulib::Decoder.

◆ rewind()

auto Aulib::DecoderFlac::rewind ( ) -> bool
overridevirtual

Implements Aulib::Decoder.

◆ seekToTime()

auto Aulib::DecoderFlac::seekToTime ( std::chrono::microseconds  pos) -> bool
overridevirtual

Implements Aulib::Decoder.