|
arduino-audio-tools
|
Abstract base class for M4A/MP4 demuxers. Provides shared functionality for both file-based and stream-based demuxers. More...
#include <M4ACommonDemuxer.h>
Classes | |
| struct | ESDSParser |
| A parser for the ESDS segment to extract the relevant aac information. More... | |
| struct | Frame |
| struct | M4AAudioConfig |
| class | SampleExtractor |
| Extracts audio data based on the sample sizes defined in the stsz box. It collects the data from the mdat box and calls the callback with the extracted frames. More... | |
Public Types | |
| enum class | Codec { Unknown , AAC , ALAC , MP3 } |
| using | FrameCallback = std::function< void(const Frame &, void *ref)> |
Public Member Functions | |
| M4ACommonDemuxer ()=default | |
| virtual | ~M4ACommonDemuxer ()=default |
| void | begin () |
| 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. | |
| virtual void | setCallback (FrameCallback cb) |
| Sets the callback for extracted audio frames. | |
| void | setChunkOffsetsBuffer (BaseBuffer< uint32_t > &buffer) |
| Sets the buffer to use for sample sizes. | |
| void | setM4AAudioConfig (M4AAudioConfig cfg) |
| void | setSampleSizesBuffer (BaseBuffer< stsz_sample_size_t > &buffer) |
| Sets the buffer to use for sample sizes. | |
| virtual void | setupParser ()=0 |
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 () |
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. | |
| 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. | |
Abstract base class for M4A/MP4 demuxers. Provides shared functionality for both file-based and stream-based demuxers.
|
default |
|
virtualdefault |
|
inline |
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 |
|
inline |
samples in stsz
|
inline |
File offset of stsz box.
|
inlineprotected |
Handles the alac box.
| box | MP4 box. |
|
inlineprotected |
Handles the esds (Elementary Stream Descriptor) box.
| box | MP4 box. |
|
inlineprotected |
Handles the mp4a box.
| box | MP4 box. |
for mp4a we expect to contain a esds: child boxes start at 36
|
inlineprotected |
|
inlineprotected |
Handles the stsz (Sample Size) box.
| box | MP4 box. |
|
inlineprotected |
Reads a 32-bit big-endian unsigned integer from a buffer.
| p | Pointer to buffer. |
|
inlineprotected |
Sets the AAC configuration for ADTS header generation.
| profile | AAC profile. |
| srIdx | Sample rate index. |
| chCfg | Channel configuration. |
|
inlinevirtual |
Sets the callback for extracted audio frames.
| cb | Frame callback function. |
Reimplemented in M4AAudioDemuxer, and M4AAudioFileDemuxer.
|
inline |
Sets the buffer to use for sample sizes.
| buffer | Reference to the buffer to use. |
|
inline |
|
inline |
Sets the buffer to use for sample sizes.
| buffer | Reference to the buffer to use. |
Implemented in M4AAudioDemuxer, and M4AAudioFileDemuxer.
|
protected |
|
protected |
Buffer for incremental data.
|
protected |
|
protected |
Default buffer size.
|
protected |
|
protected |
Underlying MP4 parser.
|
protected |
Number of samples in stsz.
|
protected |
Extractor for audio samples.
|
protected |