You are using staging server - a separate instance of the ESP Component Registry that allows you to try distribution tools and processes without affecting the real registry.

jason-mao/gmf_loader

0.7.0

Latest
uploaded 1 day ago
Espressif GMF Loader is a module that loads elements and I/O components for the GMF pipeline

readme (zh)

# GMF Loader

- [English Version](./README.md)

GMF Loader 是一个帮助组件,允许用户通过 menuconfig 轻松自定义其 GMF pool。它提供两个关键功能:

- 初始化:启用选定的 GMF 功能并将相应的元素添加到用户的 pool 中
- 配置:允许在将元素添加到 pool 之前通过 menuconfig 设置默认参数

## 功能特点

- 可配置的 GMF IO 初始化:
  - IO Reader:
    - Codec Device RX
    - File Reader
    - HTTP Reader
    - Flash Reader
  - IO Writer:
    - Codec Device TX
    - File Writer
    - HTTP Writer

- 音频编解码器初始化支持:
  - 解码器:MP3、AAC、AMR-NB/WB、FLAC、WAV、M4A、TS、OPUS、G711、PCM、ADPCM
  - 编码器:AAC、AMR-NB/WB、G711、OPUS、ADPCM、PCM、ALAC

- 音频效果配置:
  - 自动电平控制 (ALC)
  - 均衡器 (EQ)
  - 声道转换
  - 位深度转换
  - 采样率转换
  - 淡入淡出效果
  - 音速效果
  - 声道交织/解交织
  - 音频混音

- AI 音频配置:
  - 音频回声消除 (AEC)
  - 音频前端 (AFE)

- 视频编解码器初始化支持:
  - 解码器:H264(软件)、MJPEG(软件/硬件)
  - 编码器:H264(软件/硬件)、MJPEG(软件/硬件)

- 视频效果配置:
  - 视频像素加速器 (PPA)
  - 帧率转换
  - 视频叠加
  - 视频裁剪
  - 视频缩放
  - 视频旋转
  - 视频颜色转换

- 其他元素配置:
  - 复制器:在元素之间复制数据

## 配置

配置选项分为以下几个部分:

- GMF IO 配置:配置 IO 读取器和写入器
- GMF 音频配置:配置音频编解码器、效果和 AI 功能
- GMF 视频配置:配置视频编解码器和效果
- GMF 其他配置:配置其他元素,如复制器

以下为配置菜单明细

- [Y] 表示该组件将默认添加到给定的GMF Pool 中
- [N] 表示该组件默认不添加到给定的GMF Pool 中

```text
ESP GMF Loader
├── GMF IO Configurations
│   ├── IO Reader
│   │   ├── Codec Device RX [Y]
│   │   ├── File Reader [Y]
│   │   ├── HTTP Reader [Y]
│   │   └── Flash Reader [Y]
│   └── IO Writer
│       ├── Codec Device TX [Y]
│       ├── File Writer [Y]
│       └── HTTP Writer [N]
│
├── GMF Audio Configurations
│   ├── GMF Audio Codec
│   │   ├── Decoders [Y]
│   │   │   ├── AAC [Y]
│   │   │   ├── MP3
│   │   │   ├── AMR-NB
│   │   │   ├── AMR-WB
│   │   │   ├── FLAC
│   │   │   ├── WAV
│   │   │   ├── M4A
│   │   │   ├── TS
│   │   │   ├── Raw Opus
│   │   │   ├── G711A
│   │   │   ├── G711U
│   │   │   ├── PCM
│   │   │   └── ADPCM
│   │   └── Encoders [Y]
│   │       ├── AAC [Y]
│   │       ├── AMR-NB/WB
│   │       ├── G711
│   │       ├── OPUS
│   │       ├── ADPCM
│   │       ├── PCM
│   │       └── ALAC
│   │
│   ├── GMF Audio Effects
│   │   ├── Automatic Level Control (ALC) [Y]
│   │   ├── Channel Conversion [Y]
│   │   ├── Bit Depth Conversion [Y]
│   │   ├── Sample Rate Conversion [Y]
│   │   ├── Channel Interleave [N]
│   │   ├── Channel Deinterleave [N]
│   │   ├── Audio Mixing [N]
│   │   ├── Equalizer (EQ) [N]
│   │   ├── Speed Effect [N]
│   │   └── Fade In/Out [N]
│   │
│   └── GMF AI Audio
│       ├── Audio Echo Cancellation (AEC) [Y]
│       └── Audio Front End (AFE) [N]
│
│── GMF Video Configurations     
│   ├── GMF Video Codec
│   │   ├── Decoders [N]
│   │   │   ├── Auto [Y]
│   │   │   ├── Software H264
│   │   │   ├── Software MJPEG
│   │   │   └── Hardware MJPEG
│   │   └── Encoders [N]
│   │       ├── Auto [Y]
│   │       ├── Software H264
│   │       ├── Hardware H264
│   │       ├── Software MJPEG
│   │       └── Hardware MJPEG
│   │
│   └── GMF Video Effects
│       ├── Video PPA [N]
│       ├── Video FPS Convert [N]
│       ├── Video Overlay [N]
│       ├── Video Crop [N]
│       ├── Video Scale [N]
│       ├── Video Rotate [N]
│       └── Video Color Convert [N]
│
└── GMF Miscellaneous Configurations
    └── Copier [N]
```

## 使用方法

1. 在 "ESP GMF Loader" 下通过 menuconfig 启用所需的 GMF 功能
2. 配置已启用功能的参数
3. 调用 `gmf_loader_setup_all_defaults` 始化选定的 GMF 元素并将它们注册到 GMF Pool 中
4. 调用 `gmf_loader_teardown_all_defaults` 释放由 `gmf_loader_setup_all_defaults` 分配的资源,确保在调用此 API 之前销毁 pool

### 设置示例

以下是使用 `gmf_loader_setup_all_defaults` 设置 GMF 元素的基本示例:

```c
// 初始化 GMF 池
esp_gmf_pool_handle_t pool = NULL;
esp_err_t ret = esp_gmf_pool_init(&pool);
if (ret != ESP_OK) {
    ESP_LOGE(TAG, "Failed to initialize GMF pool");
    return;
}

// 设置默认 GMF 元素
ret = gmf_loader_setup_all_defaults(pool);
if (ret != ESP_OK) {
    ESP_LOGE(TAG, "Failed to setup default GMF elements");
    esp_gmf_pool_deinit(pool);
    return;
}

// 创建带有 HTTP 读取器
esp_gmf_pipeline_handle_t pipeline = NULL;
const char *elements[] = {"aud_dec"};
ret = esp_gmf_pool_new_pipeline(pool, "io_http", elements, 1, "io_codec_dev", &pipeline);
if (ret != ESP_OK) {
    ESP_LOGE(TAG, "Failed to create pipeline");
    gmf_loader_teardown_all_defaults(pool);
    esp_gmf_pool_deinit(pool);
    return;
}

// 设置输入 URL
esp_gmf_pipeline_set_in_uri(pipeline, "http://example.com/audio.mp3");

// 配置并初始化 GMF 任务
esp_gmf_task_cfg_t cfg = DEFAULT_ESP_GMF_TASK_CONFIG();
cfg.thread.core = 0;  // 设置任务运行的核心
cfg.thread.stack = 5120;  // 设置任务栈大小
esp_gmf_task_handle_t task = NULL;
esp_gmf_task_init(&cfg, &task);

// 将任务绑定到管道
esp_gmf_pipeline_bind_task(pipeline, task);
esp_gmf_pipeline_loading_jobs(pipeline);

// 配置并启动管道
esp_gmf_pipeline_run(pipeline);

// 完成后清理
esp_gmf_task_deinit(task);
esp_gmf_pipeline_destroy(pipeline);
gmf_loader_teardown_all_defaults(pool);
esp_gmf_pool_deinit(pool);
```

Links

Supports all targets

License: Custom

Tags

To add this component to your project, run:

idf.py add-dependency "jason-mao/gmf_loader^0.7.0"

or download archive

Stats

  • Archive size
    Archive size ~ 46.60 KB
  • Downloaded in total
    Downloaded in total 0 times
  • Downloaded this version
    This version: 0 times

Badge

jason-mao/gmf_loader version: 0.7.0
|