hi_mpi_aenc_get_stream
功能及约束说明
当前仅支持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.711u | 8kHz | 80/160/240/320/480 | 64 | 2 | 1 MHz | - 优点:语音质量最好;CPU消耗小;支持广泛,协议免费。 - 缺点:压缩效率低。 |
| AAC 仅支持MPEG-4版本、无CRC(Cyclic Redundancy Check)校验的音频码流 | 48kHz | 1024 | [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 | 输入 | 音频编码通道属性指针。 |
返回值说明
- 0:成功
- 非0:失败,参考音频相关返回码。
父主题: AENC音频编码/ADEC音频解码
hi_mpi_aenc_destroy_chn
函数功能
销毁音频编码通道。
函数原型
hi_s32 hi_mpi_aenc_destroy_chn(hi_aenc_chn aenc_chn**);**
参数说明
| 参数名 | 输入/输出 | 说明。 |
|---|---|---|
| aenc_chn | 输入 | 通道号,取值范围[0,6) |
返回值说明
- 0:成功
- 非0:失败,参考音频相关返回码。
父主题: AENC音频编码/ADEC音频解码
hi_mpi_aenc_get_stream
函数功能
获取音频编码后的码流。
约束说明
- 必须调用hi_mpi_aenc_create_chn接口创建通道后才可能获取码流,否则直接返回失败。
- 本接口与hi_mpi_aenc_release_stream接口需成对出现,调用本接口获取码流,码流使用完毕之后应该及时调用hi_mpi_aenc_release_stream接口释放码流。
函数原型
hi_s32 hi_mpi_aenc_get_stream(hi_aenc_chn aenc_chn, hi_audio_stream *stream, hi_s32 milli_sec);
参数说明
| 参数名 | 输入/输出 | 说明。 |
|---|---|---|
| aenc_chn | 输入 | 编码通道号,取值范围[0,6) |
| stream | 输出 | 获取的音频码流。 |
| milli_sec | 输入 | 配置获取数据的超时时间,单位是毫秒,取值范围如下: - -1:表示阻塞模式,无数据时一直等待; - 0:表示非阻塞模式,无数据时则报错返回; - >0:需要配置具体的超时时间,表示超过指定时间后无数据,则报错返回。 |
返回值说明
- 0:成功
- 非0:失败,参考音频相关返回码。
父主题: AENC音频编码/ADEC音频解码
hi_mpi_aenc_release_stream
函数功能
释放音频编码后的码流。
约束说明
- 必须调用hi_mpi_aenc_create_chn接口创建通道后才可能获取码流,否则直接返回失败。
- 本接口与hi_mpi_aenc_get_stream接口需成对出现,调用hi_mpi_aenc_get_stream接口获取码流,码流使用完毕之后应该及时调用本接口释放码流。
- 不支持重复调用本接口。
函数原型
hi_s32 hi_mpi_aenc_release_stream(hi_aenc_chn aenc_chn, const hi_audio_stream *stream);
参数说明
| 参数名 | 输入/输出 | 说明。 |
|---|---|---|
| aenc_chn | 输入 | 编码通道号,取值范围[0,6) |
| stream | 输出 | 获取的音频码流。 |
返回值说明
- 0:成功
- 非0:失败,参考音频相关返回码。
父主题: AENC音频编码/ADEC音频解码
hi_mpi_adec_create_chn
函数功能
创建音频解码通道。
约束说明
通道如果已经被创建,则会返回通道已创建的错误。
函数原型
hi_s32 hi_mpi_adec_create_chn(hi_adec_chn adec_chn, const hi_adec_chn_attr *****attr);
参数说明
| 参数名 | 输入/输出 | 说明。 |
|---|---|---|
| adec_chn | 输入 | 通道号,取值范围[0,6) |
| attr | 输入 | 音频解码通道属性指针。 |
返回值说明
- 0:成功
- 非0:失败,参考音频相关返回码。
父主题: AENC音频编码/ADEC音频解码
hi_mpi_adec_destroy_chn
函数功能
销毁音频解码通道。
函数原型
hi_s32 hi_mpi_adec_destroy_chn(hi_adec_chn adec_chn**);**
参数说明
| 参数名 | 输入/输出 | 说明。 |
|---|---|---|
| adec_chn | 输入 | 通道号,取值范围[0,6) |
返回值说明
- 0:成功
- 非0:失败,参考音频相关返回码。
父主题: AENC音频编码/ADEC音频解码
在线提单