arduino-audio-tools
Loading...
Searching...
No Matches
DecoderALAC Class Reference

ALAC (Apple Lossless Audio Codec) decoder. This class depends on https://github.com/pschatzmann/codec-alac. This implementaion is based on https://github.com/macosforge/alac. More...

#include <CodecALAC.h>

Inheritance diagram for DecoderALAC:
AudioDecoder AudioWriter AudioInfoSource AudioWriter AudioInfoSource AudioInfoSupport AudioInfoSupport AudioInfoSupport AudioInfoSupport

Public Member Functions

 DecoderALAC (int frameSize=kALACDefaultFrameSize)
 Default constructor: you can define your own optimized frame size.
virtual void addNotifyAudioChange (AudioInfoSupport &bi)
 Adds target to be notified about audio changes.
virtual void addNotifyAudioChange (AudioInfoSupport &bi)
 Adds target to be notified about audio changes.
AudioInfo audioInfo () override
 provides the actual input AudioInfo
AudioInfo audioInfo () override
 provides the actual input AudioInfo
virtual AudioInfo audioInfoOut ()
virtual AudioInfo audioInfoOut ()
bool begin () override
bool begin () override
virtual bool begin (AudioInfo info) override
virtual bool begin (AudioInfo info) override
virtual void clearNotifyAudioChange ()
 Deletes all change notify subscriptions.
virtual void clearNotifyAudioChange ()
 Deletes all change notify subscriptions.
void end () override
void end () override
int frameSize ()
 Provides the actual frame size.
Print * getOutput ()
Print * getOutput ()
bool isNotifyActive ()
 Checks if the automatic AudioInfo update is active.
bool isNotifyActive ()
 Checks if the automatic AudioInfo update is active.
virtual bool isResultPCM ()
 Returns true to indicate that the decoding result is PCM data.
virtual bool isResultPCM ()
 Returns true to indicate that the decoding result is PCM data.
const char * mime () override
 Provides the mime type of the data that is expected by this decoder.
 operator bool ()
virtual bool removeNotifyAudioChange (AudioInfoSupport &bi)
 Removes a target in order not to be notified about audio changes.
virtual bool removeNotifyAudioChange (AudioInfoSupport &bi)
 Removes a target in order not to be notified about audio changes.
void setAudioInfo (AudioInfo from) override
 for most decoders this is not needed
void setAudioInfo (AudioInfo from) override
 Update the global decoder info.
bool setCodecConfig (ALACBinaryConfig cfg)
 write Magic Cookie (ALACSpecificConfig)
bool setCodecConfig (ALACSpecificConfig config)
bool setCodecConfig (const uint8_t *data, size_t len) override
 write Magic Cookie (ALACSpecificConfig)
void setFrameSize (int frames)
void setNotifyActive (bool flag)
 Deactivate/Reactivate automatic AudioInfo updates: (default is active).
void setNotifyActive (bool flag)
 Deactivate/Reactivate automatic AudioInfo updates: (default is active).
virtual void setOutput (AudioOutput &out_stream)
 Defines where the decoded result is written to.
virtual void setOutput (AudioOutput &out_stream)
 Defines where the decoded result is written to.
virtual void setOutput (AudioStream &out_stream)
 Defines where the decoded result is written to.
virtual void setOutput (AudioStream &out_stream)
 Defines where the decoded result is written to.
virtual void setOutput (Print &out_stream) override
 Defines where the decoded result is written to.
virtual void setOutput (Print &out_stream) override
 Defines where the decoded result is written to.
size_t write (const uint8_t *encodedFrame, size_t encodedLen) override
 we expect the write is called for a complete frame!

Public Attributes

int id
 custom id to be used by application

Protected Member Functions

void convertToNetworkFormat (ALACSpecificConfig &config)
 Convert to big endian so that we can use it in Init().
void notifyAudioChange (AudioInfo info)
void notifyAudioChange (AudioInfo info)
int outputBufferSize ()
 Calculate the output buffer size based on the current configuration.
void setDefaultConfig ()
void writeBlocking (Print *out, uint8_t *data, size_t len)
void writeBlocking (Print *out, uint8_t *data, size_t len)

Protected Attributes

struct BitBuffer bits
ALACDecoder dec
AudioInfo info
bool is_init = false
bool is_notify_active = true
Vector< AudioInfoSupport * > notify_vector
Print * p_print = nullptr
Vector< uint8_t > result_buffer

Detailed Description

ALAC (Apple Lossless Audio Codec) decoder. This class depends on https://github.com/pschatzmann/codec-alac. This implementaion is based on https://github.com/macosforge/alac.

Note
Please note that this codec usually needs a container (usually MP4): The write() method expects a complete frame to be written! The decoder also expects to get the config from the encoder, however we have some fallback functionality that uses the AudioInfo and the frame size defined in the constructor.
Author
Phil Schatzmann

Constructor & Destructor Documentation

◆ DecoderALAC()

DecoderALAC ( int frameSize = kALACDefaultFrameSize)
inline

Default constructor: you can define your own optimized frame size.

Member Function Documentation

◆ addNotifyAudioChange() [1/2]

virtual void addNotifyAudioChange ( AudioInfoSupport & bi)
inlinevirtualinherited

Adds target to be notified about audio changes.

Reimplemented in CodecNOP, CodecNOP, EncodedAudioOutput, and EncodedAudioStream.

◆ addNotifyAudioChange() [2/2]

virtual void addNotifyAudioChange ( AudioInfoSupport & bi)
inlinevirtualinherited

Adds target to be notified about audio changes.

Reimplemented in CodecNOP, CodecNOP, EncodedAudioOutput, and EncodedAudioStream.

◆ audioInfo() [1/2]

◆ audioInfo() [2/2]

◆ audioInfoOut() [1/2]

◆ audioInfoOut() [2/2]

◆ begin() [1/4]

◆ begin() [2/4]

◆ begin() [3/4]

virtual bool begin ( AudioInfo info)
inlineoverridevirtualinherited

Reimplemented from AudioWriter.

◆ begin() [4/4]

virtual bool begin ( AudioInfo info)
inlineoverridevirtualinherited

Reimplemented from AudioWriter.

◆ clearNotifyAudioChange() [1/2]

virtual void clearNotifyAudioChange ( )
inlinevirtualinherited

◆ clearNotifyAudioChange() [2/2]

virtual void clearNotifyAudioChange ( )
inlinevirtualinherited

◆ convertToNetworkFormat()

void convertToNetworkFormat ( ALACSpecificConfig & config)
inlineprotected

Convert to big endian so that we can use it in Init().

◆ end() [1/2]

◆ end() [2/2]

◆ frameSize()

int frameSize ( )
inline

Provides the actual frame size.

◆ getOutput() [1/2]

Print * getOutput ( )
inlineinherited

◆ getOutput() [2/2]

Print * getOutput ( )
inlineinherited

◆ isNotifyActive() [1/2]

bool isNotifyActive ( )
inlineinherited

Checks if the automatic AudioInfo update is active.

◆ isNotifyActive() [2/2]

bool isNotifyActive ( )
inlineinherited

Checks if the automatic AudioInfo update is active.

◆ isResultPCM() [1/2]

virtual bool isResultPCM ( )
inlinevirtualinherited

Returns true to indicate that the decoding result is PCM data.

Reimplemented in ContainerM4A, CopyDecoder, and DecoderNetworkFormat.

◆ isResultPCM() [2/2]

virtual bool isResultPCM ( )
inlinevirtualinherited

Returns true to indicate that the decoding result is PCM data.

Reimplemented in ContainerM4A, CopyDecoder, and DecoderNetworkFormat.

◆ mime()

const char * mime ( )
inlineoverridevirtual

Provides the mime type of the data that is expected by this decoder.

Implements AudioDecoder.

◆ notifyAudioChange() [1/2]

void notifyAudioChange ( AudioInfo info)
inlineprotectedinherited

◆ notifyAudioChange() [2/2]

void notifyAudioChange ( AudioInfo info)
inlineprotectedinherited

◆ operator bool()

operator bool ( )
inlinevirtual

Implements AudioWriter.

◆ outputBufferSize()

int outputBufferSize ( )
inlineprotected

Calculate the output buffer size based on the current configuration.

◆ removeNotifyAudioChange() [1/2]

virtual bool removeNotifyAudioChange ( AudioInfoSupport & bi)
inlinevirtualinherited

Removes a target in order not to be notified about audio changes.

◆ removeNotifyAudioChange() [2/2]

virtual bool removeNotifyAudioChange ( AudioInfoSupport & bi)
inlinevirtualinherited

Removes a target in order not to be notified about audio changes.

◆ setAudioInfo() [1/2]

void setAudioInfo ( AudioInfo from)
inlineoverridevirtualinherited

for most decoders this is not needed

Implements AudioWriter.

Reimplemented in CodecNOP, and CodecNOP.

◆ setAudioInfo() [2/2]

void setAudioInfo ( AudioInfo from)
inlineoverride

Update the global decoder info.

◆ setCodecConfig() [1/3]

bool setCodecConfig ( ALACBinaryConfig cfg)
inline

write Magic Cookie (ALACSpecificConfig)

◆ setCodecConfig() [2/3]

bool setCodecConfig ( ALACSpecificConfig config)
inline

◆ setCodecConfig() [3/3]

bool setCodecConfig ( const uint8_t * data,
size_t len )
inlineoverridevirtual

write Magic Cookie (ALACSpecificConfig)

Reimplemented from AudioDecoder.

◆ setDefaultConfig()

void setDefaultConfig ( )
inlineprotected

◆ setFrameSize()

void setFrameSize ( int frames)
inline

Set the default frame size: this will be overwritten if you call setCodecConfig()

◆ setNotifyActive() [1/2]

void setNotifyActive ( bool flag)
inlineinherited

Deactivate/Reactivate automatic AudioInfo updates: (default is active).

◆ setNotifyActive() [2/2]

void setNotifyActive ( bool flag)
inlineinherited

Deactivate/Reactivate automatic AudioInfo updates: (default is active).

◆ setOutput() [1/6]

virtual void setOutput ( AudioOutput & out_stream)
inlinevirtualinherited

Defines where the decoded result is written to.

◆ setOutput() [2/6]

virtual void setOutput ( AudioOutput & out_stream)
inlinevirtualinherited

Defines where the decoded result is written to.

◆ setOutput() [3/6]

virtual void setOutput ( AudioStream & out_stream)
inlinevirtualinherited

Defines where the decoded result is written to.

◆ setOutput() [4/6]

virtual void setOutput ( AudioStream & out_stream)
inlinevirtualinherited

Defines where the decoded result is written to.

◆ setOutput() [5/6]

◆ setOutput() [6/6]

◆ write()

size_t write ( const uint8_t * encodedFrame,
size_t encodedLen )
inlineoverridevirtual

we expect the write is called for a complete frame!

Implements AudioWriter.

◆ writeBlocking() [1/2]

void writeBlocking ( Print * out,
uint8_t * data,
size_t len )
inlineprotectedinherited

◆ writeBlocking() [2/2]

void writeBlocking ( Print * out,
uint8_t * data,
size_t len )
inlineprotectedinherited

Member Data Documentation

◆ bits

struct BitBuffer bits
protected

◆ dec

ALACDecoder dec
protected

◆ id

int id
inherited

custom id to be used by application

◆ info

AudioInfo info
protectedinherited

◆ is_init

bool is_init = false
protected

◆ is_notify_active

bool is_notify_active = true
protectedinherited

◆ notify_vector

Vector< AudioInfoSupport * > notify_vector
protectedinherited

◆ p_print

Print * p_print = nullptr
protectedinherited

◆ result_buffer

Vector<uint8_t> result_buffer
protected

The documentation for this class was generated from the following file: