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