音频输入与输出 (AI&AO)
概述
AIO 模块,即音频输入输出模块,通过对音频接口的控制实现音频输入输出功能。
- 音频输入模块负责从外部设备(如麦克风)接收音频信号,并将其转换为数字信号供后续处理。
- 音频输出模块则将处理后的数字音频信号转换回模拟信号,通过扬声器或其他音频输出设备播放出来。
功能描述
音频输入输出接口
音频输入输出接口简称为AIO(Audio Input/Output)接口,用于对接音频框架Alsa(Linux平台),完成声音的录制和播放。
AIO 接口分为两种类型:只支持输入或只支持输出。
- 当为输入类型时,又称为 AI(Audio Input)。
- 当为输出类型时,又称为 AO(Audio Output)。
AIO 接口如下图所示,箭头方向为数据流动方向。

AIO 设备
软件中负责抽象音频接口输入功能的,称之为 AI 设备;负责抽象音频接口输出功能的单元,称之为 AO 设备。对每个输入输出接口,软件根据该接口支持的功能,分别与 AI 设备和 AO 设备建立映射关系。例如:AI0 只支持音频输入,则 AI0 映射为 AiDev0;AO0 只支持音频输出,则 AO0 映射为 AoDev0。
AIO 设备号是抽象的软件层概念,设备号从 0 开始编号,如 AoDev0、AoDev1...、AiDev0、AiDev1...。通常情况下,一个 AIO 设备号对应一个音频驱动的声卡,客户实际挂载的声卡可能不同。
AIO 通道
AIO 通道指 AIO 设备上输入/输出的音频流,一个音频流对应一个通道。
- 对 AO,暂不支持多通道混音。
- 对 AI,一个设备只支持一个通道。
AIO 重采样
重采样是指对音频数据的采样率(samplerate),声道数(channels)和格式(format)进行转换。AIO 模块支持对音频数据实施 重采样。
如果启用 AI 重采样功能,AI 内部按照重采样设置,进行重采样处理,应用可通过调用 ZH_MPI_AI_GetFrame 接口获取处理的数据。同理,如果启用了 AO 重采样功能,则用户通过 ZH_MPI_AO_SendFrame 将音频数据送给 AO,AO 内部会对数据进行重采样处理,并将处理后的数据通过声卡播放出来。
- AO 重采样主要是将输入数据重采成声卡支持的数据。如下图,AO 接收到的数据为(8kHz,1ch),而声卡只支持(48kHz,2ch)数据,此时可开启 AO 重采样,将(8kHz,1ch)的数据转换成声卡支持的(48kHz,2ch)数据。
- AI 重采样主要是将声卡采集到的数据转换成应用所需要获取数据。如下图,录音声卡只支持(16kHz,2ch)的参数,而应用需要(8khz,1ch)的数据,此时可开启 AI 重采样,会重采样成用户需要的数据。
- AIO 模块对输入/输出的每帧数据的采样率、声道数、格式等均有判断,对于经过 AIO 重采样处理的数据,若输入数据参数与重采样设置参数相同,则不会进入重采样处理,直接输出给后级处理。以 AO 为例,AO 接收到的(48kHz,2ch)数据,AO 重采样开启,且设置重采后参数为(48kHz,2ch),当(48kHz,2ch)数据流经重采样处理时,数据不进行重采处理,而直接送入重采后的下一级处理。因此即使开启 AO 重采处理,在条件满足时(即重采后参数与输入数据参数相等),也不会因重采开启而浪费 CPU 资源。建议始终开启 AIO 重采样功能。

音频输入输出设备和内置 codec
不同客户需要的产品形态不同,需要的声卡驱动不同,需要实际调整,配置主从模式和声卡配置需要修改内核 dts。实际开发的时候联系驱动音频⼯程师进行指导。
API 参考
音频输入
该功能模块为用户提供以下API:
- ZH_MPI_AI_SetPubAttr:设置 AI 设备属性。
- ZH_MPI_AI_GetPubAttr:获取 AI 设备属性。
- ZH_MPI_AI_Enable:启用 AI 设备。
- ZH_MPI_AI_Disable:禁用 AI 设备。
- ZH_MPI_AI_EnableChn:启用 AI 通道。
- ZH_MPI_AI_DisableChn:禁用 AI 通道。
- ZH_MPI_AI_EnableDataRead:启用 AI 读数据模式。
- ZH_MPI_AI_DisableDataRead:禁用 AI 读数据模式。
- ZH_MPI_AI_SendFrame:发送音频帧。
- ZH_MPI_AI_GetFrame:获取音频帧。
- ZH_MPI_AI_ReleaseFrame:释放音频帧。
- ZH_MPI_AI_SetChnParam:设置 AI 通道参数。
- ZH_MPI_AI_GetChnParam:获取 AI 通道参数。
- ZH_MPI_AI_EnableReSmp:启动 AI 重采样。
- ZH_MPI_AI_DisableReSmp:禁用 AI 重采样。
- ZH_MPI_AI_SetVolume:设置 AI 设备音量大小。
- ZH_MPI_AI_GetVolume:获取 AI 设备音量大小。
- ZH_MPI_AI_SetMute:设置 AI 设备静音状态。
- ZH_MPI_AI_GetMute:获取 AI 设备静音状态。
- ZH_MPI_AI_SetTrackMode:设置声道模式。
- ZH_MPI_AI_GetTrackMode:获取声道模式。
- ZH_MPI_AI_ClrPubAttr:清除 AI 设备属性。
- ZH_MPI_AI_SaveFile:开启音频输出保存文件功能。
- ZH_MPI_AI_QueryFileStatus:查询音频输出通道是否处于存文件的状态。
ZH_MPI_AI_SetPubAttr
描述
设 置 AI 设备属性。
语法
ZH_S32 ZH_MPI_AI_SetPubAttr(AUDIO_DEV AiDevId, const AIO_ATTR_S *pstAttr);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| pstAttr | const AIO_ATTR_S* | AI设备属性指针。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
音频输入的属性包括输出数据的属性和输入设备(声卡)属性:采样率、声道数、采样精度、buffer 大小、每帧的采样点数等。
- 在设置声卡设备属性之前需要保证 AiDevId 对应的 AI 处于禁用状态,如果处于启用状态则需要首先禁用 AI 声卡设备。
- 采样率:指一秒钟的采样点数。设置声卡设备的采样率,要确认声卡设备是否支持所需要设定的采样率。
- 通道数目:指当前输入设备的 AI 功能的通道数目。需要与对接的 Audio Codec 的配置保持一致。
ZH_MPI_AI_GetPubAttr
描述
获取 AI 设备属性。
语法
ZH_S32 ZH_MPI_AI_GetPubAttr(AUDIO_DEV AiDevId, AIO_ATTR_S *pstAttr);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| pstAttr | AIO_ATTR_S* | AI 设备属性指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 获取的属性为前一次配置的属性。
- 如果从未配置过属性,则返回属性未配置的错误。
ZH_MPI_AI_Enable
描述
启用 AI 设备。
语法
ZH_S32 ZH_MPI_AI_Enable(AUDIO_DEV AiDevId);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 要求在启用前配置 AI 设备属性,否则会返回属性未配置的错误。
- 如果 AI 设备已经启用,重复启用,则返回正在使用中的错误。
ZH_MPI_AI_Disable
描述
禁用 AI 设备。
语法
ZH_S32 ZH_MPI_AI_Disable(AUDIO_DEV AiDevId);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 如果 AI 设备未启用,则返回未启用的 AUDIO 错误码。
- 禁用 AI 设备前必须先禁用设备下所有 AI 通道。
- 声卡设备使用完成后,必须关闭声卡设备。
ZH_MPI_AI_EnableChn
描述
启用 AI 通道。
语法
ZH_S32 ZH_MPI_AI_EnableChn(AUDIO_DEV AiDevId, AI_CHN AiChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
启用 AI 通道前,必须先启用其所属的 AI 设备,否则返回设备未启动的 AUDIO 错误码。
ZH_MPI_AI_DisableChn
描述
禁用 AI 通道。
语法
ZH_S32 ZH_MPI_AI_DisableChn(AUDIO_DEV AiDevId, AI_CHN AiChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
通道使用完成后,必须调用关闭 AI 通道。
ZH_MPI_AI_EnableDataRead
描述
启用 AI 读数据模式。
语法
ZH_S32 ZH_MPI_AI_EnableDataRead(AUDIO_DEV AiDevId, AI_CHN AiChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
启用 AI 读数据模式前,必须先启用其所属的 AI 设备,否则返回设备未启动的 AUDIO 错误码。
ZH_MPI_AI_DisableDataRead
描述
禁用 AI 读数据模式。
语法
ZH_S32 ZH_MPI_AI_DisableDataRead(AUDIO_DEV AiDevId, AI_CHN AiChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
读数据模式使用完成后,必须调用关闭 AI 读数据模式。
ZH_MPI_AI_SendFrame
描述
发送音频帧。
语法
ZH_S32 ZH_MPI_AI_SendFrame(AUDIO_DEV AiDevId, Ai_CHN AiChn, const AUDIO_FRAME_S *pstFrm, ZH_S32 s32MilliSec);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | Ai_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
| pstFrm | const AUDIO_FRAME_S* | 音频帧结构体指针。 | 输出 |
| s32MilliSec | ZH_S32 | 获取数据的超时时间: -1:阻塞模式 ≥0:非阻塞模式,设置读取数据的超时时间(单位:毫秒) | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- s32MilliSec 等于 -1 时,表示采用阻塞模式发送数据,该接口会被阻塞直到数据被成功送入;大于等于 0 时,表示非阻塞模式发送数据的超时时间(毫秒)。如在超时时间内完成数据的发送,则返回成功,否则返回超时并报错。
- 发送音频帧数据前,必须先开启对应的 AI 通道和声卡设备。
ZH_MPI_AI_GetFrame
描述
获取音频帧。
语法
ZH_S32 ZH_MPI_AI_GetFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_FRAME_S *pstFrm, AEC_FRAME_S *pstAecFrm , ZH_S32 s32MilliSec);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
| pstFrm | AUDIO_FRAME_S* | 音频帧结构体指针。 | 输出 |
| pstAecFrm | AEC_FRAME_S | 回声抵消参考帧结构体指针。默认 ZH_NULL | 输出 |
| s32MilliSec | ZH_S32 | 获取数据的超时时间: -1:阻塞模式 ≥0:非阻塞模式,设置读取数据的超时时间(单位:毫秒) | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 目前 pstAecFrm 未使用,置为空。
- s32MilliSec 等于 -1 表示采用阻塞模式读取数据,该接口会⼀直阻塞直到成功读取到数据或当前通道退出/禁用为止;大于等于 0,表示以非阻塞模式读取数据的超时时间( 毫秒),如在 s32MilliSec 毫秒内没有读取到数据,则返回超时并报错。
- 获取音频帧数据前,必须先开启对应的 AI 通道和声卡设备。
ZH_MPI_AI_ReleaseFrame
描述
释放音频帧。
语法
ZH_S32 ZH_MPI_AI_ReleaseFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, const AUDIO_FRAME_S *pstFrm, const AEC_FRAME_S *pstAecFrm);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
| pstFrm | const AUDIO_FRAME_S* | 音频帧结构体指针。 | 输入 |
| pstAecFrm | const AEC_FRAME_S* | 回声抵消参考帧结构体指针。默认 ZH_NULL | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
目前不需要释放回声抵消参考帧,pstAecFrm 置为 ZH_NULL 即可。
ZH_MPI_AI_SetChnParam
描述
设置 AI 通道参数。
语法
ZH_S32 ZH_MPI_AI_SetChnParam(AUDIO_DEV AiDevId, AI_CHN AiChn, const AI_CHN_PARAM_S *pstChnParam);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
| pstChnParam | const AI_CHN_PARAM_S* | 音频通道参数。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
通道参数目前只有一个成员变量,用于设置用户获取音频帧的缓存个数。默认为 4 个。
ZH_MPI_AI_GetChnParam
描述
设置 AI 通道参数。
语法
ZH_S32 ZH_MPI_AI_GetChnParam(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_CHN_PARAM_S *pstChnParam);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
| pstChnParam | AI_CHN_PARAM_S* | 音频通道参数。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
ZH_MPI_AI_EnableReSmp
描述
启用 AI 重采样。
语法
ZH_S32 ZH_MPI_AI_EnableReSmp(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_SAMPLE_RATE_E enOutSampleRate);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输 入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
| enOutSampleRate | AUDIO_SAMPLE_RATE_E | 音频重采样的输出采样率。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 在启用 AI 通道之后,调用此接口启用重采样功能。
- 允许重复启用重采样功能,但必须保证后配置的重采样输入采样率与之前配置的重采样输入采样率不⼀样。
- 在禁用 AI 通道后,如果重新启用 AI 通道,并使用重采样功能,需调用此接口重新启用重采样。
- AI 重采样的输入采样率为读取数据的采样率。
- 强烈建议启用此接口,内部插件会有参数判断,参数⼀致时数据会直接 bypass。
示例代码
以 AI 从录制 32K 到 8K 的重采样为例,配置如下:
/* dev attr of ai */
aiAttr.soundCard.channels = 2;
aiAttr.soundCard.sampleRate = 32000;
aiAttr.soundCard.bitWidth = AUDIO_BIT_WIDTH_16;
aiAttr.enBitwidth = AUDIO_BIT_WIDTH_16;
aiAttr.enSamplerate = AUDIO_SAMPLE_RATE_8000;
aiAttr.enSoundmode = AUDIO_SOUND_MODE_STEREO;
aiAttr.u32FrmNum = 4;
aiAttr.u32PtNumPerFrm = 1024;
ZH_MPI_AI_EnableReSmp(AiDev, AiChn, AUDIO_SAMPLE_RATE_8000);
ZH_MPI_AI_DisableReSmp
描述
禁用 AI 重采样。
语法
ZH_S32 ZH_MPI_AI_DisableReSmp(AUDIO_DEV AiDevId, AI_CHN AiChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
不再使用 AI 重采样功能的话,应该调用此接口将其禁用。
ZH_MPI_AI_SetVolume
描述
设置 AI 设备音量大小。
语法
ZH_S32 ZH_MPI_AI_SetVolume(AUDIO_DEV AiDevId, ZH_S32 s32VolumeDb);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| s32VolumeDb | ZH_S32 | 音频设备音 量大小百分比。 取值范围:[0, 100]。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AI 设备成功启用后再调用此接口。
ZH_MPI_AI_GetVolume
描述
获取 AI 设备音量大小。
语法
ZH_S32 ZH_MPI_AI_GetVolume(AUDIO_DEV AiDevId, ZH_S32 *ps32VolumeDb);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号 。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| ps32VolumeDb | ZH_S32* | 音频设备音量大小指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AI 设备成功启用后再调用此接口。
ZH_MPI_AI_SetMute
描述
设置 AI 设备静音状态。
语法
ZH_S32 ZH_MPI_AI_SetMute(AUDIO_DEV AiDevId, ZH_BOOL bEnable, const AUDIO_FADE_S *pstFade);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| bEnable | ZH_BOOL | 音频设备是否启用静音。 - ZH_TRUE:开启静音 - ZH_FALSE:关闭静音 | 输入 |
| pstFade | const AUDIO_FADE_S* | 音频淡入淡出结构体指针。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 在 AI 设备成功启用后再调用此接口。
- 调用此接口时,用户可以选择是否使用淡入淡出功能,如果不使用淡入淡出则将结构体指针赋为空即可。
ZH_MPI_AI_GetMute
描述
获取 AI 设备静音状态。
语法
ZH_S32 ZH_MPI_AI_GetMute(AUDIO_DEV AiDevId, ZH_BOOL *pbEnable, AUDIO_FADE_S *pstFade);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| pbEnable | ZH_BOOL* | 音频设备静音状态指针。 | 输出 |
| pstFade | AUDIO_FADE_S* | 音频淡入淡出结构体指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AI 设备成功启用后再调用此接口。
ZH_MPI_AI_SetTrackMode
描述
设置 AI 通道模式。
语法
ZH_S32 ZH_MPI_AI_SetTrackMode(AUDIO_DEV AiDevId, AUDIO_TRACK_MODE_E enTrackMode);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| enTrackMode | AUDIO_TRACK_MODE_E | 音频声道模式。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AI 设备成功启用后再调用此接口。
ZH_MPI_AI_GetTrackMode
描述
设置 AI 通道模式。
语法
ZH_S32 ZH_MPI_AI_GetTrackMode(AUDIO_DEV AiDevId, AUDIO_TRACK_MODE_E *penTrackMode);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| penTrackMode | AUDIO_TRACK_MODE_E* | 音频输入声道模式指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AI 设备成功启用后再调用此接口。
ZH_MPI_AI_ClrPubAttr
描述
清空 Pub 属性。
语法
ZH_S32 ZH_MPI_AI_ClrPubAttr(AUDIO_DEV AiDevId);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
清除设备属性前,需要先停止设备。
ZH_MPI_AI_SaveFile
描述
开启音频输入保存文件功能。
语法
ZH_S32 ZH_MPI_AI_SaveFile(AUDIO_DEV AiDevId, AI_CHN AiChn, const AUDIO_SAVE_FILE_INFO_S *pstSaveFileInfo);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
| pstSaveFileInfo | const AUDIO_SAVE_FILE_INFO_S* | 音频保存文件属性结构体指针。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
此接口仅用于 AI 非绑定模式下保存 AI 从声卡录制的 PCM 文件。
ZH_MPI_AI_QueryFileStatus
描述
查询音频输入通道是否处于存文件的状态。
语法
ZH_S32 ZH_MPI_AI_QueryFileStatus(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_FILE_STATUS_S *pstFileStatus);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AiDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AI_DEV_MAX_NUM)。 | 输入 |
| AiChn | AI_CHN | 音频输入通道号。 取值范围:[0, AI_MAX_CHN_NUM)。 | 输入 |
| pstFileStatus | AUDIO_FILE_STATUS_S* | 状态属性结构体指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
此接口用于查询音频输入通道是否处于存文件的状态,当用户调用 ZH_MPI_AI_SaveFile 存储文件后,可调用此接口查询存储的文件是否达到了指定的大小,如果 pstFileStatus 的 bSaving 为 ZH_TRUE,说明还没有达到指定大小,为 ZH_FALSE 则已经达到指定大小。
音频输出
该功能模块为用户提供以下 API:
- ZH_MPI_AO_SetPubAttr:设置 AO 设备属性。
- ZH_MPI_AO_GetPubAttr:获取 AO 设备属性。
- ZH_MPI_AO_Enable:启用 AO 设备。
- ZH_MPI_AO_Disable:禁用 AO 设备。
- ZH_MPI_AO_EnableChn:启用 AO 通道。
- ZH_MPI_AO_DisableChn:禁用 AO 通道。
- ZH_MPI_AO_SendFrame:发送 AO 音频帧。
- ZH_MPI_AO_EnableReSmp:启用 AO 重采样。
- ZH_MPI_AO_DisableReSmp:禁用 AO 重采样。
- ZH_MPI_AO_PauseChn:暂停 AO 通道。
- ZH_MPI_AO_ResumeChn:恢复 AO 通道。
- ZH_MPI_AO_ClearChnBuf:清除 AO 通道中当前的音频数据缓存。
- ZH_MPI_AO_QueryChnStat:查询 AO 通道中当前的音频数据缓存状态。
- ZH_MPI_AO_SetTrackMode:设置 AO 设备声道模式。
- ZH_MPI_AO_GetTrackMode:获取 AO 设备声道模式。
- ZH_MPI_AO_SetVolume:设置 AO 设备音量大小。
- ZH_MPI_AO_GetVolume:获取 AO 设备音量大小。
- ZH_MPI_AO_SetChnParams:设置 AO 通道参数。
- ZH_MPI_AO_GetChnParams:获取 AO 通道参数。
- ZH_MPI_AO_SetMute:设置 AO 设备静音状态。
- ZH_MPI_AO_GetMute:获取 AO 设备静音状态。
- ZH_MPI_AO_SaveFile:开启音频输出保存文件功能。
- ZH_MPI_AO_QueryFileStatus:查询音频输出通道是否处于存文件的状态。
- ZH_MPI_AO_ClrPubAttr:清除 AO 设备属性。
- ZH_MPI_AO_WaitEos:等待指定设备和通道播放完成。
ZH_MPI_AO_SetPubAttr
描述
设置 AO 设备(声卡)参数。
语法
ZH_S32 ZH_MPI_AO_SetPubAttr(AUDIO_DEV AoDevId, const AIO_ATTR_S *pstAttr);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| pstAttr | const AIO_ATTR_S* | 音频输出设备属性。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 在设置 AO 属性之前,需要确保 AO 处于禁用状态,如果处于启用状态则需要首先禁用 AO 声卡设备。
- 必须设置声卡设备的支持的采样率,声道数。其他参数可选配置(没有设置则采用默认值),参见 AIO_ATTR_S 结构体。
- linux 平台声卡驱动配置参见
/etc/asound.conf文件。
ZH_MPI_AO_GetPubAttr
描述
获取 AO 设备属性。
语法
ZH_S32 ZH_MPI_AO_GetPubAttr(AUDIO_DEV AoDevId, AIO_ATTR_S *pstAttr);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| pstAttr | AIO_ATTR_S* | 音频输出设备属性。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 获取设置的 AO 属性。
- 如果从未配置过属性,则返回属性未配置的错误。
ZH_MPI_AO_Enable
描述
启用 AO 设备。
语法
ZH_S32 ZH_MPI_AO_Enable(AUDIO_DEV AoDevId);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非0 | 失败,其值为AUDIO 错误码。 |
注意事项
- 要求在启用前配置 AO 设备属性,否则会返回属性未配置的错误。
- 如果 AO 设备已经启用,重复启用,则返回正在使用中的错误。
ZH_MPI_AO_Disable
描述
禁用 AO 设备。
语法
ZH_S32 ZH_MPI_AO_Disable(AUDIO_DEV AoDevId);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为AUDIO 错误码。 |
注意事项
- 如果 AO 设备未启用,则返回未启用的 AUDIO 错误码。
- 禁用 AO 设备前必须先禁用设备下所有 AO 通道。
ZH_MPI_AO_EnableChn
描述
启用 AO 通道。
语法
ZH_S32 ZH_MPI_AO_EnableChn(AUDIO_DEV AoDevId, AO_CHN AoChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
启用 AO 通道前,必须先启用其所属的 AO 设备,否则返回设备未启动的 AUDIO 错误码。
ZH_MPI_AO_DisableChn
描述
禁用 AO 通道。
语法
ZH_S32 ZH_MPI_AO_DisableChn(AUDIO_DEV AoDevId, AO_CHN AoChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
通道使用完成后,必须调用此函数关闭 AO 通道。
ZH_MPI_AO_SendFrame
描述
发送 AO 音频帧。
语法
ZH_S32 ZH_MPI_AO_SendFrame(AUDIO_DEV AoDevId, AO_CHN AoChn, const AUDIO_FRAME_S *pstData, ZH_S32 s32MilliSec);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
| pstData | const AUDIO_FRAME_S* | 音频帧结构体指针。 | 输入 |
| s32MilliSec | ZH_S32 | 发送数据的超时时间: -1:阻塞模式 ≥0:非阻塞模式,设置 发送数据的超时时间。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 该接口用于用户发送音频帧至 AO 输出。
- s32MilliSec 等于 -1 时,表示采用阻塞模式发送数据,该接口会被阻塞直到数据被成功送入;大于等于 0 时,表示非阻塞模式发送数据的超时时间(毫秒)。如在超时时间内完成数据的发送,则返回成功,否则返回超时并报错。
- 调用该接口发送音频帧到 AO 输出时,必须先开启对应的 AO 通道和声卡设备。
- 音频申请内存的方式建议尽量使用 malloc 方式申请。
ZH_MPI_AO_EnableReSmp
描述
启用 AO 重采样。
语法
ZH_S32 ZH_MPI_AO_EnableReSmp(AUDIO_DEV AoDevId, AO_CHN AoChn, AUDIO_SAMPLE_RATE_E enInSampleRate);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
| enInSampleRate | AUDIO_SAMPLE_RATE_E | 音频重采样的输入采样率。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 应该在启用 AO 通道之后,绑定 AO 通道之前,调用此接口启用重采样功能。
- 允许重复启用重采样功能,但必须保证后配置的重采样输入采样率与之前配置的重采样输入采样率不一样。
- 在禁用 AO 通道后,如果重新启用 AO 通道,并使用重采样功能,需调用此接口重新启用重采样。
- AO 重采样接口设置的采样率为发送数据的采样率。
- 就算不做重采样,也建议启用此接口,内部插件会有参数判断,参数一致时数据会直接 bypass。
示例代 码
以 AO 从回放 8K 到 32K 的重采样为例,配置如下:
/* dev attr of ao */
AIO_ATTR_S aoAttr;
/* dev attr of ao */
aoAttr.soundCard.channels = 2;
aoAttr.soundCard.sampleRate = 32000;
aoAttr.soundCard.bitWidth = AUDIO_BIT_WIDTH_16;
aoAttr.enBitwidth = AUDIO_BIT_WIDTH_16;
aoAttr.enSamplerate = AUDIO_SAMPLE_RATE_8000;
aoAttr.enSoundmode = AUDIO_SOUND_MODE_MONO;
ZH_MPI_AO_SetPubAttr(aoDevId, &aoAttr);
ZH_MPI_AO_EnableReSmp(AoDev, AoChn, AUDIO_SAMPLE_RATE_8000);
ZH_MPI_AO_DisableReSmp
描述
禁用 AO 重采样。
语法
ZH_S32 ZH_MPI_AO_DisableReSmp(AUDIO_DEV AoDevId, AO_CHN AoChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
不再使用 AO 重采样功能的话,应该调用此接口将其禁用。
ZH_MPI_AO_PauseChn
描述
暂停 AO 通道。
语法
ZH_S32 ZH_MPI_AO_PauseChn(AUDIO_DEV AoDevId, AO_CHN AoChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- AO 通道暂停后,如果绑定的 ADEC 通道继续向此通道发送音频帧数据,发送的音频帧数据将会被阻塞。而如果绑定的 AI 通道继续向此通道发送音频帧数据,在通道缓冲未满的情况下则将音频帧放入缓冲区,在满的情况下则将音频帧丢弃。
- AO 通道为禁用状态时,不允许调用此接口暂停 AO 通道。
ZH_MPI_AO_ResumeChn
描述
恢复 AO 通道。
语法
ZH_S32 ZH_MPI_AO_ResumeChn(AUDIO_DEV AoDevId, AO_CHN AoChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- AO 通道暂停后可以通过调用此接口重新恢复。
- AO 通道为暂停状态或使能状态下,调用此接口返回成功;否则调用将返回错误。
ZH_MPI_AO_ClearChnBuf
描述
清除 AO 通道中当前的音频数据缓存。
语法
ZH_S32 ZH_MPI_AO_ClearChnBuf(AUDIO_DEV AoDevId, AO_CHN AoChn);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 在 AO 通道成功启用后再调用此接口。
- 如果绑定 ADEC 通道,为完全清除解码回放通路上所有缓存数据,此接⼝还应该与
ZH_MPI_ADEC_ClearChnBuf接口配合使用。
ZH_MPI_AO_QueryChnStat
描述
查询 AO 通道中当前的音频数据缓存状态。
语法
ZH_S32 ZH_MPI_AO_QueryChnStat(AUDIO_DEV AoDevId, AO_CHN AoChn, AO_CHN_STATE_S *pstStatus);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
| pstStatus | AO_CHN_STATE_S* | 缓存状态结构体指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AO 通道成功启用后再调用此接口。
ZH_MPI_AO_SetTrackMode
描述
设置 AO 设备声道模式。
语法
ZH_S32 ZH_MPI_AO_SetTrackMode(AUDIO_DEV AoDevId, AUDIO_TRACK_MODE_E enTrackMode);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| enTrackMode | AUDIO_TRACK_MODE_E | 音频设备声道模式。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- AUDIO_TRACK_MODE_E 定义参见
ZH_comm_aio.h。 - 在 AO 通道成功启用后再调用此接口。
ZH_MPI_AO_GetTrackMode
描述
获取 AO 设备声道模式。
语法
ZH_S32 ZH_MPI_AO_GetTrackMode(AUDIO_DEV AoDevId, AUDIO_TRACK_MODE_E *penTrackMode);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| penTrackMode | AUDIO_TRACK_MODE_E* | 音频设备声道模式指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AO 通道成功启用后再调用此接口。
ZH_MPI_AO_SetVolume
描述
设置 AO 设备音量大小。
语法
ZH_S32 ZH_MPI_AO_SetVolume(AUDIO_DEV AoDevId, ZH_S32 s32VolumeDb);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| s32VolumeDb | ZH_S32 | 音频设备音量大小百分比。 取值范围:[0, 100]。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AO 通道成功启用后再调用此接口。
ZH_MPI_AO_GetVolume
描述
获取 AO 设备音量大小。
语法
ZH_S32 ZH_MPI_AO_GetVolume(AUDIO_DEV AoDevId, ZH_S32 *ps32VolumeDb);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| ps32VolumeDb | ZH_S32* | 音频设备音量大小指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AO 通道成功启用后再调用此接口。
ZH_MPI_AO_SetChnParams
描述
设置 AO 通道参数。
语法
ZH_S32 ZH_MPI_AO_SetChnParams(AUDIO_DEV AoDevId, AO_CHN AoChn, const AO_CHN_PARAM_S *pstParams);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
| pstParams | const AO_CHN_PARAM_S* | 通道参数。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
必须在 AO 通道启用前调用此接口。
示例代码
配置 AO 通道 0 数据输出到左声道,配置如下:
AUDIO_DEV aoDevId = 0;
AO_CHN aoChn0 = 0;
AIO_ATTR_S aoAttr;
memset(&aoAttr, 0, sizeof(AIO_ATTR_S));
aoAttr.soundCard.channels = 2;
aoAttr.soundCard.sampleRate = 48000;
aoAttr.soundCard.bitWidth = AUDIO_BIT_WIDTH_16;
aoAttr.enBitwidth = AUDIO_BIT_WIDTH_16;
aoAttr.enSamplerate = AUDIO_SAMPLE_RATE_8000;
aoAttr.enSoundmode = AUDIO_SOUND_MODE_MONO;
aoAttr.u32FrmNum = 4;
aoAttr.u32PtNumPerFrm = 1024;
aoAttr.u32EXFlag = 0;
aoAttr.u32ChnCnt = 2;
ZH_MPI_AO_SetPubAttr(aoDevId, &aoAttr);
ZH_MPI_AO_Enable(aoDevId);
AO_CHN_PARAM_S pstParams;
memset(&pstParams, 0, sizeof(AO_CHN_PARAM_S));
pstParams.enMode = AUDIO_CHN_MODE_LEFT;
ZH_MPI_AO_SetChnParams(aoDevId, aoChn0, &pstParams);
ZH_MPI_AO_EnableChn(aoDevId, aoChn0);
ZH_MPI_AO_GetChnParams
描述
获取 AO 通道参数。
语法
ZH_S32 ZH_MPI_AO_GetChnParams(AUDIO_DEV AoDevId, AO_CHN AoChn, AO_CHN_PARAM_S *pstParams);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
| pstParams | AO_CHN_PARAM_S* | 通道参数。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
ZH_MPI_AO_SetMute
描述
设置 AO 设备静音状态。
语法
ZH_S32 ZH_MPI_AO_SetMute(AUDIO_DEV AoDevId, ZH_BOOL bEnable, const AUDIO_FADE_S *pstFade);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| bEnable | ZH_BOOL | 音频设备是否启用静音。 - ZH_TRUE:开启静音 - ZH_FALSE:关闭静音 | 输入 |
| pstFade | const AUDIO_FADE_S* | 音频淡入淡出结构体指针。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
- 在 AO 通道成功启用后再调用此接口。
- 调用此接口时,用户可以选择是否使用淡入淡出功能,如果不使用淡入淡出则将结构体指针赋为空即可。
ZH_MPI_AO_GetMute
描述
获取 AO 设备静音状态。
语法
ZH_S32 ZH_MPI_AO_GetMute(AUDIO_DEV AoDevId, ZH_BOOL *pbEnable, AUDIO_FADE_S *pstFade);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| pbEnable | ZH_BOOL* | 音频设备静音状态指针。 | 输出 |
| pstFade | AUDIO_FADE_S* | 音频淡入淡出结构体指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AO 通道成功启用后再调用此接口。
ZH_MPI_AO_SaveFile
描述
开启音频输出保存文件功能。
语法
ZH_S32 ZH_MPI_AO_SaveFile(AUDIO_DEV AoDevId, AO_CHN AoChn, AUDIO_SAVE_FILE_INFO_S *pstSaveFileInfo);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
| pstSaveFileInfo | AUDIO_SAVE_FILE_INFO_S* | 音频保存文件属性结构体指针。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
在 AO 通道成功启用后再调用此接口。
ZH_MPI_AO_QueryFileStatus
描述
查询音频输出通道是否处于存文件的状态。
语法
ZH_S32 ZH_MPI_AO_QueryFileStatus(AUDIO_DEV AoDevId, AO_CHN AoChn, AUDIO_FILE_STATUS_S *pstFileStatus);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
| pstFileStatus | AUDIO_FILE_STATUS_S* | 状态属性结构体指针。 | 输出 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
此接口用于查询音频输出通道是否处于存文件的状态。
ZH_MPI_AO_ClrPubAttr
描述
清除 AO 设备属性。
语法
ZH_S32 ZH_MPI_AO_ClrPubAttr(AUDIO_DEV AoDevId);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 | 成功。 |
| 非 0 | 失败,其值为 AUDIO 错误码。 |
注意事项
清除设备属性前,需要先停止设备。
ZH_MPI_AO_WaitEos
描述
等待指定设备和通道播放完成。
语法
ZH_S32 ZH_MPI_AO_WaitEos(AUDIO_DEV AoDevId, AO_CHN AoChn, ZH_S32 s32MilliSec);
参数
| 参数名 | 数据类型 | 描述 | 输入/输出 |
|---|---|---|---|
| AoDevId | AUDIO_DEV | 音频设备号。 取值范围:[0, AO_DEV_MAX_NUM)。 | 输入 |
| AoChn | AO_CHN | 音频输出通道号。 取值范围:[0, AO_MAX_CHN_NUM)。 | 输入 |
| s32MilliSec | ZH_S32 | 等待超时时间。 -1:阻塞模式 ≥ 0:非阻塞模式,超时时间(单位:毫秒) | 输入 |
返回值
| 返回值 | 描述 |
|---|---|
| 0 |