ESP-ADF Release v2.0
Below is the release information of ESP-ADF v2.0, and its documentation is available here.
Changes since v1.0
Major New Features
Pipeline Framework
New Features
- Added the
audio_element_set_output_ringbuf_size
API - Added the
audio_element_wait_for_stop_ms
API - Added the
audio_element_set_event_callback
API - Added a new element state
AEL_STATUS_STATE_FINISHED
- Added the
audio_pipeline_change_state
API - Added the
audio_pipeline_relink_more
API - Added the
rb_unblock_reader
API - Added the
audio_pipeline_get_el_once
API - Added the
audio_pipeline_reset_elements
API - Added the
audio_element_report_pos
API - Added the
audio_element_change_cmd
API - Added the
audio_element_process_init
API - Added the
audio_element_process_deinit
API - Added support for configuring the number of element's multi-input/output
- Added support for CMake build system
- Added unit test support for most of components
- Added the
playlist
function - Added the
playlist_choose
API in playlist - Added the
audio_sys_get_time_ms
andaudio_sys_get_tick_by_time_ms
APIs - Added support for more IDF versions (v3.3.1, v4.0 and v4.1)
Bugfix
- Fixed the pipeline relink failure
- Fixed the ringbuffer blocking issue that occurs when the read size or write size is larger than the size of ringbuffer
- Fixed the issue that element fails to stop after multiple pause/resume operations
- Updated the description of
audio_pipeline_stop
to provide more information - Fixed the bug that head files are not compatible with the c++ environment
- Fixed bug that the stop cmd is not sent when element open failure occurs
- Fixed bug that element fails to send the stop cmd after two open errors
ESP_Dispatcher
- Added support for ESP dispatcher
- Added support for audio service class
- Added support for peripheral service class
- Added support for independent display, DuerOS, player, recorder and Wi-Fi actions
Service Framework
New Features
- Added support for input key service
- Support ADC, GPIO and Touch key
- Added support for display service
- Support LEDC display pattern
- Support LED array display pattern
- Support WS2812 display pattern
- Added support for DuerOS service
- Support LightDuer v3.0.7
- Added support for Wi-Fi service
- Support Wi-Fi setting by Smartconfig
- Support Wi-Fi setting by AirKiss
- Support Wi-Fi setting by Blufi
Bugfix
- Fixed the issue that the
wifi_service
component loses connection during the notification process
ESP Peripherals
New Features
esp_peripherals
is divided into two parts:esp_periph_set
andperipheral handle
- Added the GPIO ISR to peripheral libraries
- Added the ADC button to peripheral libraries
- Added more unit test cases
- Added support for customized sizes of the
periph_console
input buffer - Added the LEDC display driver
- Added the LED Bar display driver
Bugfix
- Fixed the bug that
periph_wifi_config_wait_done
always block
Codec IC
Newly added supports for the following codec ICS in ESP-ADF:
- ES8311
- ES7243
- ES7148
- TAS5805
Support New Development Board
Newly added supports for the following development boards in ESP-ADF:
Audio Hal
New Features
- Added the
audio_hal_set_mute
API - Added support for customized audio boards
- Added more unit test cases
- Modified codec i2c driver APIs to
i2c_bus
for improved thread safety
Bugfix
- Fixed an incorrect function name
audio_hal_config_iface
Audio Stream
New Features
- Added ALC in I2S stream
- Added more
audio_type
checks in HTTP stream - Added support for two-level m3u8 parsing in HTTP stream
- Added the
spiffs
stream - Added the
tone
stream - Added algorithm-related streams
- Added support for customized
i2s_stream
io functions - Added new
hls_playlist
function
Bugfix
- Fixed the issue that
I2S
stream pops noise in the DAC mode - Fixed HTTP stream parsing and insertion issue in relative URIs
- Changed the HTTP stream from
strdup
toaudio_strdup
to optimize RAM - Changed the RAW API from
raw_stream_read(char *buffer, int buf_size)
toraw_stream_read(audio_element_handle_t pipeline, char *buffer, int buf_size)
- Fixed HTTP stream abort when
errno
is not 0
ESP Codec and Filter Libraries
You can find the released codec and filter libraries here.
New Features
- Added the
ALC
library to adjust volume - Optimized the
OPUS
encoder on mono - Optimized the
HC_AAC
speed - Added parameter setting APIs for
Downmix
andEqualizer
- Added
Downmix
support for up to 8 input streams - Added an
audio_forge
filter - Added a pcm decoder
- Modified
Downmix
to support "stereo-to-mono" via mix - Supported markup language format of wav
- Improved the
AAC
performance - Optimized the
MP3
CPU loading - Modified the description of resamples
mode
andtype
.
Bugfix
- Fixed the bug of
WAV
stream crash when bits is not 16 - Corrected the complexity level of
resample
to 5 - Fixed the issue that
MP3
fails to open because the idle task does not have enough time to free memory - Optimized the
OPUS
speed
ESP Recorder
New Features
- Select specific functionality to lower binary size
- Added support to disable WWE
- Support customized task priority
ESP Audio
New Features
- Added the
media_source_type
API - Added the
playing info get/set
API - Added the
esp_audio_sync_play
API - Added the
set_time
andtime_pos
parameters for esp_audio info - Added the
esp_audio_prefer_type_get
API - Added the
esp_audio_play_timeout_set
API - Added the
esp_audio_seek
API - Modified
esp_audio_sync_play
do not post any events when calling - Supported memory-preferred mode and speed-preferred mode
- Supported events callback
- Improved the playback response time
- Removed the HAL handle (replaced by callback function API)
- Changed
esp_audio_play
,esp_audio_stop
,esp_audio_pause
andesp_audio_resume
to sync APIs
Bugfix
- Fixed the raw URI failure bug
- Fixed the bug that incorrect error message is prompted when calling
esp_audio_sync_play
after anesp_audio_play
failure - Fixed some bugs related to
raw_stream
- Fixed a bug that music information is missing after resuming operation
- Fixed a bug that blocks on seek operation
- Fixed a bug that the wrong message is prompted when playing music failure
- Fixed the issue of
esp_audio_destroy
memory leakage
ADF Micropython
New Features
- Added an
audio
module that includes player and recorder - Added examples for
micropython
Audio Protocol
New Features
- Supported 2.0 SIP protocol
- Supported 2.0 RTP protocol
- Supported RFC4566-based SDP
- Supported servers: FreePBX, Yate Server and Freeswitch
- Added a DTMF event
- Added local certificate config for TLS
- Added sip unregister during sip destroy
- Added support to keep the NAT port active for longer periods
- Added support for customized DLNA XMLs
Bugfix
- Optimized sip
rtp
memory - Fixed the issue that server could fail during sip re-register
- Handled
401 unauthorized request
during the invitation process
New Examples of ESP-ADF
Below are the added examples that demonstrate the usage of ESP-ADF components:
examples/audio_processing/pipeline_alc
examples/recorder/element_cb_sdcard_amr
examples/recorder/pipeline_opus_sdcard
examples/advanced_examples/esp_dispatcher_dueros
examples/advanced_examples/record_while_play
examples/advanced_examples/voip
examples/recorder/element_wav_amr_sdcard
examples/recorder/pipeline_wav_amr_sdcard
examples/get-started/pipeline_a2dp_sink_and_hfp
examples/audio_processing/pipeline_audio_forge
examples/player/pipeline_spiffs_mp3
examples/player/pipeline_flash_tone
examples/player/pipeline_hfp_stream
examples/player/pipeline_a2dp_source_stream
examples/player/pipeline_a2dp_sink_stream
- Added more commands in the
CLI
example - Added wakeup tone in
dueros
example - Fixed noise on LyraTD-MSC board with
pipeline_bt_sink
example - Fixed a
dueros
bug that music resuming fails after two insert speech queries - Fixed a
play_mp3_control
bug that pipeline does not restart when the play button is pressed
Get This Release
Using git commands below to obtain ESP-ADF v2.0 is highly recommended. Note that the submodules should also be updated (using git submodule update --init --recursive
). Otherwise, the source files may be not working properly.
git clone https://github.com/espressif/esp-adf.git esp-adf-v2.0
cd esp-adf-v2.0/
git checkout v2.0
git submodule update --init --recursive
To get the programming guide for Audio Development Framework, please check here.