mirror of
https://github.com/arendst/Tasmota.git
synced 2025-04-23 22:37:16 +00:00
i2s audio update
save heap memory on esp32 with psram
This commit is contained in:
parent
01ab99f8a1
commit
8468e093fc
@ -52,7 +52,7 @@ AudioFileSourceFS *file;
|
||||
AudioOutputI2S *out;
|
||||
AudioFileSourceID3 *id3;
|
||||
AudioGeneratorMP3 *decoder = NULL;
|
||||
|
||||
void *mp3ram = NULL;
|
||||
|
||||
#ifdef USE_WEBRADIO
|
||||
AudioFileSourceICYStream *ifile = NULL;
|
||||
@ -210,6 +210,12 @@ void I2S_Init(void) {
|
||||
is2_volume=10;
|
||||
out->SetGain(((float)is2_volume/100.0)*4.0);
|
||||
out->stop();
|
||||
mp3ram = nullptr;
|
||||
|
||||
#ifdef ESP32
|
||||
if (psramFound()) {
|
||||
mp3ram = heap_caps_malloc(preallocateCodecSize, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
|
||||
}
|
||||
|
||||
#ifdef USE_WEBRADIO
|
||||
if (psramFound()) {
|
||||
@ -223,6 +229,7 @@ void I2S_Init(void) {
|
||||
//Serial.printf_P(PSTR("FATAL ERROR: Unable to preallocate %d bytes for app\n"), preallocateBufferSize+preallocateCodecSize);
|
||||
}
|
||||
#endif // USE_WEBRADIO
|
||||
#endif // ESP32
|
||||
}
|
||||
|
||||
#ifdef ESP32
|
||||
@ -285,7 +292,7 @@ void Webradio(const char *url) {
|
||||
retryms = millis() + 2000;
|
||||
}
|
||||
|
||||
xTaskCreatePinnedToCore(mp3_task2, "MP3", 8192, NULL, 3, &mp3_task_h, 1);
|
||||
xTaskCreatePinnedToCore(mp3_task2, "MP3-2", 8192, NULL, 3, &mp3_task_h, 1);
|
||||
}
|
||||
|
||||
void mp3_task2(void *arg){
|
||||
@ -366,7 +373,12 @@ void Play_mp3(const char *path) {
|
||||
|
||||
file = new AudioFileSourceFS(*fsp,path);
|
||||
id3 = new AudioFileSourceID3(file);
|
||||
mp3 = new AudioGeneratorMP3();
|
||||
|
||||
if (mp3ram) {
|
||||
mp3 = new AudioGeneratorMP3(mp3ram, preallocateCodecSize);
|
||||
} else {
|
||||
mp3 = new AudioGeneratorMP3();
|
||||
}
|
||||
mp3->begin(id3, out);
|
||||
|
||||
if (I2S_Task) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user