AR: trying to improve coexistence with HUB75
Hub75 is very memory hungry. So we try to make a bit more RAM available * use 16bit samples when compiling with HUB75 support --> 3KB saved * avoid using aPLL (HUB75 needs it) * move audio buffers from BSS (always allocated) to heap (only allocated when FFTtask runs) --> 10Kb saved * suspend live preview for 6 seconds when out-of-memory
This commit is contained in:
@@ -37,7 +37,8 @@
|
||||
#define SRate_t int
|
||||
#endif
|
||||
|
||||
constexpr i2s_port_t AR_I2S_PORT = I2S_NUM_0; // I2S port to use (do not change ! I2S_NUM_1 possible but this has limitation -> no MCLK routing, no ADC support)
|
||||
constexpr i2s_port_t AR_I2S_PORT = I2S_NUM_0; // I2S port to use (do not change! I2S_NUM_1 possible but this has
|
||||
// strong limitations -> no MCLK routing, no ADC support, no PDM support
|
||||
|
||||
//#include <driver/i2s_std.h>
|
||||
//#include <driver/i2s_pdm.h>
|
||||
@@ -73,6 +74,11 @@ constexpr i2s_port_t AR_I2S_PORT = I2S_NUM_0; // I2S port to use (do not c
|
||||
// data type requested from the I2S driver - currently we always use 32bit
|
||||
//#define I2S_USE_16BIT_SAMPLES // (experimental) define this to request 16bit - more efficient but possibly less compatible
|
||||
|
||||
#if defined(WLED_ENABLE_HUB75MATRIX) && defined(CONFIG_IDF_TARGET_ESP32)
|
||||
// this is bitter, but necessary to survive
|
||||
#define I2S_USE_16BIT_SAMPLES
|
||||
#endif
|
||||
|
||||
#ifdef I2S_USE_16BIT_SAMPLES
|
||||
#define I2S_SAMPLE_RESOLUTION I2S_BITS_PER_SAMPLE_16BIT
|
||||
#define I2S_datatype int16_t
|
||||
@@ -301,6 +307,9 @@ class I2SSource : public AudioSource {
|
||||
#if defined(ARDUINO_ARCH_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32S3) && !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
|
||||
if (ESP.getChipRevision() == 0) _config.use_apll = false; // APLL is broken on ESP32 revision 0
|
||||
#endif
|
||||
#if defined(WLED_ENABLE_HUB75MATRIX)
|
||||
_config.use_apll = false; // APLL needed for HUB75 DMA driver ?
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (_i2sMaster == false) {
|
||||
|
||||
Reference in New Issue
Block a user