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_sizeAPI - Added the
audio_element_wait_for_stop_msAPI - Added the
audio_element_set_event_callbackAPI - Added a new element state
AEL_STATUS_STATE_FINISHED - Added the
audio_pipeline_change_stateAPI - Added the
audio_pipeline_relink_moreAPI - Added the
rb_unblock_readerAPI - Added the
audio_pipeline_get_el_onceAPI - Added the
audio_pipeline_reset_elementsAPI - Added the
audio_element_report_posAPI - Added the
audio_element_change_cmdAPI - Added the
audio_element_process_initAPI - Added the
audio_element_process_deinitAPI - 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
playlistfunction - Added the
playlist_chooseAPI in playlist - Added the
audio_sys_get_time_msandaudio_sys_get_tick_by_time_msAPIs - 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_stopto 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_servicecomponent loses connection during the notification process
ESP Peripherals
New Features
esp_peripheralsis divided into two parts:esp_periph_setandperipheral 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_consoleinput buffer - Added the LEDC display driver
- Added the LED Bar display driver
Bugfix
- Fixed the bug that
periph_wifi_config_wait_donealways 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_muteAPI - Added support for customized audio boards
- Added more unit test cases
- Modified codec i2c driver APIs to
i2c_busfor 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_typechecks in HTTP stream - Added support for two-level m3u8 parsing in HTTP stream
- Added the
spiffsstream - Added the
tonestream - Added algorithm-related streams
- Added support for customized
i2s_streamio functions - Added new
hls_playlistfunction
Bugfix
- Fixed the issue that
I2Sstream pops noise in the DAC mode - Fixed HTTP stream parsing and insertion issue in relative URIs
- Changed the HTTP stream from
strduptoaudio_strdupto 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
errnois not 0
ESP Codec and Filter Libraries
You can find the released codec and filter libraries here.
New Features
- Added the
ALClibrary to adjust volume - Optimized the
OPUSencoder on mono - Optimized the
HC_AACspeed - Added parameter setting APIs for
DownmixandEqualizer - Added
Downmixsupport for up to 8 input streams - Added an
audio_forgefilter - Added a pcm decoder
- Modified
Downmixto support "stereo-to-mono" via mix - Supported markup language format of wav
- Improved the
AACperformance - Optimized the
MP3CPU loading - Modified the description of resamples
modeandtype.
Bugfix
- Fixed the bug of
WAVstream crash when bits is not 16 - Corrected the complexity level of
resampleto 5 - Fixed the issue that
MP3fails to open because the idle task does not have enough time to free memory - Optimized the
OPUSspeed
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_typeAPI - Added the
playing info get/setAPI - Added the
esp_audio_sync_playAPI - Added the
set_timeandtime_posparameters for esp_audio info - Added the
esp_audio_prefer_type_getAPI - Added the
esp_audio_play_timeout_setAPI - Added the
esp_audio_seekAPI - Modified
esp_audio_sync_playdo 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_pauseandesp_audio_resumeto sync APIs
Bugfix
- Fixed the raw URI failure bug
- Fixed the bug that incorrect error message is prompted when calling
esp_audio_sync_playafter anesp_audio_playfailure - 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_destroymemory leakage
ADF Micropython
New Features
- Added an
audiomodule 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
rtpmemory - Fixed the issue that server could fail during sip re-register
- Handled
401 unauthorized requestduring 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_alcexamples/recorder/element_cb_sdcard_amrexamples/recorder/pipeline_opus_sdcardexamples/advanced_examples/esp_dispatcher_duerosexamples/advanced_examples/record_while_playexamples/advanced_examples/voipexamples/recorder/element_wav_amr_sdcardexamples/recorder/pipeline_wav_amr_sdcardexamples/get-started/pipeline_a2dp_sink_and_hfpexamples/audio_processing/pipeline_audio_forgeexamples/player/pipeline_spiffs_mp3examples/player/pipeline_flash_toneexamples/player/pipeline_hfp_streamexamples/player/pipeline_a2dp_source_streamexamples/player/pipeline_a2dp_sink_stream- Added more commands in the
CLIexample - Added wakeup tone in
duerosexample - Fixed noise on LyraTD-MSC board with
pipeline_bt_sinkexample - Fixed a
duerosbug that music resuming fails after two insert speech queries - Fixed a
play_mp3_controlbug 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 --recursiveTo get the programming guide for Audio Development Framework, please check here.