# ESP-GMF General Multimedia Framework

[中文]

ESP-GMF (Espressif General Multimedia Framework) is Espressif’s lightweight processing framework for IoT multimedia. It uses elements as the basic processing units, connects them in a pipeline, and transfers audio, video, and general data through ports and a data bus.

Architecture, APIs, and examples are in the ESP-GMF documentation.

Component | Layer | Description | Related links
--- | --- | --- | ---
`gmf_core` | Core | Defines the processing chain, processing unit, data port, data bus, and FOURCC | Docs · Component
`gmf_io` | Elements | Provides external interfaces for files, HTTP, embedded Flash, I2S PDM, and codec devices | Docs · Component
`gmf_audio` | Elements | Provides audio codecs, sample-rate, channel, and bit-depth conversion, plus equalization, mixing, fade, automatic level control, and dynamic range control | Docs · Component
`gmf_video` | Elements | Provides video codecs, plus scaling, rotation, overlay, and frame-rate conversion, with PPA acceleration when available | Docs · Component
`gmf_ai_audio` | Elements | Provides acoustic echo cancellation, noise suppression, automatic gain control, voice activity detection, wake-word detection, and command-word recognition | Docs · Component
`gmf_misc` | Elements | Copies one input to multiple outputs for splitting and parallel processing | Docs · Component
`gmf_loader` | Packages | Registers processing units and external interfaces into the framework pool from menuconfig, and applies default parameters | Docs · Component
`gmf_app_utils` | Packages | Provides application initialization and debug helpers for codecs, I2C, SD cards, Wi-Fi, and the command line | Docs · Component
`esp_capture` | Packages | Captures audio and video through a source, processing path, and sink, with encoding, overlay, and local storage | Docs · Component
`esp_player` | Packages | Demuxes, decodes, and renders audio and video in one instance; input can be a local file, HTTP(S), HLS, or an external frame | Docs · Component
`esp_audio_simple_player` | Packages | Plays audio by selecting the external interface and decoder from the URI scheme and file extension | Docs · Component
`esp_audio_render` | Packages | Mixes multiple PCM streams and writes the result through a callback; processing chains can run before and after mixing | Docs · Component
`esp_video_render` | Packages | Composites video and UI onto LCD, LVGL, or a frame buffer; supports multiple inputs and dirty-region updates | Docs · Component
`esp_bt_audio` | Packages | Provides Classic Bluetooth and LE Audio interfaces covering A2DP, HFP, AVRCP, and optional broadcast roles | Docs · Component
`esp_asrc` | Packages | Converts sample rate, bit depth, and channels; uses the ASRC peripheral when present, otherwise a software implementation | Docs · Component
`gmf_fft` | Packages | Provides a fixed-point Q15 real FFT and IFFT for lengths from 32 to 8192, with PIE vector optimizations and a C implementation | Docs · Component

Provide feedback about this document