7#ifndef FAAD_INPUT_BUFFER_SIZE
8#define FAAD_INPUT_BUFFER_SIZE 1024*2
12#ifndef FAAD_UNDERFLOW_LIMIT
13#define FAAD_UNDERFLOW_LIMIT 500
38 const char *
mime()
override {
return "audio/aac"; }
44 unsigned long cap = NeAACDecGetCapabilities();
47 if (!cap & FIXED_POINT_CAP) {
53 hAac = NeAACDecOpen();
56 conf = NeAACDecGetCurrentConfiguration(
hAac);
59 conf->outputFormat = FAAD_FMT_16BIT;
62 conf->downMatrix =
true;
63 conf->useOldADTSFormat =
false;
64 conf->dontUpSampleImplicitSBR =
false;
67 if (!NeAACDecSetConfiguration(
hAac,
conf)) {
68 LOGE(
"NeAACDecSetConfiguration");
84 if (
hAac !=
nullptr) {
91 size_t write(
const uint8_t *data,
size_t len) {
115 virtual operator bool() {
return hAac !=
nullptr; }
125 void init(uint8_t *data,
size_t len) {
131 if (NeAACDecInit(
hAac, data, len, &samplerate, &channels)==-1) {
132 LOGE(
"NeAACDecInit");
141 NeAACDecFrameInfo hInfo;
153 LOGD(
"bytesconsumed: %d of %d", (
int)hInfo.bytesconsumed, (
int)eff_len);
154 if (hInfo.error != 0) {
155 LOGW(
"Decoding error: %s", NeAACDecGetErrorMessage(hInfo.error));
158 if (hInfo.bytesconsumed == 0 ) {
162 LOGD(
"Decoded %lu samples", hInfo.samples);
163 LOGD(
" bytesconsumed: %lu", hInfo.bytesconsumed);
164 LOGD(
" channels: %d", hInfo.channels);
165 LOGD(
" samplerate: %lu", hInfo.samplerate);
166 LOGD(
" sbr: %u", hInfo.sbr);
167 LOGD(
" object_type: %u", hInfo.object_type);
168 LOGD(
" header_type: %u", hInfo.header_type);
169 LOGD(
" num_front_channels: %u", hInfo.num_front_channels);
170 LOGD(
" num_side_channels: %u", hInfo.num_side_channels);
171 LOGD(
" num_back_channels: %u", hInfo.num_back_channels);
172 LOGD(
" num_lfe_channels: %u", hInfo.num_lfe_channels);
173 LOGD(
" ps: %u", hInfo.ps);
184 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:13
#define FAAD_INPUT_BUFFER_SIZE
Definition CodecAACFAAD.h:8
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