Skip to main content

hi_mpi_ao_enable_resample

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输入音频输出通道号。

返回值说明

参考资源

接口调用流程,参见音频获取&音频播放功能

父主题: 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:需要配置具体的超时时间,表示超过指定时间后无数据,则报错返回。

返回值说明

参考资源

接口调用流程,参见音频获取&音频播放功能

父主题: AI音频输入/AO音频输出

hi_mpi_ao_get_chn_delay

函数功能

获取AO通道中当前的音频延时大小。

约束说明

  • 该接口要在AO通道成功启用之后调用。
  • 获取AO通道中当前的音频延时大小,当延时查询到的延时为0时停止等待,进入播音停止流程。

函数原型

hi_s32 hi_mpi_ao_get_chn_delay(hi_audio_dev ao_dev, hi_ao_chn ao_chn, hi_u32 *milli_sec);

参数说明

参数名输入/输出说明
ao_dev输入音频设备号,取值范围:[0, 4]。
ao_chn输入音频输出通道号。
milli_sec输出音频延时的指针。音频延时大小以毫秒为单位。

返回值说明

参考资源

接口调用流程,参见音频获取&音频播放功能

父主题: AI音频输入/AO音频输出

hi_mpi_ao_enable_resample

函数功能

启用AO重采样。

约束说明

  • 调用hi_mpi_ao_enable_chn接口启用AO通道之后,调用hi_mpi_sys_bind接口绑定ADEC与AO之前,调用本接口启用重采样功能。
  • 调用hi_mpi_ao_disable_chn接口禁用AO通道后,如果重新启用AO通道,并使用重采样功能,需调用本接口再次启用重采样。
  • AO重采样的输入采样率必须与AO设备属性配置的采样率不相同。
  • 由于奈奎斯特采样定理的限制,在音频采样率为8kHz时,则所支持的音频频率小于4kHz。
  • 由于AO的采样率固定为48kHz,G.711a、G.711u协议的采样率仅支持8kHz,因此需启用重采样功能;而48kHz在AAC协议采样率支持的范围内,因此使用AAC协议时,在AO时无需重采样。

函数原型

hi_s32 hi_mpi_ao_enable_resample(hi_audio_dev ao_dev, hi_ao_chn ao_chn, hi_audio_sample_rate in_sample_rate);

参数说明

参数名输入/输出说明。
ao_dev输入音频设备号,取值范围:[0, 4]。 NVR(Network Video Recorder)场景中仅涉及dev2、dev3。
ao_chn输入音频输出通道号。目前只支持单声道(左声道),所以ao_chn取值固定为0。
hi_audio_sample_rate输入音频重采样的输入采样率,目前只支持8k。

返回值说明

参考资源

接口调用流程,参见语音对讲功能(NVR场景)

父主题: AI音频输入/AO音频输出

hi_mpi_ao_disable_resample

函数功能

禁用 AO 重采样。

函数原型

hi_s32 hi_mpi_ao_disable_resample(hi_audio_dev ao_dev, hi_ao_chn ao_chn);

参数说明

参数名输入/输出说明。
ao_dev输入音频设备号,取值范围:[0, 4]。 NVR(Network Video Recorder)场景中仅涉及dev2、dev3。
ao_chn输入音频输出通道号。 目前只支持单声道(左声道),所以ao_chn取值固定为0。

返回值说明

参考资源

接口调用流程,参见语音对讲功能(NVR场景)

父主题: AI音频输入/AO音频输出

功能及约束说明

当前仅支持G.711a、G.711u、AAC(Advanced Audio Coding)协议、单声道数据进行编码、解码,且为软件编码、解码。本章中的接口均不支持多进程**,**且同一个设备ID不支持在多线程中使用

音频编码时,G.711a、G.711u码流遵循以下表格中描述的帧结构,即在每帧码流数据的净荷数据之前填充有4个字节的帧头;音频解码时,需要读取相应的帧头信息。在G.711a、G.711u码流中,目前帧头中的数据净荷长度需为40,80,120,160,240(单位:hi_s16),所以对应的每帧采样点数即为80,160,240,320,480。但在VQE(Voice Quality Enhancement)框架中,编解码操作是与AI、AO绑定在一起,所以支持的每帧采样点数范围缩小。

参数位置(单位:hi_s16)

参数比特位说明

参数含义

0

[15:8]

数据帧类型标志位。

01:语音帧;

其他:保留。

[7:0]

保留。

1

[15:8]

帧循环计数器:0~255。

[7:0]

数据净荷长度(单位:hi_s16)。

2

[15:0]

净荷数据。

3

[15:0]

净荷数据。

......

[15:0]

净荷数据。

n+1

[15:0]

净荷数据。

n+2

[15:0]

净荷数据。

G.711a、G.711u、AAC协议的相关规格及优缺点如下:

协议采样率每帧采样点数码率(kbps)压缩率CPU消耗描述
G.711a、G.711u8kHz80/160/240/320/4806421 MHz- 优点:语音质量最好;CPU消耗小;支持广泛,协议免费。
- 缺点:压缩效率低。
AAC 仅支持MPEG-4版本、无CRC(Cyclic Redundancy Check)校验的音频码流48kHz1024[48, 256]与码率相关,码率越小,压缩率越大-- 优点:持更高采样率的编解码,能够保留原始音频的更多高频信息,同时拥有更多的码率范围选择,压缩率更高。
- 缺点:算法复杂度高。

父主题: AENC音频编码/ADEC音频解码

hi_mpi_aenc_create_chn

函数功能

创建音频编码通道。

约束说明

通道如果已经被创建,则会返回通道已创建的错误。

函数原型

hi_s32 hi_mpi_aenc_create_chn(hi_aenc_chn aenc_chn, const hi_aenc_chn_attr *****attr);

参数说明

参数名输入/输出说明。
aenc_chn输入通道号,取值范围[0,6)
attr输入音频编码通道属性指针。

返回值说明

父主题: AENC音频编码/ADEC音频解码

在线提单