26#ifndef FAAD_INPUT_BUFFER_SIZE
27#define FAAD_INPUT_BUFFER_SIZE 1024*2
31#ifndef FAAD_UNDERFLOW_LIMIT
32#define FAAD_UNDERFLOW_LIMIT 500
57 const char *
mime()
override {
return "audio/aac"; }
63 unsigned long cap = NeAACDecGetCapabilities();
66 if (!cap & FIXED_POINT_CAP) {
72 hAac = NeAACDecOpen();
75 conf = NeAACDecGetCurrentConfiguration(
hAac);
78 conf->outputFormat = FAAD_FMT_16BIT;
81 conf->downMatrix =
true;
82 conf->useOldADTSFormat =
false;
83 conf->dontUpSampleImplicitSBR =
false;
86 if (!NeAACDecSetConfiguration(
hAac,
conf)) {
87 LOGE(
"NeAACDecSetConfiguration");
103 if (
hAac !=
nullptr) {
110 size_t write(
const uint8_t *data,
size_t len) {
134 virtual operator bool() {
return hAac !=
nullptr; }
144 void init(uint8_t *data,
size_t len) {
150 if (NeAACDecInit(
hAac, data, len, &samplerate, &channels)==-1) {
151 LOGE(
"NeAACDecInit");
160 NeAACDecFrameInfo hInfo;
172 LOGD(
"bytesconsumed: %d of %d", (
int)hInfo.bytesconsumed, (
int)eff_len);
173 if (hInfo.error != 0) {
174 LOGW(
"Decoding error: %s", NeAACDecGetErrorMessage(hInfo.error));
177 if (hInfo.bytesconsumed == 0 ) {
181 LOGD(
"Decoded %lu samples", hInfo.samples);
182 LOGD(
" bytesconsumed: %lu", hInfo.bytesconsumed);
183 LOGD(
" channels: %d", hInfo.channels);
184 LOGD(
" samplerate: %lu", hInfo.samplerate);
185 LOGD(
" sbr: %u", hInfo.sbr);
186 LOGD(
" object_type: %u", hInfo.object_type);
187 LOGD(
" header_type: %u", hInfo.header_type);
188 LOGD(
" num_front_channels: %u", hInfo.num_front_channels);
189 LOGD(
" num_side_channels: %u", hInfo.num_side_channels);
190 LOGD(
" num_back_channels: %u", hInfo.num_back_channels);
191 LOGD(
" num_lfe_channels: %u", hInfo.num_lfe_channels);
192 LOGD(
" ps: %u", hInfo.ps);
203 int bytes = hInfo.samples *
sizeof(int16_t);
#define LOGW(...)
Definition AudioLoggerIDF.h:29
#define TRACEI()
Definition AudioLoggerIDF.h:32
#define TRACED()
Definition AudioLoggerIDF.h:31
#define TRACEE()
Definition AudioLoggerIDF.h:34
#define LOGD(...)
Definition AudioLoggerIDF.h:27
#define LOGE(...)
Definition AudioLoggerIDF.h:30
#define FAAD_UNDERFLOW_LIMIT
Definition CodecAACFAAD.h:32
#define FAAD_INPUT_BUFFER_SIZE
Definition CodecAACFAAD.h:27
virtual size_t write(const uint8_t *data, size_t len)
Definition Arduino.h:120
uint32_t sample_rate_t
Type alias for sample rate values.
Definition AudioTypes.h:19