25#undef AudioSpecificConfig
27#ifndef FAAD2_INPUT_BUFFER_SIZE
28#define FAAD2_INPUT_BUFFER_SIZE 1024 * 2
32#ifndef FAAD2_UNDERFLOW_LIMIT
33#define FAAD2_UNDERFLOW_LIMIT 500
58 const char *
mime()
override {
return "audio/aac"; }
66 hAac = NeAACDecOpen();
67 if (
hAac ==
nullptr) {
73 conf = NeAACDecGetCurrentConfiguration(
hAac);
74 conf->outputFormat = FAAD_FMT_16BIT;
76 conf->downMatrix =
true;
77 conf->useOldADTSFormat =
false;
78 conf->dontUpSampleImplicitSBR =
false;
81 if (!NeAACDecSetConfiguration(
hAac,
conf)) {
82 LOGE(
"NeAACDecSetConfiguration");
98 if (
hAac !=
nullptr) {
106 size_t write(
const uint8_t *data,
size_t len)
override {
107 if (
hAac ==
nullptr)
return 0;
109 while (result < len) {
118 LOGE(
"Input buffer full: discarding data");
138 operator bool()
override {
return hAac !=
nullptr; }
144 NeAACDecConfigurationPtr
conf =
nullptr;
148 bool init(uint8_t *data,
size_t len) {
153 long consumed = NeAACDecInit(
hAac, data, len, &samplerate, &channels);
155 LOGE(
"NeAACDecInit");
170 if (
hAac ==
nullptr)
return;
171 NeAACDecFrameInfo hInfo;
182 if (eff_len <= 0)
break;
183 uint8_t *sample_buffer = (uint8_t *)NeAACDecDecode(
186 LOGD(
"bytesconsumed: %d of %d", (
int)hInfo.bytesconsumed, eff_len);
187 if (hInfo.error != 0) {
188 LOGW(
"Decoding error: %s", NeAACDecGetErrorMessage(hInfo.error));
191 if (hInfo.bytesconsumed == 0) {
198 if (hInfo.error != 0 || sample_buffer ==
nullptr || hInfo.samples == 0) {
208 size_t 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 FAAD2_INPUT_BUFFER_SIZE
Definition CodecAACFAAD2.h:28
#define FAAD2_UNDERFLOW_LIMIT
Definition CodecAACFAAD2.h:33
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