Releases: schreibfaul1/ESP32-audioI2S
V3.4.3
The output sample rate is no longer fixed, but depends on the audio source. If the DAC requires 48 kHz, this can be activated in Audio.h (#define SR_48K).
All decoders are now classes.
If there is more than one embedded image in a FLAC file, it is now output correctly.
e.g.
CoverImage: segment 00, pos 00000224, len 00007308
CoverImage: segment 01, pos 00007536, len 00005873
Streams are played back correctly even if the FLAC frame is larger than the OGG frame, http://amp.cesnet.cz:8000/cro-jazz.flac
char* null pointers are intercepted to prevent a crash.
If an ID3 header is unexpectedly sent during a chunked HLS aac stream, it is recognised and skipped, https://dd782ed59e2a4e86aabf6fc508674b59.msvdn.net/live/S97044836/tbbP8T1ZRPBL/playlist_audio.m3u8
Several issues with "chunked data transfer" have been resolved.
fix compiler warnings -Warray-bounds= and no trivial copy-assignment
V3.4.2
new event management
used "functional callbacks" instead "weak" compiler bindings
old
void audio_info(const char *info){
Serial.print("info "); Serial.println(info);
}
void audio_id3data(const char *info){ //id3 metadata
Serial.print("id3data ");Serial.println(info);
}
...
...new
void my_audio_info(Audio::msg_t m) {
Serial.printf("%s: %s\n", m.s, m.msg);
}
void setup() {
Audio::audio_info_callback = my_audio_info;
...
...
}V3.4.1
http range request ist enabled
This allows the jump within a file if the server accepts ranges
3.4.0
OPUS-HYBRID-MODE activated
C unique pointer introduced
better sync. lyrics
3.3.2
OPUS Hybrid Mode is activated, stations such as
https://st01.sslstream.dlf.de/dlf/01/low/opus/stream.opus?aggregator=web
work now,
The mode is displayed as info: (CELT_ONLY, SILK_ONLY, HYBRID)
Memory leak in VORBIS decoder fixed
Better 48KHz I2S output through cubic interpolation (Catmull-Rom)
ESP32-P4 support
Adruino Version > V3.0.0
PSRAM must be activated
The I2S signal is resampled to 48 KHz stereo 16bps
last release without PSRAM
3.2.1 V3.2.1
V3.2.0
ESP32-P4 ready
3.1.0
Only supports Arduino versions from V3 and therefore no longer supports an internal DAC
3.0.12
separate task for decoding and outputting the data. 'playAudioData()' is started periodically and fetches the data from the InBuffer. This ensures that the I2S-DMA is always sufficiently filled, even if the Arduino 'loop' is stuck.
