mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	[speaker] Media player fixes for IDF5.4 (#10088)
This commit is contained in:
		| @@ -315,31 +315,19 @@ async def to_code(config): | |||||||
|         cg.add_define("USE_AUDIO_FLAC_SUPPORT", True) |         cg.add_define("USE_AUDIO_FLAC_SUPPORT", True) | ||||||
|         cg.add_define("USE_AUDIO_MP3_SUPPORT", True) |         cg.add_define("USE_AUDIO_MP3_SUPPORT", True) | ||||||
|  |  | ||||||
|         # Wifi settings based on https://github.com/espressif/esp-adf/issues/297#issuecomment-783811702 |         # Based on https://github.com/espressif/esp-idf/blob/release/v5.4/examples/wifi/iperf/sdkconfig.defaults.esp32 | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM", 16) |         esp32.add_idf_sdkconfig_option("CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM", 16) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM", 512) |         esp32.add_idf_sdkconfig_option("CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM", 64) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_ESP32_WIFI_STATIC_TX_BUFFER", True) |         esp32.add_idf_sdkconfig_option("CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM", 64) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_ESP32_WIFI_TX_BUFFER_TYPE", 0) |         esp32.add_idf_sdkconfig_option("CONFIG_ESP_WIFI_AMPDU_TX_ENABLED", True) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM", 8) |         esp32.add_idf_sdkconfig_option("CONFIG_ESP_WIFI_TX_BA_WIN", 32) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM", 32) |         esp32.add_idf_sdkconfig_option("CONFIG_ESP_WIFI_AMPDU_RX_ENABLED", True) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED", True) |         esp32.add_idf_sdkconfig_option("CONFIG_ESP_WIFI_RX_BA_WIN", 32) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_ESP32_WIFI_TX_BA_WIN", 16) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED", True) |         esp32.add_idf_sdkconfig_option("CONFIG_LWIP_TCP_SND_BUF_DEFAULT", 65534) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_ESP32_WIFI_RX_BA_WIN", 32) |         esp32.add_idf_sdkconfig_option("CONFIG_LWIP_TCP_WND_DEFAULT", 65534) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_LWIP_MAX_ACTIVE_TCP", 16) |         esp32.add_idf_sdkconfig_option("CONFIG_LWIP_TCP_RECVMBOX_SIZE", 64) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_LWIP_MAX_LISTENING_TCP", 16) |         esp32.add_idf_sdkconfig_option("CONFIG_LWIP_TCPIP_RECVMBOX_SIZE", 64) | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_TCP_MAXRTX", 12) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_TCP_SYNMAXRTX", 6) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_TCP_MSS", 1436) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_TCP_MSL", 60000) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_TCP_SND_BUF_DEFAULT", 65535) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_TCP_WND_DEFAULT", 512000) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_TCP_RECVMBOX_SIZE", 512) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_TCP_QUEUE_OOSEQ", True) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_TCP_OVERSIZE_MSS", True) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_LWIP_WND_SCALE", True) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_LWIP_TCP_RCV_SCALE", 3) |  | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_LWIP_TCPIP_RECVMBOX_SIZE", 512) |  | ||||||
|  |  | ||||||
|         # Allocate wifi buffers in PSRAM |         # Allocate wifi buffers in PSRAM | ||||||
|         esp32.add_idf_sdkconfig_option("CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP", True) |         esp32.add_idf_sdkconfig_option("CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP", True) | ||||||
|   | |||||||
| @@ -259,14 +259,11 @@ esp_err_t AudioPipeline::allocate_communications_() { | |||||||
| esp_err_t AudioPipeline::start_tasks_() { | esp_err_t AudioPipeline::start_tasks_() { | ||||||
|   if (this->read_task_handle_ == nullptr) { |   if (this->read_task_handle_ == nullptr) { | ||||||
|     if (this->read_task_stack_buffer_ == nullptr) { |     if (this->read_task_stack_buffer_ == nullptr) { | ||||||
|       if (this->task_stack_in_psram_) { |       // Reader task uses the AudioReader class which uses esp_http_client. This crashes on IDF 5.4 if the task stack is | ||||||
|         RAMAllocator<StackType_t> stack_allocator(RAMAllocator<StackType_t>::ALLOC_EXTERNAL); |       // in PSRAM. As a workaround, always allocate the read task in internal memory. | ||||||
|         this->read_task_stack_buffer_ = stack_allocator.allocate(READ_TASK_STACK_SIZE); |  | ||||||
|       } else { |  | ||||||
|       RAMAllocator<StackType_t> stack_allocator(RAMAllocator<StackType_t>::ALLOC_INTERNAL); |       RAMAllocator<StackType_t> stack_allocator(RAMAllocator<StackType_t>::ALLOC_INTERNAL); | ||||||
|       this->read_task_stack_buffer_ = stack_allocator.allocate(READ_TASK_STACK_SIZE); |       this->read_task_stack_buffer_ = stack_allocator.allocate(READ_TASK_STACK_SIZE); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
|  |  | ||||||
|     if (this->read_task_stack_buffer_ == nullptr) { |     if (this->read_task_stack_buffer_ == nullptr) { | ||||||
|       return ESP_ERR_NO_MEM; |       return ESP_ERR_NO_MEM; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user