arduino-audio-tools
All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Modules Pages
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
EncoderALAC Class Reference

ALAC (Apple Lossless Audio Codec) encoder. This class is responsible for encoding audio data into ALAC format. The implementaion is based on https://github.com/macosforge/alac. More...

#include <CodecALAC.h>

Inheritance diagram for EncoderALAC:
AudioEncoder AudioWriter AudioInfoSupport

Public Member Functions

 EncoderALAC (int frameSize=kALACDefaultFrameSize)
 Default constructor: you can define your own optimized frame size.
 
AudioInfo audioInfo () override
 provides the actual input AudioInfo
 
virtual AudioInfo audioInfoOut ()
 
bool begin () override
 
virtual bool begin (AudioInfo info)
 
ALACBinaryConfigbinaryConfig ()
 Provide the magic coookie for the decoder.
 
ALACSpecificConfig config ()
 Provide the configuration of the encoder.
 
void end () override
 
int frameSize ()
 Determins the actually defined number of frames.
 
const char * mime () override
 Mime type: returns audio/alac.
 
 operator bool ()
 Check if the encoder is ready to encode.
 
void setAudioInfo (AudioInfo from) override
 Defines the sample rate, number of channels and bits per sample.
 
void setFastMode (bool fast)
 Defines if the encoder should use fast mode.
 
void setFrameSize (int frames)
 Defines the frame size for the decoder: default is 4096 frames.
 
void setOutput (Print &out_stream) override
 
size_t write (const uint8_t *data, size_t len) override
 Encode the audio samples into ALAC format.
 

Protected Types

enum  { kFormatFlag_16BitSourceData = 1 , kFormatFlag_20BitSourceData = 2 , kFormatFlag_24BitSourceData = 3 , kFormatFlag_32BitSourceData = 4 }
 

Protected Member Functions

AudioFormatDescription getInputFormat ()
 
AudioFormatDescription getOutputFormat ()
 
uint32_t getOutputFormatFlags (uint32_t bits)
 
void writeBlocking (Print *out, uint8_t *data, size_t len)
 

Protected Attributes

ALACBinaryConfig bin
 
ALACSpecificConfig cfg
 
ALACEncoder enc
 
int frame_size = kALACDefaultFrameSize
 
SingleBuffer< uint8_t > in_buffer
 
AudioInfo info
 
AudioFormatDescription input_format
 
bool is_started = false
 
Vector< uint8_t > out_buffer
 
AudioFormatDescription out_format
 
Printp_print = nullptr
 

Detailed Description

ALAC (Apple Lossless Audio Codec) encoder. This class is responsible for encoding audio data into ALAC format. The implementaion is based on https://github.com/macosforge/alac.

Author
Phil Schatzmann

Member Function Documentation

◆ audioInfo()

AudioInfo audioInfo ( )
inlineoverridevirtualinherited

provides the actual input AudioInfo

Implements AudioInfoSupport.

Reimplemented in CodecNOP, and BinaryContainerEncoder.

◆ audioInfoOut()

virtual AudioInfo audioInfoOut ( )
inlinevirtualinherited

◆ begin() [1/2]

bool begin ( )
inlineoverridevirtual

Implements AudioWriter.

◆ begin() [2/2]

virtual bool begin ( AudioInfo  info)
inlinevirtualinherited

Reimplemented in AACEncoderFDK.

◆ end()

void end ( )
inlineoverridevirtual

Implements AudioWriter.

◆ mime()

const char * mime ( )
inlineoverridevirtual

Mime type: returns audio/alac.

Implements AudioEncoder.

◆ operator bool()

operator bool ( )
inlinevirtual

Check if the encoder is ready to encode.

Implements AudioWriter.

◆ setAudioInfo()

void setAudioInfo ( AudioInfo  from)
inlineoverridevirtualinherited

Defines the sample rate, number of channels and bits per sample.

Implements AudioWriter.

Reimplemented in MP3EncoderLAME, EncoderBasic, CodecChain, FLACEncoder, OpusAudioEncoder, WAVEncoder, CodecNOP, G7xxEncoder, BinaryContainerEncoder, OggContainerEncoder, and OSCContainerEncoder.

◆ setOutput()

void setOutput ( Print out_stream)
inlineoverridevirtual

Implements AudioWriter.

◆ write()

size_t write ( const uint8_t *  data,
size_t  len 
)
inlineoverridevirtual

Encode the audio samples into ALAC format.

Implements AudioWriter.


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