Skip to content

ESP-ADF Release v2.0

Compare
Choose a tag to compare
@jason-mao jason-mao released this 01 Apr 13:38
· 1283 commits to master since this release

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 theaudio_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 and audio_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 and peripheral 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 to audio_strdup to optimize RAM
  • Changed the RAW API from raw_stream_read(char *buffer, int buf_size) to raw_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 and Equalizer
  • 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 and type.

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 and time_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 and esp_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 an esp_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:

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.