[ English | 简体中文 ]
媒体工具 API
媒体框架通用工具接口,包括 DTMF 双音多频信号生成、事件名查询、图/策略 dump 与通用命令发送。
头文件:#include <media_utils.h>
openvela 实现说明
- DTMF:生成
0-9/*#ABCD对应的 DTMF 双音多频信号,音频格式固定为format=s16le:sample_rate=8000:ch_layout=mono(由MEDIA_TONE_DTMF_FORMAT宏定义) - 调试接口:
media_graph_dump、media_player_dump、media_recorder_dump和media_policy_dump用于打印内部状态,便于问题定位 - 通用命令:
media_process_command向 media server 发送自定义命令,用于扩展能力(如触发 graph 内某个 filter 的操作) - 事件名查询:
media_event_get_name把MEDIA_EVENT_*数值转成可读字符串,便于日志输出
DTMF 信号生成
media_dtmf_get_buffer_size
int media_dtmf_get_buffer_size(const char* numbers);
查询 DTMF 信号所需的缓冲区大小。
参数:
numbers拨号按键字符序列,字符范围为0-9与*#ABCD。
返回值:
成功时返回缓冲区字节数,失败时返回负的 errno。
media_dtmf_generate
int media_dtmf_generate(const char* numbers, void* buffer);
生成一个或连续多个 DTMF 信号并写入调用方提供的缓冲区。
参数:
numbers拨号按键字符序列,字符范围为0-9与*#ABCD。buffer输出缓冲区,大小需通过media_dtmf_get_buffer_size提前查询。
返回值:
成功时返回 0,失败时返回负的 errno。
注意:
- 播放 DTMF 音时,音频参数必须固定为
MEDIA_TONE_DTMF_FORMAT(s16le / 8000Hz / mono)。
事件名查询
media_event_get_name
const char* media_event_get_name(int event);
将 MEDIA_EVENT_* 枚举值转换为可读的字符串。
参数:
event事件值,取值为MEDIA_EVENT_*常量。
返回值:
始终返回可打印的字符串,对未知事件返回占位字符串(不会返回 NULL)。
示例:
printf("event: %s\n", media_event_get_name(MEDIA_EVENT_STARTED));
// 输出: event: STARTED
Dump 调试
media_graph_dump
void media_graph_dump(const char* options);
打印 media graph 内部状态,用于调试。
参数:
optionsdump 选项字符串。
media_policy_dump
void media_policy_dump(const char* options);
打印 media policy 当前状态,用于调试。
参数:
optionsdump 选项字符串。
media_player_dump
void media_player_dump(const char* options);
打印 media player 内部状态,用于调试。
参数:
optionsdump 选项字符串。
media_recorder_dump
void media_recorder_dump(const char* options);
打印 media recorder 内部状态,用于调试。
参数:
optionsdump 选项字符串。
通用命令
media_process_command
int media_process_command(const char* target, const char* cmd,
const char* arg, char* res, int res_len);
向 media server 内的指定 graph filter 发送自定义命令。
参数:
target目标 graph filter 实例名。cmd命令类型。arg命令参数。res响应消息输出缓冲区。res_len响应缓冲区长度。
返回值:
成功时返回 0,失败时返回负的 errno。