|
arduino-audio-tools
|
A simple M4A audio data demuxer which is providing AAC, MP3 and ALAC frames. More...
#include <M4AAudioDemuxer.h>
Public Types | |
| enum class | Codec { Unknown , AAC , ALAC , MP3 } |
| using | FrameCallback = std::function< void(const Frame &, void *ref)> |
Public Member Functions | |
| M4AAudioDemuxer () | |
| Constructor. Sets up parser callbacks. | |
| int | availableForWrite () |
| Returns the available space for writing. | |
| bool | begin () |
| Initializes the demuxer and resets state. | |
| void | copyFrom (M4ACommonDemuxer &source) |
| Vector< uint8_t > & | getALACMagicCookie () |
| Returns the ALAC magic cookie (codec config). | |
| M4AAudioConfig | getM4AAudioConfig () |
| uint32_t | getSampleCount () const |
| samples in stsz | |
| uint32_t | getStszFileOffset () const |
| File offset of stsz box. | |
| void | resize (int size) |
| void | setAACConfig (int profile, int srIdx, int chCfg) |
| Sets the AAC configuration for ADTS header generation. | |
| void | setCallback (FrameCallback cb) override |
| Defines the callback that returns the audio frames. | |
| void | setChunkOffsetsBuffer (BaseBuffer< uint32_t > &buffer) |
| Sets the buffer to use for sample sizes. | |
| void | setM4AAudioConfig (M4AAudioConfig cfg) |
| void | setReference (void *ref) |
| Sets a reference pointer for callbacks. | |
| void | setSampleSizesBuffer (BaseBuffer< stsz_sample_size_t > &buffer) |
| Sets the buffer to use for sample sizes. | |
| void | write (const uint8_t *data, size_t len) |
| Writes data to the demuxer for parsing. | |
Protected Member Functions | |
| bool | checkType (uint8_t *buffer, const char *type, int offset) |
| Checks if the buffer at the given offset matches the specified type. | |
| void | onAlac (const MP4Parser::Box &box) |
| Handles the alac box. | |
| void | onEsds (const MP4Parser::Box &box) |
| Handles the esds (Elementary Stream Descriptor) box. | |
| void | onMp4a (const MP4Parser::Box &box) |
| Handles the mp4a box. | |
| void | onStsd (const MP4Parser::Box &box) |
| void | onStsz (MP4Parser::Box &box) |
| Handles the stsz (Sample Size) box. | |
| void | printHexDump (const MP4Parser::Box &box) |
| uint32_t | readU32Buffer () |
| void | setupParser () override |
| Setup all parser callbacks. | |
Static Protected Member Functions | |
| static uint32_t | readU32 (const uint32_t num) |
| static uint32_t | readU32 (const uint8_t *p) |
| Reads a 32-bit big-endian unsigned integer from a buffer. | |
Protected Attributes | |
| M4AAudioConfig | audio_config |
| SingleBuffer< uint8_t > | buffer |
| Buffer for incremental data. | |
| uint32_t | chunk_offsets_count = 0 |
| size_t | default_size = 2 * 1024 |
| Default buffer size. | |
| FrameCallback | frame_callback = nullptr |
| MP4Parser | parser |
| Underlying MP4 parser. | |
| void * | ref = nullptr |
| Reference pointer for callbacks. | |
| uint32_t | sample_count = 0 |
| Number of samples in stsz. | |
| SampleExtractor | sampleExtractor |
| Extractor for audio samples. | |
| bool | stco_processed = false |
| Marks the stco table as processed. | |
| bool | stsd_processed = false |
| uint32_t | stsz_offset = 0 |
| bool | stsz_processed = false |
| Marks the stsz table as processed. | |
A simple M4A audio data demuxer which is providing AAC, MP3 and ALAC frames.
|
inline |
Constructor. Sets up parser callbacks.
|
inline |
Returns the available space for writing.
|
inline |
Initializes the demuxer and resets state.
Checks if the buffer at the given offset matches the specified type.
| buffer | Pointer to the buffer. |
| type | 4-character type string (e.g. "mp4a"). |
| offset | Offset in the buffer to check. |
|
inline |
Returns the ALAC magic cookie (codec config).
|
inlineinherited |
|
inlineinherited |
samples in stsz
|
inlineinherited |
File offset of stsz box.
|
inlineprotectedinherited |
Handles the alac box.
| box | MP4 box. |
|
inlineprotectedinherited |
Handles the esds (Elementary Stream Descriptor) box.
| box | MP4 box. |
|
inlineprotectedinherited |
Handles the mp4a box.
| box | MP4 box. |
for mp4a we expect to contain a esds: child boxes start at 36
|
inlineprotectedinherited |
|
inlineprotectedinherited |
Handles the stsz (Sample Size) box.
| box | MP4 box. |
|
inlineprotectedinherited |
Reads a 32-bit big-endian unsigned integer from a buffer.
| p | Pointer to buffer. |
|
inlineprotectedinherited |
Sets the AAC configuration for ADTS header generation.
| profile | AAC profile. |
| srIdx | Sample rate index. |
| chCfg | Channel configuration. |
|
inlineoverridevirtual |
Defines the callback that returns the audio frames.
| cb | Frame callback function. |
Reimplemented from M4ACommonDemuxer.
|
inlineinherited |
Sets the buffer to use for sample sizes.
| buffer | Reference to the buffer to use. |
|
inlineinherited |
Sets a reference pointer for callbacks.
| ref | Reference pointer. |
|
inlineinherited |
Sets the buffer to use for sample sizes.
| buffer | Reference to the buffer to use. |
|
inlineoverrideprotectedvirtual |
Setup all parser callbacks.
Implements M4ACommonDemuxer.
Writes data to the demuxer for parsing.
| data | Pointer to input data. |
| len | Length of input data. |
|
protectedinherited |
|
protectedinherited |
Buffer for incremental data.
|
protectedinherited |
|
protectedinherited |
Default buffer size.
|
protectedinherited |
|
protectedinherited |
Underlying MP4 parser.
|
protectedinherited |
Number of samples in stsz.
|
protectedinherited |
Extractor for audio samples.
|
protectedinherited |