hi_mpi_ao_disable
hi_mpi_ao_set_pub_attr
函数功能
设置AO设备属性。
约束说明
- 在设置属性之前,需要先调用hi_mpi_ao_disable接口禁用AO设备。
- 在双声道和右声道模式下,chn_cnt需为2;在左声道模式下,chn_cnt需为1。
函数原型
hi_s32 hi_mpi_ao_set_pub_attr(hi_audio_dev ao_dev, const hi_aio_attr *attr);
参数说明
| 参数名 | 输入/输出 | 描述 |
|---|---|---|
| ao_dev | 输入 | 音频设备号,取值范围:[0, 4]。 |
| attr | 输入 | AO设备属性。 |
返回值说明
- 0:成功。
- 非0:失败,参见音频相关返回码。
参考资源
接口调用流程,参见音频获取&音频播放功能。
父主题: AI音频输入/AO音频输出
hi_mpi_ao_enable
函数功能
启用AO设备。
约束说明
- 在启用AO设备前,必须先调用hi_mpi_ao_set_pub_attr接口配置AO设备属性,否则会返回属性未配置的错误。
- 如果AO设备已经处于enable状态,则直接返回成功。
函数原型
hi_s32 hi_mpi_ao_enable(hi_audio_dev ao_dev);
参数说明
| 参数名 | 输入/输出 | 描述 |
|---|---|---|
| ao_dev | 输入 | 音频设备号,取值范围:[0, 4]。 |
返回值说明
- 0:成功。
- 非0:失败,参见音频相关返回码。
参考资源
接口调用流程,参见音频获取&音频播放功能。
父主题: AI音频输入/AO音频输出
hi_mpi_ao_disable
函数功能
禁用AO设备。
约束说明
- 如果AO设备已经处于disable状态,则直接返回成功。
- 禁用AO设备前,必须先调用hi_mpi_ao_disable_chn接口禁用该设备下已启用的所有AO通道。
函数原型
hi_s32 hi_mpi_ao_disable(hi_audio_dev ao_dev);
参数说明
| 参数名 | 输入/输出 | 描述 |
|---|---|---|
| ao_dev | 输入 | 音频设备号,取值范围:[0, 4]。 |
返回值说明
- 0:成功。
- 非0:失败,参见音频相关返回码。
参考资源
接口调用流程,参见音频获取&音频播放功能。
父主题: AI音频输入/AO音频输出
hi_mpi_ao_enable_chn
函数功能
启用AO通道。
约束说明
- 启用AO通道前,必须先调用hi_mpi_ao_set_pub_attr接口配置AO设备属性,否则返回属性未配置错误。
- 启用AO通道前,必须先调用hi_mpi_ao_enable接口启用其所属的AO设备,否则返回设备未启动的错误码。
- 录音为左声道和双声道时,ao_chn固定为0;右声道时,ao_chn固定为1。
- 如果AO设备已经处于enable状态,则直接返回成功。
函数原型
hi_s32 hi_mpi_ao_enable_chn(hi_audio_dev ao_dev, hi_ao_chn ao_chn);
参数说明
| 参数名 | 输入/输出 | 描述 |
|---|---|---|
| ao_dev | 输入 | 音频设备号,取值范围:[0, 4]。 |
| ao_chn | 输入 | 音频输出通道号。 |
返回值说明
- 0:成功。
- 非0:失败,参见音频相关返回码。
参考资源
接口调用流程,参见音频获取&音频播放功能。
父主题: AI音频输入/AO音频输出
hi_mpi_ao_disable_chn
函数功能
禁用AO通道。
约束说明
-
录音为左声道和双声道时,ao_chn固定为0;右声道时,ao_chn固定为1。
-
如果已经设置属性,但AO chn已经处于禁用状态,则直接返回成功;如果未设置属性,此时调用该接口会报属性未配置的错误。
函数原型
hi_s32 hi_mpi_ao_disable_chn(hi_audio_dev ao_dev, hi_ao_chn ao_chn);
参数说明
| 参数名 | 输入/输出 | 描述 |
|---|---|---|
| ao_dev | 输入 | 音频设备号,取值范围:[0, 4]。 |
| ao_chn | 输入 | 音频输出通道号。 |
返回值说明
- 0:成功。
- 非0:失败,参见音频相关返回码。
参考资源
接口调用流程,参见音频获取&音频播放功能。
父主题: AI音频输入/AO音频输出
hi_mpi_ao_send_frame
函数功能
发送AO音频帧。
约束说明
- 该接口用于用户主动发送音频帧至AO输出。
- 调用该接口发送音频帧到AO输出时,必须先调用hi_mpi_ao_enable_chn接口使能对应的AO通道。
- 播音为左声道和双声道时,ai_chn需固定为0;右声道时,ai_chn为1。
- 音频帧结构体的成员变量len和virt_addr需要匹配,len代表帧长(单位:字节),virt_addr为传入的音频数据的地址。建议每次传入的数据为一帧数据,即长度len为point_num_per_frame与位宽(16bit为2字节,24bit为3字节)的乘积。
- 对长度len限制如下:首先根据len与位宽计算出数据点数(数据点数=len/位宽对应的字节数),数据点数的范围为[1, frame_num * point_num_per_frame],最大上限为4096。
- 举例1:如果frame_num=2,point_num_per_frame=480(frame_num和point_num_per_frame的范围限制可以参见结构体hi_aio_attr),此时frame_num * point_num_per_frame=960,且960<4096,那么数据点数的范围为[1, 960]。
- 举例2:如果frame_num=30,point_num_per_frame=4096,此时frame_num * point_num_per_frame=122880,且122880>4096,那么数据点数的范围为[1, 4096]。
- 举例3:如果根据frame_num和point_num_per_frame确定的数据点数范围为[1, 960]。若此时len=960,位宽为16位(即2字节),计算得到数据点数为960/2=480,在[1, 960]范围之内,即符合要求;若此时len=3840,位宽为16位(即2字节),计算得到数据点数为3840/2=1920,在[1, 960]范围之外,则会返回报错。
函数原型
hi_s32 hi_mpi_ao_send_frame(hi_audio_dev ao_dev, hi_ao_chn ao_chn, const hi_audio_frame *data, hi_s32 milli_sec);
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| ao_dev | 输入 | 音频设备号,取值范围:[0, 4]。 |
| ao_chn | 输入 | 音频输出通道号。 |
| data | 输入 | 音频帧结构体。 |
| milli_sec | 输入 | 配置发送数据的超时时间,单位是毫秒,取值范围如下: - -1:表示阻塞模式,无数据时一直等待; - 0:表示非阻塞模式,无数据时则报错返回; - >0:需要配置具体的超时时间,表示超过指定时间后无数据,则报错返回。 |
返回值说明
- 0:成功。
- 非0:失败,参见音频相关返回码。
参考资源
接口调用流程,参见音频获取&音频播放功能。
父主题: AI音频输入/AO音频输出
在线提单