The Espressif General Multimedia Framework (ESP-GMF) is a lightweight and versatile software framework developed by Espressif specifically for IoT multimedia applications. It is highly flexible and scalable and tailored for IoT chips, with RAM usage as low as 7 KB. ESP-GMF supports applications in audio, image, and video processing, as well as any data-streaming product.
ESP-GMF consists of four modules: GMF-Core, Elements, Packages, and GMF-Examples.
- GMF-Core is the core of the ESP-GMF software framework and includes the main components such as GMF-Element, GMF-Pipeline, and GMF-Task.
- Elements implements various functional elements based on GMF-Core, such as codec algorithms, audio processing algorithms, and more.
- Packages implements high-level functional components based on GMF-Pipeline, such as the ESP Audio Simple Player, which is a basic audio decoding player.
- GMF-Examples provides examples of how to use GMF-Pipeline to implement simple functionalities, such as playing music from flash or an SD card.
ESP-GMF modules exist as components, which are categorized by functionality into atomic components, basic components and advanced components. When developing a project, it is recommended to use the elements and IOs components from the official repository. You can also create your own elements and IO components to extend its application scenarios.
Atomic components are essential, core building of ESP-GMF.
Component Name | Function | Dependent Components |
---|---|---|
gmf_core | Core framework for GMF | None |
Basic components are intermediate-layer modules in ESP-GMF that handle data processing and core capabilities like audio/video stream encoding/decoding. These components have clear input/output interfaces, focus on specific tasks, and are reusable and composable. They can be used independently or commonly combined to build complex applications.
Component Name | Function | Dependent Components |
---|---|---|
gmf_audio | Elements for audio encoding, decoding, and sound effects processing |
- gmf_core - esp_audio_effects - esp_audio_codec |
gmf_misc | Utility elements | None |
gmf_io | Input/output for files, flash, and HTTP | - gmf_core - esp_codec_dev |
gmf_ai_audio | Elements for intelligence audio processing and speech recognition |
- esp-sr - gmf_core |
gmf_video | Elements for video encoding, decoding, and video effects processing |
- gmf_core - esp_video_codec |
Advanced components are encapsulation modules in ESP-GMF that target specific application scenarios, typically composed of multiple basic components or even atomic components. They encapsulate common multimedia business processes, hide the underlying pipeline construction and component configuration logic, provide simple and easy-to-use interfaces to help users quickly implement complex functions, simplify user development processes, and facilitate rapid integration. This category also includes utility modules and example collections.
Component Name | Function | Dependent Components |
---|---|---|
esp_audio_simple_player | Simple audio player | - gmf_audio - gmf_io |
gmf_loader | Set up the given GMF pool using the configuration selected via Kconfig |
- gmf_core - gmf_io - gmf_audio - gmf_ai_audio - esp_codec_dev - esp_audio_codec |
For a basic example of GMF-Core API usage, see test_apps. For practical application examples of elements, see the examples .
-
What is the difference between ESP-GMF and ESP-ADF?
ESP-ADF is a functional repository that includes many modules, such as
audio_pipeline
,services
,peripherals
, andaudio boards
. It is commonly used for more complex projects. ESP-GMF is an extension of theaudio_pipeline
module, designed to support applications for streaming audio, video, and image data. ESP-GMF offers a more modular structure than ESP-ADF'saudio_pipeline
by organizing functionality into different components, making it more flexible. For example, it is suitable for simple data streaming, such as playing audio from SD card/flash, or combining multiple components to provide more complex modules (e.g., audio playeresp_audio_simple_player
). Future versions of ESP-ADF will replace theaudio_pipeline
module with ESP-GMF.