10.3. API参考¶
本章节将依序描述CVI_AUDIO 各模块API使用方式,请注意在使用CVI_ADUDIO时请先确认 CVI_SYS_Init 已被调用,才能确保对应的系统组件初始化,CVI_AUDIO_INIT也必须被调用,才能确保音频模块中的软件已被初始化,使用者注意CVI_AUDIO_INIT仅需呼叫一次。在退出 Audio的使用时,请确认CVI_AUDIO相关模块已做了Disbale,并接着调用 CVI_SYS_Exit。
10.3.1. 模块属性API¶
音频基础功能API:
CVI_AUDIO_INIT :初始化音频模块。
CVI_AUDIO_DEINIT :反初始化音频模块。
CVI_AUD_SYS_Bind :设置音频绑定属性。
CVI_AUD_SYS_UnBind :解除音频绑定。
10.3.1.1. CVI_AUDIO_INIT¶
【描述】
初始化audio 模块。
【语法】
CVI_S32 CVI_AUDIO_INIT(void);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
None |
无需输入值 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
使用audio模块前,必需透过此API做初始化。否则功能会异常或内存数据错误。
10.3.1.2. CVI_AUDIO_DEINIT¶
【描述】
释放 audio 模块。
【语法】
CVI_S32 CVI_AUDIO_DEINIT(void);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
None |
无需输入值 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
离开audio模块前,必需透过此API做释放模块。否则功能会异常或记忆体数据错误。
10.3.1.3. CVI_AUD_SYS_Bind¶
【描述】
设置 Audio 模块绑定属性。
【语法】
CVI_S32 CVI_AUD_SYS_Bind(const MMF_CHN_S *pstSrcChn, const MMF_CHN_S *pstDestChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
pstSrcChn |
Audio 绑定来源指针。 |
输入 |
pstDestChn |
Audio 绑定目的指针。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
支持绑定对象为:
(AudIn -> AudEnc),
(AudDec ->AudOut),
可参阅
cvi_sample_audio.c内的SAMPLE_AUDIO_AiAenc及SAMPLE_AUDIO_AdecAo了解绑定用法。
【举例】
无。
10.3.1.4. CVI_AUD_SYS_UnBind¶
【描述】
解除 AUDIO 模块绑定。
【语法】
CVI_S32 CVI_AUD_SYS_UnBind(const MMF_CHN_S *pstSrcChn, const MMF_CHN_S *pstDestChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
pstSrcChn |
AUDIO 模块绑定来源指针。 |
输入 |
pstDestChn |
AUDIO 模块绑定目的指针。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
无
【举例】
无。
10.3.2. 音频输入¶
音频输入实现配置及启用设备、获取音频帧数据等功能。
该功能模块提供以下 API:
CVI_AI_SetPubAttr :设置 Audio Input 设备属性。
CVI_AI_GetPubAttr :获取 Audio Input 设备属性。
CVI_AI_Enable :启用 Audio Input 设备。
CVI_AI_Disable :禁用 Audio Input 设备。
CVI_AI_EnableChn :启用 Audio Input 通道。
CVI_AI_DisableChn :禁用 Audio Input 通道。
CVI_AI_GetFrame :获取音讯帧。
CVI_AI_ReleaseFrame :释放音讯帧。
CVI_AI_SetChnParam :设置 Audio Input 通道参数。
CVI_AI_GetChnParam :获取 Audio Input 通道参数。
CVI_AI_EnableReSmp :启用 Audio Input 重采样。
CVI_AI_DisableReSmp :禁用 Audio Input 重采样。
CVI_AI_ClrPubAttr :清除 Audio Input 设备属性。
CVI_AI_SaveFile :开启音频输入保存文件功能。
CVI_AI_QueryFileStatus :查询音频输入信道是否处于存盘的状态。
CVI_AI_EnableAecRefFrame :在 AEC 不打开的情况下也使使用者能获取到 AEC 参考帧。
CVI_AI_DisableAecRefFrame :在 AEC 不打开的情况下禁止获取 AEC 参考帧。
CVI_AI_SetVolume :设置 Audio Input 设备音量。
CVI_AI_GetVolume : 获取Audio Input 设备音量。
CVI_AI_SetStereoVolume :设置 Audio Input 设备立体声音量。
CVI_AI_GetStereoVolume :获取 Audio Input 设备立体声音量。
10.3.2.1. CVI_AI_SetPubAttr¶
【描述】
设置 Audio Input 设备属性
【语法】
CVI_S32 CVI_AI_SetPubAttr(AUDIO_DEV AiDevId, const AIO_ATTR_S *pstAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号 |
输入 |
pstAttr |
Audio Input设备属性指针 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
音频输入设备的属性决定了输入数据的格式,输入设备属性包括工作模式、采样率、 采样精度、buffer 大小、每帧的采样点数、扩展标志、时钟选择和通道数目。这些属性应与对接 Codec 配置的时序一致,即能成功对接。
AiDevId预设为0,如未要求扩增,超过2会返回错误。
enBitwidth : 位深度 8bit、16bit 或 24bit,实际应用中采样精度还受Audio Codec 限制。
buffer 大小 AIO_ATTR_S 中的 u32FrmNum 项用于配置 Audio Input 中用于接收音频数据的区块的音频。
UsrFrmDept : 区块音框,建议需大于等于 5。
enSamplerate当音频采样率较高时,建议相应地增加每帧的采样点数目。
如要将这些采集到的 音频数据送编码,则应保证每帧的持续时长不少于 10ms(例如 16K 的采样频率下 每帧的采样点数至少应设置为 160),否则解码后声音可能有异常。
enSoundmode : 双声道或单声道语音音框设置
u32ChnCnt : 信道数目 信道数目指当前输入设备的 Audio Input 功能的信道数目,需与对接的 Audio Codec 的配置 保持一致;支持 1 路、2 路。
u32EXFlag : 扩展标志对 Audio Input 设备无效
u32ClkSel : 时钟设置
【举例】
无。
10.3.2.2. CVI_AI_GetPubAttr¶
【描述】
获取 Audio Input 设备属性
【语法】
CVI_S32 CVI_AI_GetPubAttr(AUDIO_DEV AiDevId, AIO_ATTR_S*pstAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号 |
输入 |
pstAttr |
Audio Input 设备属性指针 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
如未曾初始化或是CVI_AI_SetPubAttr未曾呼叫过,则使用者会拿到内容为0的指针及数值。
AiDevId预设为0,如未要求扩增,超过2会返回错误。
【举例】
无。
10.3.2.3. CVI_AI_Enable¶
【描述】
启用 Audio Input 设备
【语法】
CVI_S32 CVI_AI_Enable(AUDIO_DEV AiDevId);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
此API为最后使能Audio Input的函数,在调用前请确认相关属性已设定完成。
【举例】
Audio In使用范例:
CVI_S32 i;
CVI_S32 s32Ret;
s32Ret = CVI_AI_SetPubAttr(AiDevId, pstAioAttr);
if (s32Ret) {
printf("%s: CVI_AI_SetPubAttr(%d) failed with %#x\n"
, __func__,
AiDevId,
s32Ret);
return s32Ret;
}
s32Ret = CVI_AI_Enable(AiDevId);
if (s32Ret) {
printf("%s: CVI_AI_Enable(%d) failed with %#x\n", __func__, AiDevId,
s32Ret);
return s32Ret;
}
for (i = 0; i < s32AiChnCnt >> pstAioAttr->enSoundmode; i++) {
s32Ret = CVI_AI_EnableChn(AiDevId, i / (pstAioAttr->enSoundmode + 1));
if (s32Ret) {
printf("%s: CVI_AI_EnableChn(%d,%d) failed with %#x\n", __func__,
AiDevId, i, s32Ret);
return s32Ret;
}
if (bResampleEn == CVI_TRUE) {
s32Ret = CVI_AI_EnableReSmp(AiDevId, i, enOutSampleRate);
if (s32Ret) {
printf("%s: CVI_AI_EnableReSmp(%d,%d) failed with %#x\n",
__func__,
AiDevId, i,
s32Ret);
return s32Ret;
}
}
if (pstAiVqeAttr != NULL) {
CVI_BOOL bAiVqe = CVI_TRUE;
s32Ret = CVI_AI_SetTalkVqeAttr(
0,
0,
0,
0,
(AI_TALKVQE_CONFIG_S *)pstAiVqeAttr);
break;
}
if (s32Ret) {
printf("%s: SetAiVqe%d(%d,%d) failed with %#x\n",
__func__,
u32AiVqeType,
AiDevId, i, s32Ret);
return s32Ret;
}
if (bAiVqe) {
s32Ret = CVI_AI_EnableVqe(AiDevId, i);
if (s32Ret) {
printf("%s: CVI_AI_EnableVqe(%d,%d) failed with %#x\n", __func__,
AiDevId, i, s32Ret);
return s32Ret;
}
}
}
10.3.2.4. CVI_AI_Disable¶
【描述】
停用 Audio Input 设备
【语法】
CVI_S32 CVI_AI_Disable(AUDIO_DEV AiDevId);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
此API为停止Audio Input设备的最后一道程序,禁用 Audio Input 设备前必须先禁用该设备下已启用的所有 Audio Input 通道,如有AENC或Audio Output相接,请先停止与之关联再调用此。
【举例】
无。
10.3.2.5. CVI_AI_EnableChn¶
【描述】
启用 Audio Input 通道
【语法】
CVI_S32 CVI_AI_EnableChn(AUDIO_DEV AiDevId, AI_CHN AiChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
启用 Audio Input 通道前,必须先启用其所属Audio Input设备。
【举例】
无。
10.3.2.6. CVI_AI_DisableChn¶
【描述】
禁用 Audio Input 通道。
【语法】
CVI_S32 CVI_AI_DisableChn(AUDIO_DEV AiDevId, AI_CHN AiChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
请在 CVI_AI_Disable 前呼叫此API,避免通道参数残留。
【举例】
无。
10.3.2.7. CVI_AI_GetFrame¶
【描述】
获取音框
【语法】
CVI_S32 CVI_AI_GetFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_FRAME_S *pstFrm, AEC_FRAME_S *pstAecFrm , CVI_S32 s32MilliSec);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
pstFrm |
音频帧结构体指针。用户由此结构体指针获得音框。 |
输出 |
pstAecFrm |
回声抵消参考帧结构体指针。 |
输出 |
s32MilliSec |
获取数据的超时时间
-1 表示阻塞模式,无数据时一直等待;
0 表示非阻塞模式,无数据时则报错返回;
>0 表示阻塞 s32MilliSec 毫秒,超时则报错返回
|
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
s32MilliSec 的值必须大于等于-1,等于-1 时采用阻塞模式获取数据,等于 0 时采 用非阻塞模式获取数据,大于 0 时,阻塞 s32MilliSec 毫秒后,没有数据则返回超 时并报错。
获取音频帧数据前,必须先使能对应的 Audio Input 通道。
欲获取AEC音框,请先确定VQE内AEC已开启。
【举例】
无。
10.3.2.8. CVI_AI_ReleaseFrame¶
【描述】
释放音框。
【语法】
CVI_S32 CVI_AI_ReleaseFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, const AUDIO_FRAME_S *pstFrm, const AEC_FRAME_S *pstAecFrm);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
pstFrm |
音频帧结构体指针。用户由此结构体指针获得音框。 |
输入 |
pstAecFrm |
回声抵消参考帧结构体指针。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
如果不需要释放回声抵消参考帧,pstAecFrm 置为 NULL 即可。
【举例】
无。
10.3.2.9. CVI_AI_SetChnParam¶
【描述】
设置 Audio Input 通道参数。
【语法】
CVI_S32 CVI_AI_SetChnParam(AUDIO_DEV AiDevId, AI_CHN AiChn, const AI_CHN_PARAM_S *pstChnParam);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
pstChnParam |
音频通道参数 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
通道参数目前只有一个成员变量,用于设置用户获取音频帧的区块深度,
默认深度为0。该成员变量的值不能大于30。
【举例】
无。
10.3.2.10. CVI_AI_GetChnParam¶
【描述】
获取 Audio Input 通道参数。
【语法】
CVI_S32 CVI_AI_GetChnParam(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_CHN_PARAM_S *pstChnParam);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
pstChnParam |
音频通道参数 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h 此文件提及的音频模块属于Middleware多媒体层接口之一
库文件:libcvi_audio.a
【注意事项】
通道参数目前只有一个成员变量,用于设置用户获取音频帧的区块深度。
【举例】
无。
10.3.2.11. CVI_AI_EnableReSmp¶
【描述】
启用 Audio Input 重采样。
【语法】
CVI_S32 CVI_AI_EnableReSmp(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_SAMPLE_RATE_E enOutSampleRate);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
enOutSampleRat |
音频重采样的输出采样率。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_vqe.so,libcvi_RES1.so
【注意事项】
无。
采样率支持程度如下:
typedef enum _AUDIO_SAMPLE_RATE_E {
AUDIO_SAMPLE_RATE_8000 = 8000, /* 8K samplerate*/
AUDIO_SAMPLE_RATE_11025 = 11025, /* 11.025K samplerate*/
AUDIO_SAMPLE_RATE_16000 = 16000, /* 16K samplerate*/
AUDIO_SAMPLE_RATE_22050 = 22050, /* 22.050K samplerate*/
AUDIO_SAMPLE_RATE_24000 = 24000, /* 24K samplerate*/
AUDIO_SAMPLE_RATE_32000 = 32000, /* 32K samplerate*/
AUDIO_SAMPLE_RATE_44100 = 44100, /* 44.1K samplerate*/
AUDIO_SAMPLE_RATE_48000 = 48000, /* 48K samplerate*/
AUDIO_SAMPLE_RATE_64000 = 64000, /* 64K samplerate*/
AUDIO_SAMPLE_RATE_BUTT,
} AUDIO_SAMPLE_RATE_E;
【举例】
无。
10.3.2.12. CVI_AI_DisableReSmp¶
【描述】
关闭 Audio Input 重采样功能。
【语法】
CVI_S32 CVI_AI_DisableReSmp(AUDIO_DEV AiDevId, AI_CHN AiChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_RES1.so,libcvi_vqe.so
【注意事项】
要求在调用此接口之前,先禁用使用该 Audio Input 设备相应通道音频数据的 AENC 信道 和 Audio Output 信道,否则可能导致该接口调用失败。
【举例】
无。
10.3.2.13. CVI_AI_ClrPubAttr¶
【描述】
清空 Pub 属性。
【语法】
CVI_S32 CVI_AI_ClrPubAttr(AUDIO_DEV AiDevId);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
清除设备属性前,需要先停止设备。
清除设备属性前,建议停止所有内部相连或是user-get mode之动作,避免底层仍在搬移音框而造成行为异常。
【举例】
无。
10.3.2.14. CVI_AI_SaveFile¶
【描述】
开启音频输入保存文件功能。
【语法】
CVI_S32 CVI_AI_SaveFile(AUDIO_DEV AiDevId, AI_CHN AiChn, const AUDIO_SAVE_FILE_INFO_S *pstSaveFileInfo);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
pstSaveFileInfo |
音频保存文件属性结构体指针。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
此接口仅用于 Audio Input-AENC、Audio Input-Audio Output 非系统绑定模式下 dump Audio Input使用。
【举例】
无。
10.3.2.15. CVI_AI_QueryFileStatus¶
【描述】
查询音频输入通道是否处于存文件的状态。
【语法】
CVI_S32 CVI_AI_QueryFileStatus(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_FILE_STATUS_S* pstFileStatus);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
pstFileStatus |
档案状态属性结构体指针。 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
此接口主要用于除错,一般流程不会用到。
此接口仅用于 Audio Input-AENC、Audio Input-Audio Output 非系统绑定模式下 dump Audio Input使用。
此接口用于查询音频输入通道是否处于存文件的状态,当用户调用 CVI_AI_SaveFile 存储文件后,可调用此接口查询存储的文件是否达到了指定的大 小,如果 pstFileStatus 的 bSaving 为 CVI_TRUE,说明还没有达到指定大小,为 CVI_FALSE则已经达到指定大小。
【举例】
无。
10.3.2.16. CVI_AI_EnableAecRefFrame¶
【描述】
在 AEC 不打开的情况下也使用户能获取到 AEC 参考帧。
【语法】
CVI_S32 CVI_AI_EnableAecRefFrame(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_DEV AoDevId, AO_CHN AoChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
AoDevId |
用于获取 AEC 参考帧的 Audio Output 设备号。 |
输入 |
AoChn |
用于获取 AEC 参考帧的 Audio Output 通道号描述 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
无。
【举例】
无。
10.3.2.17. CVI_AI_DisableAecRefFrame¶
【描述】
在 AEC 不打开的情况下禁止获取 AEC 参考帧。
【语法】
CVI_S32 CVI_AI_DisableAecRefFrame(AUDIO_DEV AiDevId, AI_CHN AiChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
无。
【举例】
无。
10.3.2.18. CVI_AI_SetVolume¶
【描述】
设置输入音量。
【语法】
CVI_S32 CVI_AI_SetVolume(AUDIO_DEV AiDevId, CVI_S32 s32VolumeStep);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
s32VolumeStep |
输入音量放大步阶[24-0, 0:mute]。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a/libcvi_audio.so
【注意事项】
无。
【举例】
无。
10.3.2.19. CVI_AI_GetVolume¶
【描述】
获取输入音量。
【语法】
CVI_S32 CVI_AI_GetVolume(AUDIO_DEV AiDevId, CVI_S32 *ps32VolumeStep);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
ps32VolumeStep |
音量步阶指针[24-0, 0:mute]。 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a/libcvi_audio.so
【注意事项】
无。
【举例】
无。
10.3.2.20. CVI_AI_SetStereoVolume¶
【描述】
设置音频输入单通道音量。
【语法】
CVI_S32 CVI_AI_SetStereoVolume(AUDIO_DEV AiDevId, CVI_S32 AiStereoId, CVI_S32 s32Volume);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频输入设备号。 |
输入 |
AiStereoId |
音频输入声道号。 |
输入 |
s32Volume |
音量值,取值范围:[0, 24]。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见错误码。 |
【需求】
头文件:cvi_ai.h
库文件:libai.a
【注意】
AiStereoId 0:代表设置左声道音量值。1:代表设置右声道音量值。
【举例】
无
10.3.2.21. CVI_AI_GetStereoVolume¶
【描述】
获取音频输入通道音量。
【语法】
CVI_S32 CVI_AI_GetStereoVolume(AUDIO_DEV AiDevId, CVI_S32 AiStereoId, CVI_S32 *ps32Volume);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频输入设备号。 |
输入 |
AiStereoId |
音频输入声道号。 |
输入 |
ps32Volume |
音量值指针,取值范围:[0, 24]。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见错误码。 |
【需求】
头文件:cvi_ai.h
库文件:libai.a
【注意】
AiStereoId 0:代表获取左声道音量值。1:代表获取右声道音量值。
【举例】
无
10.3.3. 语音音质增强API¶
CVI_AI_SetVqeAttr :设置 Audio Input 的声音质量增强功能相关属性。
CVI_AI_SetTalkVqeAttr :设置 Audio Input 的语音质量增强功能语音相关属性。
CVI_AI_GetTalkVqeAttr :获取 Audio Input 的语音质量增强功能语音相关属性。
CVI_AI_SetRecordVqeAttr :设置 Audio Input 的录音质量增强功能相关属性。(目前不支持);
CVI_AI_GetRecordVqeAttr :获取 Audio Input 的录音质量增强功能相关属性。(目前不支持);
CVI_AI_EnableVqe :使能 Audio Input 的声音质量增强功能。
CVI_AO_DisableVqe :禁用 Audio Output 的声音质量增强功能。
CVI_AI_SetVqeVolume :设置音频输入(AI)设备的音量。
CVI_AI_GetVqeVolume :获取音频输入(AI)设备的音量。
CVI_AI_VqeFunConfig :配置音频输入(AI)设备的声音质量增强(VQE)功能。
CVI_AI_DisableVqe :禁用 Audio Input 的声音质量增强功能。
CVI_AI_SetTrackMode :设置声道模式。
CVI_AI_GetTrackMode :获取声道模式。
CVI_AO_SetVqeAttr :设置 Audio Output 的声音质量增强功能相关属性。
CVI_AO_GetVqeAttr :获取 Audio Output 的声音质量增强功能相关属性。
CVI_AO_EnableVqe :使能 Audio Output 的声音质量增强功能。
CVI_AO_DisableVqe :禁用 Audio Output 的声音质量增强功能。
CVI_VQE_PathSelect :VQE 算法路径设置。
10.3.3.1. CVI_AI_SetVqeAttr¶
【描述】
设置 Audio Input 的声音质量增强功能相关属性。
【语法】
CVI_S32 CVI_AI_SetVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_DEV AoDevId, AO_CHN AoChn, AI_VQE_CONFIG_S *pstVqeConfig);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
AoDevId |
Audio Output设备号,用于回声抵消。 |
输入 |
AoChn |
用于回声抵消的 Audio Output 通道号。 |
输入 |
pstVqeConfig |
音频输入声音质量增强配置结构体指针 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_RES1.so,libcvi_vqe.so,
【注意事项】
启用声音质量增强功能前必须先设置相对应 Audio Input 通道的声音质量增强功能相关属性。
设置 Audio Input 的声音质量增强功能相关属性前,必须先使能对应的 Audio Input 通道。
相同 Audio Input 信道的声音质量增强功能不支持动态设置属性,重新设置 Audio Input 通道的声音 质量增强功能相关属性时,需要先关闭 Audio Input 通道的声音质量功能,再设置 Audio Input 通道的声音质量增强功能相关属性。
【举例】
无。
10.3.3.2. CVI_AI_SetTalkVqeAttr¶
【描述】
设置 Audio Input 的声音质量增强功能(Talk)相关属性。
【语法】
CVI_S32 CVI_AI_SetTalkVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, AUDIO_DEV AoDevId, AO_CHN AoChn, AI_TALKVQE_CONFIG_S *pstVqeConfig);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
AoDevId |
Audio Output设备号,用于回声抵消。 |
输入 |
AoChn |
用于回声抵消的 Audio Output 通道号。 |
输入 |
pstVqeConfig |
音频输入声音质量增强配置结构体指针 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_RES1.so,libcvi_vqe.so,libssp.so
【注意事项】
Talk Vqe 主要在 IPC 场景下使用。
相同 Audio Input 信道的声音质量增强功能不支持动态设置属性,重新设置 Audio Input 通道的声音 质量增强功能相关属性时,需要先关闭 Audio Input 通道的声音质量功能,再设置 Audio Input 通道 的声音质量增强功能相关属性。
【举例】
无。
10.3.3.3. CVI_AI_GetTalkVqeAttr¶
【描述】
获取 Audio Input 的声音质量增强功能(Talk)相关属性
【语法】
CVI_S32 CVI_AI_GetTalkVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, AI_TALKVQE_CONFIG_S *pstVqeConfig);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
pstVqeConfig |
音频输入声音质量增强配置结构体指针。 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_RES1.so,libcvi_vqe.so,libssp.so
【注意事项】
获取声音质量增强功能相关属性前必须先设置相对应 Audio Input 通道的声音质量增强功能相关属性。
【举例】
无。
10.3.3.4. CVI_AI_SetRecordVqeAttr¶
【描述】
设置 Audio Input 的声音质量增强功能(Record)相关属性。
【语法】
CVI_S32 CVI_AI_SetRecordVqeAttr(AUDIO_DEV AiDevId, AI_CHN AiChn, const AI_RECORDVQE_CONFIG_S *pstVqeConfig);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
pstVqeConfig |
音频输入声音质量增强配置结构体指针 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_RES1.so,libcvi_vqe.so,libssp.so
【注意事项】
无。
【举例】
无。
10.3.3.5. CVI_AI_GetRecordVqeAttr¶
【描述】
设置 Audio Input 的声音质量增强功能(Record)相关属性。
【语法】
CVI_AI_GetRecordVqeAttr (AUDIO_DEV AiDevId, AI_CHN AiChn, const AI_RECORDVQE_CONFIG_S *pstVqeConfig);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入enSoundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
pstVqeConfig |
音频输入声音质量增强配置结构体指针。 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_RES1.so,libcvi_vqe.so,libssp.so
【注意事项】
无。
【举例】
无。
10.3.3.6. CVI_AI_EnableVqe¶
【描述】
启用 Audio Input 的声音质量增强功能。
【语法】
CVI_S32 CVI_AI_EnableVqe(AUDIO_DEV AiDevId, AI_CHN AiChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。 设备号预设为0,在客制化 未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入 en Soundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_RES1.so,libcvi_vqe.so,libssp.so
【注意事项】
启用声音质量增强功能前必须先启用相对应的 Audio Input 通道。
多次使能相同 Audio Input 通道的声音质量增强功能时,返回成功。
禁用 Audio Input 通道后,如果重新启用 Audio Input 通道,并使用声音质量增强功能,需调用此接 口重新启用声音质量增强功能。
【举例】
无。
10.3.3.7. CVI_AI_DisableVqe¶
【描述】
禁用 Audio Input 的声音质量增强功能
【语法】
CVI_S32 CVI_AI_DisableVqe(AUDIO_DEV AiDevId, AI_CHN AiChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。 设备号预设为0,在客制化 未要求扩充下,设置超过2,返回错误 |
输入 |
AiChn |
音频输入通道号。与声道模式描述入 en Soundmode无关,用户可透过不同AiChn在同AiDevId下获取同设备声源。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_RES1.so,libcvi_vqe.so,libssp.so
【注意事项】
不再使用 Audio Input 声音质量增强功能时,应该调用此接口将其禁用。
【举例】
无。
10.3.3.8. CVI_AI_SetTrackMode¶
【描述】
设置 Audio Input 声道模式
【语法】
CVI_S32 CVI_AI_SetTrackMode(AUDIO_DEV AiDevId, AUDIO_TRACK_MODE_E enTrackMode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
enTrackMode |
typedef enum _AUDIO_TRACK_MODE_E {
AUDIO_TRACK_NORMAL = 0,
AUDIO_TRACK_BOTH_LEFT = 1,
AUDIO_TRACK_BOTH_RIGHT = 2,
AUDIO_TRACK_EXCHANGE = 3,
AUDIO_TRACK_MIX = 4,
AUDIO_TRACK_LEFT_MUTE = 5,
AUDIO_TRACK_RIGHT_MUTE = 6,
AUDIO_TRACK_BOTH_MUTE = 7,
AUDIO_TRACK_BUTT
} AUDIO_TRACK_MODE_E;
|
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_RES1.so,libcvi_vqe.so,libssp.so
【注意事项】
Audio Input 设备工作在 I2S 模式时,支持获取声道模式,PCM 模式下不支持。
在 Audio Input 设备成功启用后再调用此接口。
TrackMode能力与audio codec有关,如客户端使用自己的codec,设置可能有所不同。
【举例】
无。
10.3.3.9. CVI_AI_GetTrackMode¶
【描述】
获取 Audio Input 声道模式
【语法】
CVI_S32 CVI_AI_GetTrackMode(AUDIO_DEV AiDevId, AUDIO_TRACK_MODE_E *penTrackMode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误 |
输入 |
enTrackMode |
typedef enum _AUDIO_TRACK_MODE_E {
AUDIO_TRACK_NORMAL = 0,
AUDIO_TRACK_BOTH_LEFT = 1,
AUDIO_TRACK_BOTH_RIGHT = 2,
AUDIO_TRACK_EXCHANGE = 3,
AUDIO_TRACK_MIX = 4,
AUDIO_TRACK_LEFT_MUTE = 5,
AUDIO_TRACK_RIGHT_MUTE = 6,
AUDIO_TRACK_BOTH_MUTE = 7,
AUDIO_TRACK_BUTT
} AUDIO_TRACK_MODE_E;
|
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_RES1.so,libcvi_vqe.so,libssp.so
【注意事项】
Audio Input 设备工作在 I2S 模式时,支持获取声道模式,PCM 模式下不支持。
在 Audio Input 设备成功启用后再调用此接口。
TrackMode能力与audio codec有关,如客户端使用自己的codec,设置可能有所不同。
【举例】
无。
10.3.3.10. CVI_AO_SetVqeAttr¶
【描述】
设置 Audio Output 的声音质量增强功能相关属性。
【语法】
CVI_S32 CVI_AO_SetVqeAttr(AUDIO_DEV AoDevId, AO_CHN AoChn, AO_VQE_CONFIG_S *pstVqeConfig);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号 |
输入 |
pstVqeConfig |
音频输出声音质量增强配置结构体指针 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a、libssp.so、libcvi_RES1.so
【注意事项】
启用声音质量增强功能前必须先设置相对应 Audio Output 通道的声音质量增强功能相关属性。
设置 Audio Output 的声音质量增强功能相关属性前,必须先使能对应的 Audio Output 通道。
【举例】
无。
10.3.3.11. CVI_AO_GetVqeAttr¶
【描述】
获取 Audio Output 的声音质量增强功能相关属性。
【语法】
CVI_S32 CVI_AO_GetVqeAttr(AUDIO_DEV AoDevId, AO_CHN AoChn, AO_VQE_CONFIG_S *pstVqeConfig);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号 |
输入 |
pstVqeConfig |
音频输出声音质量增强配置结构体指针 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a、libssp.so、libcvi_RES1.so、libcvi_vqe.so
【注意事项】
获取声音质量增强功能相关属性前必须先设置相对应 Audio Output 通道的声音质量增强功能相关属性
【举例】
无。
10.3.3.12. CVI_AO_EnableVqe¶
【描述】
使能 Audio Output 的声音质量增强功能。
【语法】
CVI_S32 CVI_AO_EnableVqe(AUDIO_DEV AoDevId, AO_CHN AoChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a、libssp.so、libcvi_RES1.so、libcvi_vqe.so
【注意事项】
启用声音质量增强功能前必须先启用相对应Audio Output通道。
禁用 Audio Output 通道后,如果重新启用 Audio Output 通道,并使用声音质量增强功能,需调用此 接口重新启用声音质量增强功能。
【举例】
无。
10.3.3.13. CVI_AO_DisableVqe¶
【描述】
禁用 Audio Output 的声音质量增强功能。
【语法】
CVI_S32 CVI_AO_DisableVqe(AUDIO_DEV AoDevId, AO_CHN AoChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a、libssp2.so、libcvi_RES1.so、libcvi_dnvqe.so
【注意事项】
不再使用 AO 声音质量增强功能时,应该调用此接口将其禁用。
【举例】
无。
10.3.3.14. CVI_AI_SetVqeVolume¶
【描述】
设置音频输入(AI)设备的音量。
【语法】
CVI_S32 CVI_AI_SetVqeVolume(AUDIO_DEV AiDevId, AI_CHN AiChn, CVI_S32 s32VolumeDb);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。 |
输入 |
AiChn |
音频输入通道号。 |
输入 |
s32VolumeDb |
音量值,单位为分贝(dB)。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a、libssp.so、libcvi_RES1.so、libcvi_vqe.so
【注意事项】
在 AI VQE 使能后再调用此接口。
【举例】
无。
10.3.3.15. CVI_AI_GetVqeVolume¶
【描述】
获取音频输入(AI)设备的音量。
【语法】
CVI_S32 CVI_AI_GetVqeVolume(AUDIO_DEV AiDevId, AI_CHN AiChn, CVI_S32 *ps32VolumeDb);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。 |
输入 |
AiChn |
音频输入通道号。 |
输入 |
ps32VolumeDb |
用于存储获取到的音量值,单位为分贝(dB)。 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a、libssp.so、libcvi_RES1.so、libcvi_vqe.so
【注意事项】
在 AI VQE 使能后再调用此接口。
【举例】
无。
10.3.3.16. CVI_AI_VqeFunConfig¶
【描述】
配置音频输入(AI)设备的声音质量增强(VQE)功能。
【语法】
CVI_S32 CVI_AI_VqeFunConfig(AUDIO_DEV AiDevId, AI_CHN AiChn, int u32Mask);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AiDevId |
音频设备号。 |
输入 |
AiChn |
音频输入通道号。 |
输入 |
u32Mask |
功能配置掩码。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a、libssp.so、libcvi_RES1.so、libcvi_vqe.so
【注意事项】
在 AI VQE 使能后再调用此接口。
【举例】
无。
10.3.3.17. CVI_VQE_PathSelect¶
【描述】
VQE 算法路径设置。
【语法】
CVI_S32 CVI_VQE_PathSelect(E_VQE_ALGO_PATH eVqePath);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
eVqePath |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.so、libssp.so、libcvi_vqe.so
【注意事项】
此API 仅在支持IC下可使用, 使用时需在ENABLE前使能。
【举例】
无。
10.3.4. 音频输出¶
音频输出(Audio Output)主要实现启用音频输出设备、发送音频帧到输出信道等功能。
下面列举API并附加细部内容:
CVI_AO_SetPubAttr :设置 Audio Output 设备属性。
CVI_AO_GetPubAttr :获取 Audio Output 设备属性。
CVI_AO_Enable :启用 Audio Output 设备。
CVI_AO_Disable :禁用 Audio Output 设备。
CVI_AO_EnableChn :启用 Audio Output 通道。
CVI_AO_DisableChn :禁用 Audio Output 通道。
CVI_AO_SendFrame :发送 Audio Output 音频帧。
CVI_AO_EnableReSmp :启用 Audio Output 重采样。
CVI_AO_DisableReSmp :禁用 Audio Output 重采样。
CVI_AO_PauseChn :暂停 Audio Output 通道。
CVI_AO_ResumeChn :恢复 Audio Output 通道。
CVI_AO_ClearChnBuf :清除 Audio Output 通道中当前的音频数据区块。
CVI_AO_QueryChnStat :查询 Audio Output 通道中当前的音频数据区块状态。
CVI_AO_SetTrackMode :设置 Audio Output 设备声道模式。
CVI_AO_GetTrackMode :获取 Audio Output 设备声道模式。
CVI_AO_SetVolume :设置 Audio Output 设备音量大小。
CVI_AO_GetVolume :获取 Audio Output 设备音量大小。
CVI_AO_SetMute :设置 Audio Output 设备静音状态。
CVI_AO_GetMute :获取 Audio Output 设备静音状态。
CVI_AO_SaveFile :开启音频输出保存文件功能。(目前不支持此功能,可在CVI_AO_SendFrame前存盘);
CVI_AO_ClrPubAttr :清除 Audio Output 设备属性。
CVI_AO_SetStereoVolume :设置 Audio Output 设备立体声音量。
CVI_AO_GetStereoVolume :获取 Audio Output 设备立体声音量。
10.3.4.1. CVI_AO_SetPubAttr¶
【描述】
设置 Audio Output 设备属性
【语法】
CVI_S32 CVI_AO_SetPubAttr(AUDIO_DEV AoDevId,const AIO_ATTR_S *pstAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
pstAttr |
音频输出设备属性。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在设置属性之前需要保证 Audio Output 处于禁用状态,如果处于启用状态则需要首 先禁用 Audio Output 设备。
Audio Output 必须和 DA 配合起来才能正常工作,用户必须清楚 DA 发送的数据格式和通道的关系才能从正确的通道发送数据。
Audio Output 设备主模式时,决定 Audio Output 设备输出时钟的关键配置项是采样率、采样精度以及 通道数目,采样精度乘以通道数目即为 Audio Output 设备时序一次采样的位宽。
Audio Output 设备属性结构体中其他项请参见 Audio Input 模块中相关接口的描述。
【举例】
无。
10.3.4.2. CVI_AO_GetPubAttr¶
【描述】
获取 Audio Output 设备属性。
【语法】
CVI_S32 CVI_AO_GetPubAttr(AUDIO_DEV AoDevId, AIO_ATTR_S *pstAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
pstAttr |
音频输出设备属性指针。 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:ibcvi_audio.a
【注意事项】
获取的属性为前一次配置的属性。
如果从未配置过属性,则返回属性未配置的错误。
【举例】
CVI_S32 s32ret;
AUDIO_DEV AoDevId = 0;
AIO_ATTR_S stAttr;
s32ret = CVI_AO_GetPubAttr(AoDevId, &stAttr);
if(s32ret != CVI_SUCCESS) {
printf("get ao %d attr err:0x%x\n", AoDevId,s32ret);
return s32ret; }
10.3.4.3. CVI_AO_Enable¶
【描述】
使能 Audio Output 设备。
【语法】
CVI_S32 CVI_AO_Enable(AUDIO_DEV AoDevId);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
要求在启用前配置 Audio Output 设备属性,否则会返回属性未配置的错误。
如果 Audio Output 设备已经启用,则直接返回成功。
【举例】
CVI_S32 i;
CVI_S32 s32Ret;
s32Ret = CVI_AO_SetPubAttr(AoDevId, pstAioAttr);
if (s32Ret != CVI_SUCCESS) {
printf("%s: CVI_AO_SetPubAttr(%d) failed with %#x!\n", __func__,
AoDevId, s32Ret);
return CVI_FAILURE;
}
s32Ret = CVI_AO_Enable(AoDevId);
if (s32Ret != CVI_SUCCESS) {
printf("%s: CVI_AO_Enable(%d) failed with %#x!\n", __func__, AoDevId,
s32Ret);
return CVI_FAILURE;
}
for (i = 0; i < s32AoChnCnt; i++) {
s32Ret = CVI_AO_EnableChn(AoDevId, i / (pstAioAttr->enSoundmode + 1));
if (s32Ret != CVI_SUCCESS) {
printf("%s: CVI_AO_EnableChn(%d) failed with %#x!\n", __func__, i,
s32Ret);
return CVI_FAILURE;
}
if (bResampleEn == CVI_TRUE) {
s32Ret = CVI_AO_DisableReSmp(AoDevId, i);
s32Ret |= CVI_AO_EnableReSmp(AoDevId, i, enInSampleRate);
if (s32Ret != CVI_SUCCESS) {
printf("%s: CVI_AO_EnableReSmp(%d,%d) failed with %#x!\n", __func__,
AoDevId, i, s32Ret);
return CVI_FAILURE;
}
}
}
s32Ret = CVI_AO_EnableChn(AoDevId, AO_SYSCHN_CHNID);
if (s32Ret != CVI_SUCCESS) {
printf("%s: CVI_AO_EnableChn(%d) failed with %#x!\n", __func__, i,
s32Ret);
return CVI_FAILURE;
}
10.3.4.4. CVI_AO_Disable¶
【描述】
停用 Audio Output 设备。
【语法】
CVI_S32 CVI_AO_Disable(AUDIO_DEV AoDevId);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
禁用 Audio Output 设备前必须先禁用设备下所有 Audio Output 通道。
【举例】
无。
10.3.4.5. CVI_AO_EnableChn¶
【描述】
启用 Audio Output 通道。
【语法】
CVI_S32 CVI_AO_EnableChn(AUDIO_DEV AoDevId, AO_CHN AoChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 支持的通道范围由 Audio Output 描述入设备属性中的最大通道个数 u32ChnCnt 决定与声道模式 enSoundmode 决定。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
启用 Audio Output 通道前,必须先启用其所属的 Audio Output 设备,否则返回设备未启动的错误码
【举例】
无。
10.3.4.6. CVI_AO_DisableChn¶
【描述】
禁用 Audio Output 通道。
【语法】
CVI_S32 CVI_AO_DisableChn(AUDIO_DEV AoDevId, AO_CHN AoChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 支持的通道范围由 Audio Output 描述入设备属性中的最大通道个数 u32ChnCnt 决定与声道模式 enSoundmode 决定。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
无。
【举例】
无。
10.3.4.7. CVI_AO_SendFrame¶
【描述】
发送 Audio Output 音框。
【语法】
CVI_S32 CVI_AO_SendFrame(AUDIO_DEV AoDevId, AO_CHN AoChn, const AUDIO_FRAME_S *pstData, CVI_S32 s32MilliSec);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 支持的通道范围由 Audio Output 描述入设备属性中的最大通道个数u32ChnCnt决定与声道模式 enSoundmode 决定。 |
输入 |
pstData |
音频帧结构体指针。 |
输入 |
s32MilliSec |
发送数据的超时时间
-1 表示阻塞模式;
0描述入表示非阻塞模式;
>0 表示阻塞 s32MilliSec 毫秒,超时则报错返回。
|
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
该接口用于用户主动发送音频帧至 Audio Output 输出。
Audio Output 通道已经通过系统绑定 CVI_SYS_Bind)接口与 Audio Input 或 ADEC 绑定,不需要也不建议调此接口。
调用该接口发送音频帧到 Audio Output 输出时,必须先使能对应的 Audio Output 通道。
【举例】
无。
10.3.4.8. CVI_AO_SetStereoVolume¶
【描述】
设置音频输出通道音量。
【语法】
CVI_S32 CVI_AO_SetStereoVolume(AUDIO_DEV AoDevId, CVI_S32 AoStereoId, CVI_S32 s32Volume);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频输出设备号。 |
输入 |
AoStereoId |
音频输出声道号。 |
输入 |
s32Volume |
音量值,取值范围:[0, 32]。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见错误码。 |
【需求】
头文件:cvi_ao.h
库文件:libao.a
【注意】
AoStereoId 0:代表设置左声道音量值。1:代表设置右声道音量值。
【举例】
无
10.3.4.9. CVI_AO_GetStereoVolume¶
【描述】
获取音频输出通道音量。
【语法】
CVI_S32 CVI_AO_GetStereoVolume(AUDIO_DEV AoDevId, CVI_S32 AoStereoId, CVI_S32 *ps32Volume);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频输出设备号。 |
输入 |
AoStereoId |
音频输出声道号。 |
输入 |
ps32Volume |
音量值指针,取值范围:[0, 32]。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,请参见错误码。 |
【需求】
头文件:cvi_ao.h
库文件:libao.a
【注意】
AoStereoId 0:代表获取左声道音量值。1:代表获取右声道音量值。
【举例】
无
10.3.4.10. CVI_AO_EnableReSmp¶
【描述】
启用 Audio Output 重采样。
【语法】
CVI_S32 CVI_AO_EnableReSmp(AUDIO_DEV AoDevId, AO_CHN AoChn, AUDIO_SAMPLE_RATE_E enInSampleRate);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客 制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 支持的通道范围由 Audio Output 描述入设备属性中的最大通道个数 u32ChnCnt决定与声道模式 enSoundmode 决定。 |
输入 |
enInSampleRate |
音频重采样的输入采样率。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在使用CVI_AUD_SYS_Bind的状态下,不支持此API
应该在启用 Audio Output 通道之后,绑定 Audio Output 通道之前,调用此接口启用重采样功能。
允许重复启用重采样功能,但必须保证后配置的重采样输入采样率与之前配置的 重采样输入采样率一样。
在禁用 Audio Output 通道后,如果重新启用 Audio Output 通道,并使用重采样功能,需调用此接口 重新启用重采样。
Audio Output 重采样的输入采样率必须与 Audio Output 设备属性配置的采样率不相同。
【举例】
无。
10.3.4.11. CVI_AO_DisableReSmp¶
【描述】
禁用 Audio Output 重采样。
【语法】
CVI_S32 CVI_AO_DisableReSmp(AUDIO_DEV AoDevId, AO_CHN AoChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 支持的通道范围由 Audio Output描述入设备属性中的最大通道个数 u32ChnCnt决定与声道模式 enSoundmode决定。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
不再使用 Audio Output 重采样功能的话,应该调用此接口将其禁用
【举例】
无。
10.3.4.12. CVI_AO_PauseChn¶
【描述】
暂停 Audio Output 通道。
【语法】
CVI_S32 CVI_AO_PauseChn(AUDIO_DEV AoDevId, AO_CHN AoChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 支持的通道范围由 Audio Output 设备属性中的最大通道个数 u32ChnCnt决定与声道模式 enSoundmode决定。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
Audio Output 通道暂停后,如果绑定的 ADEC 信道继续向此信道发送音频帧数据,发送的音频帧数据将会被阻塞;而如果绑定的 Audio Input 信道继续向此信道发送音频帧数据,在 通道缓冲未满的情况下则将音频帧放入缓冲区,在满的情况下则将音频帧丢弃。
Audio Output 通道为禁用状态时,不允许调用此接口暂停 Audio Output 通道。
【举例】
无。
10.3.4.13. CVI_AO_ResumeChn¶
【描述】
恢复 Audio Output 通道。
【语法】
CVI_S32 CVI_AO_ResumeChn(AUDIO_DEV AoDevId, AO_CHN AoChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 支持的通道范围由 Audio Output 设备属性中的最大通道个数 u32ChnCnt决定与声道模式 enSoundmode决定。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
Audio Output 通道暂停后可以通过调用此接口重新恢复
Audio Output 通道为暂停状态或使能状态下,调用此接口返回成功;否则调用将返回错误
【举例】
无。
10.3.4.14. CVI_AO_ClearChnBuf¶
【描述】
清除 Audio Output 通道中当前的音频数据区块。
【语法】
CVI_S32 CVI_AO_ClearChnBuf(AUDIO_DEV AoDevId, AO_CHN AoChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 支持的通道范围由 Audio Output 设备属性中的最大通道个数 u32ChnCnt决定与声道模式 enSoundmode 决定。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在 Audio Output 通道成功启用后再调用此接口。
为完全清除解码回放通路上所有区块数据,此接口还应该与 CVI_ADEC_ClearChnBuf 接口配合使用。
不推荐使用
【举例】
无。
10.3.4.15. CVI_AO_QueryChnStat¶
【描述】
查询 Audio Output 通道中当前的音频数据区块状态。
【语法】
CVI_S32 CVI_AO_QueryChnStat(AUDIO_DEV AoDevId, AO_CHN AoChn, AO_CHN_STATE_S *pstStatus);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
AoChn |
音频输出通道号。 支持的通道范围由 Audio Output 设备属性中的最大通道个数 u32ChnCnt决定与声道模式 enSoundmode 决定。 |
输入 |
pstStatus |
区块状态结构体指针。 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在 Audio Output 通道成功启用后再调用此接口。
【举例】
无。
10.3.4.16. CVI_AO_SetTrackMode¶
【描述】
设置 Audio Output 设备声道模式。
【语法】
CVI_S32 CVI_AO_SetTrackMode(AUDIO_DEV AoDevId, AUDIO_TRACK_MODE_E enTrackMode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
enTrackMode |
音频设备声道模式。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在 Audio Output 设备成功启用后再调用此接口。
Audio Output 设备工作在 I2S 模式时,支持设置声道模式,PCM 模式下不支持。
【举例】
CVO_S32 s32Ret;
AUDIO_DEV AoDev = 0;
AUDIO_TRACK_MODE_E enTrackMode = AUDIO_TRACK_NORMAL;
AUDIO_TRACK_MODE_E temp;
s32Ret = CVI_AO_SetTrackMode(AoDev, enTrackMode);
if (CVI_SUCCESS != s32Ret) {
printf("Ao set track mode failure! AoDev: %d, enTrackMode: %d, s32Ret: 0x%x.\n", AoDev, enTrackMode, s32Ret);
return s32Ret;
}
s32Ret = CVI_AO_GetTrackMode(AoDev, &temp);
if (s32Ret!=CVI_SUCCESS) {
printf("Ao get track mode failure! AoDev: %d, s32Ret: 0x%x.\n", AoDev, s32Ret);
return s32Ret;
}
10.3.4.17. CVI_AO_GetTrackMode¶
【描述】
获取 Audio Output 设备声道模式。
【语法】
CVI_S32 CVI_AO_GetTrackMode(AUDIO_DEV AoDevId, AUDIO_TRACK_MODE_E *penTrackMode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
enTrackMode |
音频设备声道模式。 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在 Audio Output 设备成功启用后再调用此接口。
Audio Output 设备工作在 I2S 模式时,支持获取声道模式,PCM 模式下不支持。
【举例】
无。
10.3.4.18. CVI_AO_SetVolume¶
【描述】
设置 Audio Output 设备音量大小。
【语法】
CVI_S32 CVI_AO_SetVolume(AUDIO_DEV AoDevId, CVI_S32 s32VolumeDb);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
s32VolumeDb |
音量范围为[32~0], 分别对应增益 [0d - 22.5dB], 每一阶降1.5dB。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在 Audio Output 设备成功启用后再调用此接口。
【举例】
无。
10.3.4.19. CVI_AO_GetVolume¶
【描述】
获取 Audio Output 设备音量大小。
【语法】
CVI_S32 CVI_AO_GetVolume(AUDIO_DEV AoDevId, CVI_S32 *ps32VolumeDb);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
ps32VolumeDb |
音频设备音量大小指针。音量范围为[32~0],分别对应增益 [0dB ~ -22.5dB], 每一阶降1.5dB。 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在 Audio Output 设备成功启用后再调用此接口。
【举例】
无。
10.3.4.20. CVI_AO_SetMute¶
【描述】
设置 Audio Output 设备静音状态。
【语法】
CVI_S32 CVI_AO_SetMute(AUDIO_DEV AoDevId, CVI_BOOL bEnable, const AUDIO_FADE_S *pstFade);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
bEnable |
音频设备是否启用静音。 CVI_TRUE:启用静音功能;CVI_FALSE:关闭静音功能 |
输入 |
pstFade |
淡入淡出结构体指针。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在 Audio Output 设备成功启用后再调用此接口。
【举例】
无。
10.3.4.21. CVI_AO_GetMute¶
【描述】
获取 Audio Output 设备静音状态。
【语法】
CVI_S32 CVI_AO_GetMute(AUDIO_DEV AoDevId, CVI_BOOL *pbEnable, AUDIO_FADE_S *pstFade);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
bEnable |
音频设备静音状态指针。 |
输出 |
pstFade |
淡入淡出结构体指针。 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在 Audio Output 设备成功启用后再调用此接口。
【举例】
无。
10.3.4.22. CVI_AO_SaveFile¶
【描述】
目前不支持此功能,用户可透过CVI_AO_SendFrame前存盘。
【语法】
CVI_S32 CVI_AO_SaveFile(AUDIO_DEV AoDevId, AO_CHN AoChn, AUDIO_SAVE_FILE_INFO_S* pstSaveFileInfo);
【参数】
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
【注意事项】
【举例】
无。
10.3.4.23. CVI_AO_ClrPubAttr¶
【描述】
清除 Audio Output 设备属性。
【语法】
CVI_S32 CVI_AO_ClrPubAttr(AUDIO_DEV AoDevId);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AoDevId |
音频设备号。 设备号预设为0,在客制化未要求扩充下,设置超过2,返回错误。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
清除设备属性前,需要先停止设备。
Audio Input 设备及Audio Output 设备时钟无需设定。
【举例】
无。
10.3.5. 音频编码¶
AENC模块提供以下API:
CVI_AENC_CreateChn :创建音频编码通道。
CVI_AENC_DestroyChn :销毁音频编码通道。
CVI_AENC_SendFrame :发送音频编码音频帧
CVI_AENC_GetStream :获取音频编码码流。
CVI_AENC_ReleaseStream :释放音频编码码流。
CVI_AENC_SaveFile :开启音频编码之前信道存文件功能。
CVI_AENC_GetStreamBufInfo :获取音频码流 buffer 相关信息。
CVI_AENC_SetMute :设置AENC静音状态。
CVI_ADEC_GetMute :获取AENC静音状态。
10.3.5.1. CVI_AENC_CreateChn¶
【描述】
创建音频编码通道。
【语法】
CVI_S32 CVI_AENC_CreateChn(AENC_CHN AeChn, const AENC_CHN_ATTR_S *pstAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AeChn |
编码设备信道号。取值范围:[0, AENC_MAX_CHN_NUM] |
输入 |
pstAttr |
编码通道属性指针 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h,cvi_comm_aenc.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
目前支持 G711、G726、ADPCM
支持输入pcm 音框,音讯格式(format)支持16 位小端序(S16LE)其余不支持,使用时请同步将Audio Input attribute/AENC attribute 做对应设置,如要在VQE之后使用,请将音框长度设为160的倍数,以符合Cvitek VQE规范。
音频编码的部分属性需要与输入的音频数据属性相匹配,例如采样率、帧长(每 帧采样点数目)等
buffer 大小以帧为单位,取值范围是[2, MAX_BUFFERING_DEPTH],建议配置 为 10 以上,过小的 buffer 配置可能导致丢帧等异常。
【举例】
无。
10.3.5.2. CVI_AENC_DestroyChn¶
【描述】
销毁音频编码通。
【语法】
CVI_S32 CVI_AENC_DestroyChn(AENC_CHN AeChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AeChn |
编码设备信道号。取值范围:[0, AENC_MAX_CHN_NUM] |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_aenc.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
通道如未创建,则调用本函式无效。
如果正在获取/释放码流或者发送帧时销毁该通道,则会返回失败,用户同步处理时需要注意。
【举例】
无。
10.3.5.3. CVI_AENC_SendFrame¶
【描述】
发送音频编码音频帧。
【语法】
CVI_S32 CVI_AENC_SendFrame(AENC_CHN AeChn, const AUDIO_FRAME_S *pstFrm, const AEC_FRAME_S *pstAecFrm);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AeChn |
编码设备信道号。取值范围:[0, AENC_MAX_CHN_NUM] |
输入 |
pstFrm |
音频帧结构体指针。 |
输入 |
pstAecFrm |
回声抵消参考帧结构体指针。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_aenc.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
通道如未创建,呼叫本函式无效。
如果不需要回声抵消,pstAecFrm 可置为 NULL。
该接口用于用户主动发送音频帧进行编码,如果 AENC 通道已经通过系统绑定接口与 Audio Input 绑定,不需要也不建议调此接口。
【举例】
s32Ret = CVI_AI_GetChnParam(AiDev, AiChn, &stAiChnPara);
if (s32Ret != CVI_SUCCESS) {
printf("%s: Get ai chn param failed\n", __func__);
return NULL;
}
stAiChnPara.u32UsrFrmDepth = 10;
s32Ret = CVI_AI_SetChnParam( AiDev, AiChn, &stAiChnPara);
if (s32Ret != CVI_SUCCESS) {
printf("%s: set ai chn param failed\n", __func__);
return NULL;
}
while ( 1) {
/* get frame from ai chn */
memset(&stAecFrm, 0, sizeof(AEC_FRAME_S));
s32Ret = CVI_AI_GetFrame( AiDev, AiChn, &stFrame,
&stAecFrm, CVI_FALSE);
if (s32Ret != CVI_SUCCESS) {
printf("CVI_AI_GetFrame none!!\n");
continue;
}
/* send frame to encoder */
if ( bSendAenc == CVI_TRUE) {
s32Ret = CVI_AENC_SendFrame( AencChn, &stFrame, &stAecFrm);
if (s32Ret != CVI_SUCCESS) {
printf("%s: CVI_AENC_SendFrame(%d), failed with %#x!\n",
__func__, AencChn, s32Ret);
bStart = CVI_FALSE;
return NULL;
}
}
/* send frame to ao */
/* If owner toggle bSendAenc, do not toggle bSendAo */
/* You cannot send encode frame to CVI_AO_SendFrame */
/* It cannot play out encode frame by only AO_SendFrame*/
if ( bSendAo == CVI_TRUE) {
s32Ret = CVI_AO_SendFrame( AoDev, AoChn, &stFrame, 1000);
if (s32Ret != CVI_SUCCESS) {
printf("%s: CVI_AO_SendFrame(%d, %d), failed with %#x!\n",
__func__, AoDev, AoChn, s32Ret);
bStart = CVI_FALSE;
return NULL;
}
}
/* finally you must release the stream */
s32Ret = CVI_AI_ReleaseFrame( AiDev, AiChn, &stFrame,
&stAecFrm);
if (s32Ret != CVI_SUCCESS) {
printf("%s: CVI_AI_ReleaseFrame(%d, %d), failed with %#x!\n",
__func__, AiDev, AiChn, s32Ret);
bStart = CVI_FALSE;
return NULL;
}
}
10.3.5.4. CVI_AENC_GetStream¶
【描述】
获取编码后码流。
【语法】
CVI_S32 CVI_AENC_GetStream(AENC_CHN AeChn, AUDIO_STREAM_S *pstStream, CVI_S32 s32MilliSec);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AeChn |
编码设备信道号。取值范围:[0, AENC_MAX_CHN_NUM] |
输入 |
pstStream |
获取的音频码流。 |
输出 |
s32MilliSec |
获取数据的超时时间
-1 表示阻塞模式,无数据时一直等待;
0表示非阻塞模式,无数据时则报错返回;
>0 表示阻塞 s32MilliSec 毫秒,超时则报错返回。
|
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_aenc.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
必须创建通道后才可能获取码流,否则直接返回失败,如果在获取码流过程中销 毁通道则会立刻返回失败。
s32MilliSec 的值必须大于等于-1,等于-1 时采用阻塞模式获取数据,等于 0 时采 用非阻塞模式获取数据,大于 0 时,阻塞 s32MilliSec 毫秒后,没有数据则返回超时并报。
【举例】
无。
10.3.5.5. CVI_AENC_ReleaseStream¶
【描述】
释放从音频编码通道获取的码流。
【语法】
CVI_S32 CVI_AENC_ReleaseStream(AENC_CHN AeChn, const AUDIO_STREAM_S *pstStream);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AeChn |
编码设备信道号。取值范围:[0, AENC_MAX_CHN_NUM] |
输入 |
pstStream |
获取的音频码流之指针。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_aenc.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
码流最好能够在使用完之后立即释放,如果不及时释放,会导致编码过程阻塞。
释放的码流必须是从该通道获取的码流,不得对码流信息结构体进行任何修改,否则会导致码流不能释放,使此码流 buffer 丢失,甚至导致程序异常。
释放码流时必须保证通道已经被创建,否则直接返回失败,如果在释放码流过程 中销毁通道则会立刻返回失败。
【举例】
无。
10.3.5.6. CVI_AENC_SaveFile¶
【描述】
开启音频编码之前信道存文件功能。
【语法】
CVI_S32 CVI_AENC_SaveFile(AENC_CHN AeChn, const AUDIO_SAVE_FILE_INFO_S *pstSaveFileInfo);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AeChn |
音频编码通道号。 取值范围:[0, AENC_MAX_CHN_NUM]。 |
输入 |
pstSaveFileInfo |
音频保存文件属性结构体指针。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_aenc.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
Cvitek 不支援此API。
请使用 CVI_AI_SaveFile 。
【举例】
无。
10.3.5.7. CVI_AENC_GetStreamBufInfo¶
【描述】
获取音频码流 buffer 相关信息。
【语法】
CVI_S32 CVI_AENC_GetStreamBufInfo(AENC_CHN AeChn, CVI_U32 *pu32PhysAddr, CVI_U32 *pu32Size);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AeChn |
音频编码通道号。 取值范围:[0, AENC_MAX_CHN_NUM]。 |
输入 |
pu32PhysAddr |
音频码流 buffer 的物理地址。 |
输出 |
pu32Size |
音频码流 buffer 的长度,以 byte 为单位 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_aenc.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
无。
【举例】
无。
10.3.5.8. CVI_AENC_SetMute¶
【描述】
设置AENC静音状态
【语法】
CVI_AENC_SetMute (AENC_CHN AeChn, CVI_BOOL bEnable);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AeChn |
编码设备信道号。取值范围:[0, AENC_MAX_CHN_NUM] |
输入 |
bEnable |
音频设备是否启用静音。 CVI_TRUE:启用静音功能;CVI_FALSE:关闭静音功能 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在AENC创建设备信号通道后才能使用
【举例】
无。
10.3.5.9. CVI_AENC_GetMute¶
【描述】
得到AENC设备静音状态
【语法】
CVI_AENC_GetMute(AENC_CHN AeChn, CVI_BOOL *pbEnable);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AeChn |
编码设备信道号。取值范围:[0, AENC_MAX_CHN_NUM] |
输入 |
pbEnable |
音频设备禁音状态指针 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在AENC创建设备信号通道后才能使用
【举例】
无。
10.3.6. 音频解码¶
音频解码主要实现创建解码通道、发送音频码流解码及获取解码后音频帧等功能。
下面列出支持的API及细部内容:
CVI_ADEC_CreateChn :创建音频解码通道。
CVI_ADEC_DestroyChn :销毁音频解码通道。
CVI_ADEC_SendStream :发送音频码流到音频解码通道。
CVI_ADEC_ClearChnBuf :清除 ADEC 通道中当前的音频数据区块。
CVI_ADEC_GetFrame :获取音频解码帧数据。
CVI_ADEC_ReleaseFrame :释放音频解码帧数据。
CVI_ADEC_SendEndOfStream :向解码器发送码流结束标识符,并清除码流 buffer。
10.3.6.1. CVI_ADEC_CreateChn¶
【描述】
创建音频解码通道。
【语法】
CVI_S32 CVI_ADEC_CreateChn(ADEC_CHN AdChn, const ADEC_CHN_ATTR_S *pstAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AdChn |
通道号。 取值范围:[0, ADEC_MAX_CHN_NUM]。 |
输入 |
pstAttr |
通道属性指针。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_adec.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
目前支持 G711、G726、ADPCM。
音频解码的部分属性需要与输出设备属性相匹配,例如采样率、帧长(每帧采样 点数目)等
【举例】
无。
10.3.6.2. CVI_ADEC_DestroyChn¶
【描述】
销毁音频解码通道。
【语法】
CVI_S32 CVI_ADEC_DestroyChn(ADEC_CHN AdChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AdChn |
通道号。 取值范围:[0, ADEC_MAX_CHN_NUM]。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_adec.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
通道未创建的情况下调用此接口会返回成功。
如果正在获取/释放码流或者发送帧,销毁该通道则这些操作都会立即返回失败。
【举例】
无。
10.3.6.3. CVI_ADEC_SendStream¶
【描述】
向音频解码通道发送码流。
【语法】
CVI_S32 CVI_ADEC_SendStream(ADEC_CHN AdChn, const AUDIO_STREAM_S *pstStream, CVI_BOOL bBlock);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AdChn |
通道号。 取值范围:[0, ADEC_MAX_CHN_NUM]。 |
输入 |
pstStream |
音频码流 |
输入 |
bBlock |
CVI_TRUE:阻塞。 CVI_FALSE:非阻塞。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_adec.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
stream 方式用于不确定码流包为一帧(大于等于一帧)的情况下,效率较低,且可能会有延迟
发送数据时必须保证通道已经被创建,否则直接返回失败,如果在送数据过程中 销毁通道则会立刻返回失败。
确保发送给 ADEC 通道的码流数据的正确性,否则可能引起解码器异常退出。
【举例】
无。
10.3.6.4. CVI_ADEC_ClearChnBuf¶
【描述】
清除 ADEC 通道中当前的音频数据区块。
【语法】
CVI_S32 CVI_ADEC_ClearChnBuf(ADEC_CHN AdChn);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AdChn |
通道号。 取值范围:[0, ADEC_MAX_CHN_NUM]。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_adec.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
要求解码通道已经被创建。
使用本接口时,不建议使用 stream 方式解码。使用 stream 方式解码进行清除区块作时,用户需要确保清除完区块后,发送给解码器的数据必须是完整的一帧码流,否则可能导致解码器不能正常工作。
无论是否使用 stream方式解码,都要确保送数据解码的操作和清除区块的操作之间的同步。
【举例】
无。
10.3.6.5. CVI_ADEC_GetFrame¶
【描述】
获取解碼后音框。
【语法】
CVI_S32 CVI_ADEC_GetFrame(ADEC_CHN AdChn, AUDIO_FRAME_INFO_S *pstFrmInfo, CVI_BOOL bBlock);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AdChn |
音频解码通道。 |
输入 |
pstFrmInfo |
音频帧数据结构体。 |
输出 |
bBlock |
是否以阻塞方式获取。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_adec.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
必须在 ADEC 通道创建之后调用
使用本接口获取解码帧数据时,建议发送码流时按帧发送
使用本接口获取音频数据时,请解除 ADEC 与 Audio Output 的绑定关系,否则获取到的帧 是不连续的。
使用本接口获取音频帧数据时,如果发送码流按流发送,请务必保证获取解码帧 数据的及时性,否则会有异常。
【举例】
无。
10.3.6.6. CVI_ADEC_ReleaseFrame¶
【描述】
释放获取到的音频解码帧数据。
【语法】
CVI_S32 CVI_ADEC_ReleaseFrame(ADEC_CHN AdChn, AUDIO_FRAME_INFO_S *pstFrmInfo);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AdChn |
音频解码通道。 |
输入 |
pstFrmInfo |
音频帧数据结构体。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_adec.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
本接口必须与接口 CVI_ADEC_GetFrame 配合使用。
必须在 ADEC 通道创建之后调用。
【举例】
无。
10.3.6.7. CVI_ADEC_SendEndOfStream¶
【描述】
向解码器发送码流结束标识符,并清除码流 buffer。
【语法】
CVI_S32 CVI_ADEC_SendEndOfStream (ADEC_CHN AdChn, CVI_BOOL bInstant);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
AdChn |
音频解码通道。 |
输入 |
bInstant |
是否立即清除解码器内部的区块数据。
取值范围:
CVI_FALSE: 延时清除。不会立即清除解码器内部的缓存数据,解码会继续进行,直到剩余buffer 不足一帧数据时进行清除操作。
CVI_TRUE:立即清除解码器内部区块数据。
|
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_adec.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
无。
【举例】
无。
10.3.7. 重采样¶
Resampler 模块提供单独的重采样处理。当客户需要在上层对数据重采样时,可以使用该模块。
以下为相关API及细部说明:
CVI_Resampler_Create :创建一个重采样模块。
CVI_Resampler_Process :重采样模块数据处理。
CVI_Resampler_Destroy :销毁重采样模块。
CVI_Resampler_GetMaxOutputNum :计算重采样最大输出数据。
10.3.7.1. CVI_Resampler_Create¶
【描述】
创建一个重采样模块。
【语法】
CVI_VOID* CVI_Resampler_Create(CVI_S32 s32Inrate, CVI_S32 s32Outrate, CVI_S32 s32Chans);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
s32Inrate |
输入采样率。 取值范围:8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000。 |
输入 |
s32Outrate |
输出采样率。 取值范围:8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000。 |
输入 |
s32Chans |
处理声道数(目前Cvitek支持单声道) |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_resample_api.h
库文件:libcvi_audio.a,libcvi_RES1.so
【注意事项】
输入采样率和输出采样率需保证不一致。
【举例】
无。
10.3.7.2. CVI_Resampler_Process¶
【描述】
处理一帧重采样数据。
【语法】
CVI_S32 CVI_Resampler_Process(CVI_VOID* inst, CVI_S16* s16Inbuf, CVI_S32 s32Insamps, CVI_S16* s16Outbuf);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
inst |
重采样模块句柄。 |
输入 |
s16Inbuf |
输入数据 buf 指针。 |
输入 |
s32Insamps |
输入数据采样点数。 取值范围:[0, 2048] |
输入 |
s16Outbuf |
输出数据 buf 指针 |
输出 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_resample_api.h
库文件:libcvi_audio.a,libcvi_RES1.so
【注意事项】
最大输入采样点数需小于 2048。
【举例】
无。
10.3.7.3. CVI_Resampler_Destroy¶
【描述】
销毁一个重采样模块实例。
【语法】
CVI_VOID CVI_Resampler_Destroy(CVI_VOID* inst);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
inst |
重采样模块句柄。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_resample_api.h
库文件:libcvi_audio.a,libcvi_RES1.so
【注意事项】
无。
【举例】
无。
10.3.7.4. CVI_Resampler_GetMaxOutputNum¶
【描述】
获取最大输出采样点数(每一声道)。
【语法】
CVI_S32 CVI_Resampler_GetMaxOutputNum(CVI_VOID* inst, CVI_S32 s32Insamps);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
inst |
重采样模块句柄。 |
输入 |
s32Insamps |
每一声道输入采样点数。 |
输入 |
【返回值】
参数名称 |
描述 |
|---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_resample_api.h
库文件:libcvi_audio.a,libcvi_RES1.so
【注意事项】
无。
【举例】
无。