Skip to content

ESP-GMF v1.1 Release

Latest

Choose a tag to compare

@jason-mao jason-mao released this 12 Oct 08:51
· 12 commits to main since this release

Overview

ESP-GMF v1.1 expands runtime control of multimedia pipelines, adds new audio effects, and improves Bluetooth audio, playback, and multi-sink capture. This summary covers changes since v1.0, including the intervening component patch releases.

  • Audio effects and runtime control: Added Reverb and Delay elements, ALC transition-time controls, configuration getters, and bypass support for selected audio effects.
  • Pipeline inspection: Added element method metadata, argument constraints, and pipeline view APIs for discovering pipelines and their connections. Audio Render can optionally publish its stream and mixed pipeline views.
  • Bluetooth audio: Added AAC support for A2DP, HFP Audio Gateway integration, and Bluedroid host support for LE Audio. The included esp_bt_audio v1.2.0 adds CAP Initiator / BAP Unicast Client and TMAP Unicast Media Sender support, with CSIP coordinated-set discovery and dual-earbud stereo. LE broadcasting gains per-BIS audio locations and named LC3 presets; new APIs expose advertising/bond state and cancel pending connections.
  • Playback: Added audio/video frame submission, playback-state queries, optional MP3 ID3 parsing, and a network-buffering bypass option. Improved seeking, source replay, live HTTP/TS playback, and end-of-stream handling. Player v1.1.1 fixes render frame alignment to whole audio samples at rates such as 11025 Hz.
  • AI audio integration: Added optional internal-RAM stacks for AFE feed/fetch tasks and an ADC channel-label conversion helper for the esp-sr input format. GMF Loader can optionally derive AEC, WakeNet, AFE, and DOA channel allocation from the board's capture codec. Fixed AFE close waiting for an input read to time out.
  • Capture and video: Added full-speed decode, configurable sink counts, reusable decoder output pools, one-shot H.264 IDR requests, and multi-sink capture examples, including hardware H.264 dual encoding on ESP32-P4. Capture v1.1.1 also fixes a codec-device source status race and updates its speech recognition dependency to v2.5.
  • Signal processing and dependencies: Added high-precision FFT/IFFT APIs and updated the audio codec, audio effects, speech recognition, and video dependencies. This release includes 17 official components: esp_bt_audio v1.2.0; esp_capture, esp_player, gmf_ai_audio, and gmf_loader v1.1.1; and the remaining components at v1.1.0.

Compatibility Notes

  • Audio element locking: esp_gmf_audio_el_lock, esp_gmf_audio_el_unlock, and esp_gmf_audio_element_t::lock were removed. Migrate direct users to the base-element APIs esp_gmf_element_lock and esp_gmf_element_unlock.
  • Player frame routing: esp_player_frame_t now begins with track_type, and esp_player_track_type_t uses NONE=0, AUDIO=1, VIDEO=2, and MAX=3. Update positional initializers and any stored numeric enum values. When submitting frames with ESP_PLAYER_MASK_AV, explicitly identify each frame as audio or video; NONE remains supported for single-track playback. Frame PTS values are in milliseconds.
  • Bluetooth configuration and events: Rename esp_bt_audio_le_csip_cfg_t to esp_bt_audio_le_csip_set_member_cfg_t and esp_bt_audio_le_cfg_t.csip to csip_set_member. Connection-state events now include conn_handle (zero for Classic Bluetooth); update consumers that depend on the previous struct layout. The new connection-failure event also shifts subsequent event enum values; use symbolic event names rather than stored numeric values.
  • Bluetooth stream metadata: LE codec_info.channels now contains ESP_BT_AUDIO_AUDIO_LOC_* location bits, not a channel count. Update channel interpretation accordingly. esp_bt_audio_stream_get_iso_interval() now takes a uint32_t * output argument instead of uint16_t *; update caller storage and pointer types.
  • ESP32-P4: The updated gmf_audio stack requires chip revision v3.0.0 or later. esp_asrc also requires revision 3.0 or later for assembly optimization support.
  • ESP32-S31 audio processing: With PIE assembly optimizations enabled, the affected audio codec/effects processing APIs must run on Core 1. Disable ESP_AUDIO_EFFECTS_S31_USE_ASM and ESP_AUDIO_CODEC_S31_USE_ASM to remove this restriction at reduced performance. The ASRC software rate-conversion task defaults to Core 1 when effects assembly is enabled.
  • ESP32-S31 FFT: CONFIG_GMF_FFT_S31_USE_ASM defaults to disabled, allowing FFT/IFFT execution on either core using portable C. Enable it for PIE acceleration only when the related APIs run on Core 1.
  • Audio channel configuration: The default AEC, WN, and AFE channel allocation changed from RMNM to MRMN. Check the configured microphone/reference order against your board. Codec-device integrations now use esp_codec_dev ~2.0.0-beta1; custom integrations should review the 2.x channel configuration.
  • Board-derived channel allocation: CONFIG_GMF_AI_AUDIO_LOAD_CH_ALLOCATION_FROM_BOARD is disabled by default. When enabled, initialize the board's audio ADC before setting up the AI audio elements. The loader converts the capture codec's channel labels to the esp-sr input format for AEC, WakeNet, AFE, and DOA; if the label is unavailable or conversion fails, it retains each element's configured allocation.
  • AFE task stacks: The new esp_gmf_afe_manager_task_setting_t::stack_in_internal field selects internal RAM for the feed/fetch task stack. Initialize this field explicitly or zero-initialize the configuration; false preserves the default PSRAM placement when available.
  • Dependency updates: Shared GMF dependencies target ~1.1 to stay within the v1.1 minor series; select esp_bt_audio ~1.2.0 to obtain the Bluetooth updates included in this release. Key dependencies include esp_audio_codec ~2.6, esp_audio_effects ~1.4, esp_video ~2.5, and esp_image_effects ~1.2.0. gmf_ai_audio targets esp-sr 2.5.*, and esp_capture now targets ~2.5. Examples and application utilities use the standalone esp_board_manager ~0.7.

GMF Components Summary (All Official Components in This Repo)

No new standalone components are introduced in v1.1. Reverb and Delay are new elements within gmf_audio.

Component Category Version Highlights Changelog
gmf_audio Enhancements v1.1.0 Reverb and Delay elements; ALC transition controls; configuration getters and method constraints; effect bypass; decoder validation fixes Changelog
gmf_core Enhancements v1.1.0 Element bypass and shared locking; method metadata and argument constraints; pipeline views; IO alignment, buffer-leak, and blocked-seek fixes Changelog
esp_bt_audio Enhancements v1.2.0 A2DP AAC and HFP Audio Gateway; Bluedroid LE Audio; CAP/BAP unicast client and TMAP media sender with dual-earbud stereo; per-BIS locations and LC3 broadcast presets; connection controls and A2DP initialization race fix Changelog
esp_player Enhancements v1.1.1 AV frame submission, state queries, optional MP3 ID3 parsing, seek-before-run, and network-buffering bypass; improved replay, seek, and live-stream stability; whole-sample render frame alignment fix Changelog
esp_capture Enhancements v1.1.1 Full-speed decode; configurable sink count; multi-sink and P4 dual-H.264 examples; V4L2 UYVY support; esp-sr v2.5; codec-device source status race, negotiation, frame-release, and audio stop/restart fixes Changelog
gmf_video Enhancements v1.1.0 Reusable decoder output pools; full-speed PPA conversion; one-shot H.264 IDR requests; RGB888-to-OUVV_EVYY conversion; timeout and decode-error fixes Changelog
esp_audio_render Enhancements v1.1.0 Optional stream/mixed pipeline views with live handle updates; creation-failure mutex cleanup Changelog
gmf_fft Enhancements v1.1.0 High-precision FFT/IFFT APIs; corrected bit reversal for real FFT sizes 4096/8192; configurable S31 assembly acceleration Changelog
gmf_ai_audio Enhancements v1.1.1 esp-sr 2.5.x and esp_codec_dev 2.x example adaptation; optional internal-RAM AFE task stacks; ADC channel-label to esp-sr format helper; AFE close input-read timeout fix Changelog
gmf_io Fixes / Dependencies v1.1.0 Correct HTTP Range-seek handling when servers return status 200; empty codec-device payload fix; esp_codec_dev 2.x integration Changelog
gmf_loader Enhancements v1.1.1 Configurable Reverb/Delay setup; default AEC/WN/AFE channel allocation changed to MRMN; optional board-derived channel allocation for AEC/WakeNet/AFE/DOA Changelog
gmf_examples Enhancements v1.1.0 Reverb/Delay in the audio-effects example; multi-source playback initialization fix; updated board-selection documentation and dependencies Changelog
esp_asrc Compatibility / Dependencies v1.1.0 Audio effects v1.4 integration; updated P4 revision requirements and S31 software rate-conversion task affinity Changelog
esp_audio_simple_player Maintenance v1.1.0 GMF v1.1 dependency alignment; test-app IRAM overflow fix Changelog
esp_video_render Maintenance v1.1.0 GMF v1.1 dependency alignment and updated example board-selection documentation Changelog
gmf_app_utils Dependencies v1.1.0 GMF v1.1 and board-manager v0.7 integration; ethernet_init pinned to 1.3.0 for compatibility Changelog
gmf_misc Dependencies v1.1.0 Dependency and version alignment with GMF v1.1; no new functional changes Changelog

Get This Release

Check out the v1.1 release tag:

git clone --branch v1.1 https://github.com/espressif/esp-gmf.git esp-gmf-v1.1
cd esp-gmf-v1.1

Alternatively, add the components needed by your application through the ESP Component Registry. For example:

idf.py add-dependency "espressif/gmf_audio~1.1.0"
idf.py add-dependency "espressif/gmf_ai_audio~1.1.1"
idf.py add-dependency "espressif/gmf_loader~1.1.1"
idf.py add-dependency "espressif/esp_player~1.1.1"
idf.py add-dependency "espressif/esp_capture~1.1.1"
idf.py add-dependency "espressif/esp_bt_audio~1.2.0"

Review the compatibility notes above when upgrading an existing v1.0 application, especially custom audio elements, AV frame producers, and ESP32-P4/S31 deployments.