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¶
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_AUDIO_SetModParam¶
【描述】
设置 Audio 模块参数属性。
【语法】
CVI_S32 CVI_AUDIO_SetModParam(const AUDIO_MOD_PARAM_S *pstModParam);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
pstModParam |
AUDIO 模块参数属性指针。 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在各audio 子模块使用前,需通过此API做初始化。
【举例】
无。
10.3.1.4. 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.5. CVI_AUDIO_GetModParam¶
【描述】
获取 AUDIO 模块参数属性。
【语法】
CVI_S32 CVI_AUDIO_GetModParam(AUDIO_MOD_PARAM_S *pstModParam);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
pstModParam |
AUDIO 模块参数属性指针。 |
输出 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a
【注意事项】
在各audio 子模块使用前,需透过此API做初始化。
【举例】
无。
10.3.1.6. CVI_AUDIO_RegisterVQEModule¶
【描述】
注册VQE模块
【语法】
CVI_S32 CVI_AUDIO_RegisterVQEModule(const AUDIO_VQE_REGISTER_S, *pstVqeRegister);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
pstVqeRegister |
VQE相关参数属性指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h
库文件:libcvi_audio.a,libcvi_vqe.so,libaec.so
【注意事项】
此api已弃用。请使用CVI_AI_SetTalkVqeAttr,CVI_AI_EnableVqe
【举例】
无。
10.3.1.7. CVI_AENC_RegisterExternalEncoder¶
【描述】
注册音频编码模块
【语法】
CVI_S32 CVI_AENC_RegisterExternalEncoder(CVI_S32 *ps32Handle, const AAC_AENC_ENCODER_S *pstEncoder);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ps32Handle |
参数属性指针 |
输入 |
pstEncoder |
编码模块函数指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h,cvi_audio_aac_adp.h
库文件:libcvi_audio.a,libaacenc2.so
【注意事项】
此函数针对AAC音频编码使用。
函数注册前,需确认pstEncoder内的函数指针不为空,否则内部调用时会有错误。
相关范例可搭配SDK内:sample/audio/aac_sample/cvi_audio_aac_adp.c调用参考。
此函数仅支持AAC编码注册,相关G7xx系列编码请使用 CVI_AENC_CreateChn,可参照范例
cvi_sample_audio.c
内SAMPLE_AUDIO_AiAenc
。
【举例】
无。
10.3.1.8. CVI_AENC_UnRegisterExternalEncoder¶
【描述】
注销编码器。
【语法】
CVI_S32 CVI_AENC_UnRegisterExternalEncoder(CVI_S32 s32Handle);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
s32Handle |
注册句柄(注册编码器时获得的句柄) |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h,cvi_audio_aac_adp.h
库文件:libcvi_audio.a,libaacenc2.so
【注意事项】
此函数针对AAC音频编码使用。
注销编码器前,需要先销毁通过该编码器创建的所有编码通道,未销毁或者销毁过程中调用此接口将返回报错。
【举例】
无。
10.3.1.9. CVI_ADEC_RegisterExternalDecoder¶
【描述】
注册音频解码模块
【语法】
CVI_S32 CVI_ADEC_RegisterExternalDecoder(CVI_S32 *ps32Handle, const ADEC_DECODER_S *pstDecoder);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ps32Handle |
参数属性指针 |
输入 |
pstDecoder |
编码模块函数指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h ,cvi_audio_aac_adp.h
库文件:libcvi_audio.a,libaadec2.so
【注意事项】
此函数针对AAC音频解码使用。
函数注册前,需确认pstDecoder内的函数指真不为空,否则内部调用时会有错误。
相关范例可搭配SDK内:sample/audio/aac_sample/cvi_audio_aac_adp.c调用参考。
此函数仅支持AAC译码注册,相关G7xx系列请使用CVI_ADEC_CreateChn,可参照范例
cvi_sample_audio.c
内SAMPLE_AUDIO_AdecAo
。
【举例】
无。
10.3.1.10. CVI_ADEC_UnRegisterExternalDecoder¶
【描述】
注销音频解码模块
【语法】
CVI_S32 CVI_ADEC_UnRegisterExternalDecoder(CVI_S32 s32Handle);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
s32Handle |
注册句柄 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h,cvi_audio_aac_adp.h
库文件:libcvi_audio.a,libaadec2.so
【注意事项】
此函数针对AAC音频解码使用。
【举例】
无。
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 设备音量。
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 : 时钟设置,在此processor CV182x无需特别设置,仅需注意aio attribute 在Audio Input/Audio Output需设定一致。
【举例】
无。
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
【注意事项】
在使用 CVI_AUD_SYS_Bind 的状态下,不支持此API
采样率支持程度如下:
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.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_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
【注意事项】
CVI182x目前语音算法主要设定是由 CVI_AI_SetTalkVqeAttr 调用,使用者用此 RecordVqeAttr (CVI_AI_SetRecordVqeAttr/ GetRecordVqeAttr)可能对于算法会不支持或无法设入,因此不建议使用。
【举例】
无。
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
【注意事项】
CVI182x目前语音算法主要设定是由 CVI_AI_GetTalkVqeAttr 调用,使用者用此 RecordVqeAttr (CVI_AI_SetRecordVqeAttr/ GetRecordVqeAttr)可能对于算法会不支持或无法设入,因此不建议使用。
【举例】
无。
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_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 设备属性。
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 发送的数据格式和通道的关系才能从正确的通道发送数据。
u32ClkSel在CV182x processor下无需配置。
Audio Output 设备主模式时,决定 Audio Output 设备输出时钟的关键配置项是采样率、采样精度以及 通道数目,采样精度乘以通道数目即为 Audio Output 设备时序一次采样的位宽。
CV182x扩展标志对 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 _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_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.9. 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.10. 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.11. 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.12. 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.13. 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.14. 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.15. 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.16. 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.17. 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.18. 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.19. 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.20. 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.21. 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. 音频编码¶
音频编码主要专责音框数据转换,Cvitek支持G.711、G.726、LDPCM相关编码,编码后的音框数据较小,但语音编码属于有损压缩(lossy compression),音质会有所差异,不同编码使用的bit rate/sample rate亦有所不同,用户需要知道该编码协议的规范并设定对应API,否则函式将回报错误。
Codec |
Sampling Rat e(KHZ) |
Bandwidth(kbps) |
Nominal Bandwidth(kbps) |
License |
---|---|---|---|---|
G.711* |
8 |
64 |
87.2 |
Open Source |
G.726 |
8 |
16/24/32/40 |
47.2/55.2 |
Open Source |
*G.711 包含a-law/mu-law
AENC模块提供以下API:
CVI_AENC_CreateChn :创建音频编码通道。
CVI_AENC_DestroyChn :销毁音频编码通道。
CVI_AENC_SendFrame :发送音频编码音频帧
CVI_AENC_GetStream :获取音频编码码流。
CVI_AENC_ReleaseStream :释放音频编码码流。
CVI_AENC_SaveFile :开启音频编码之前信道存文件功能。
CVI_AENC_QueryFileStatus :查询音频编码通道是否处于存文件的状态。
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_QueryFileStatus¶
【描述】
查询频编码通道是否处于存文件的状。
【语法】
CVI_S32 CVI_AENC_QueryFileStatus(AENC_CHN AeChn, AUDIO_FILE_STATUS_S* pstFileStatus);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
AeChn |
音频编码通道号。 取值范围:[0, AENC_MAX_CHN_NUM]。 |
输入 |
pstFileStatus |
状态属性结构体指针。 |
输出 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:cvi_comm_aio.h,cvi_audio.h、cvi_comm_aenc.h
库文件:libcvi_audio.a,libcvi_VoiceEngine.so,libcvi_RES1.so
【注意事项】
Cvitek 不支援此API。
【举例】
无。
10.3.5.8. 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.9. 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.10. 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. 内置Codec¶
内置audio codec主要透过ioctl来对硬体设备做操作。Ioctl调用实现的是对内置audio codec寄存器的读写操作。
内置audio codec标准功能cmd
ACODEC_SOFT_RESET_CTRL :将Codec恢复为默认设置。
ACODEC_SET_INPUT_VOL :输入总音量控制。
ACODEC_GET_INPUT_VOL :获取输入总音量。
ACODEC_SET_OUTPUT_VOL :输出总音量控制。
ACODEC_GET_OUTPUT_VOL :获取输出总音量。
ACODEC_SET_GAIN_MICL :左声道MIC输入的模拟增益控制。
ACODEC_SET_GAIN_MICR :右声道MIC输入的模拟增益控制。
ACODEC_SET_DACL_VOL :左声道输出音量控制。
ACODEC_SET_DACR_VOL :右声道输出音量控制。
ACODEC_SET_ADCL_VOL :左声道输入音量控制。
ACODEC_SET_ADCR_VOL :右声道输入音量控制。
ACODEC_SET_MICL_MUTE :左声道MIC输入静音控制。
ACODEC_SET_MICR_MUTE :右声道MIC输入静音控制。
ACODEC_SET_DACL_MUTE :左声道输出静音控制。
ACODEC_SET_DACR_MUTE :右声道输出静音控制。
ACODEC_GET_GAIN_MICL :获取模拟左声道MIC输入的增益。
ACODEC_GET_GAIN_MICR :获取模拟右声道MIC输入的增益。
ACODEC_GET_DACL_VOL :获取左声道输出的音量控制。
ACODEC_GET_DACR_VOL :获取右声道输出的音量控制。
ACODEC_GET_ADCL_VOL :获取左声道输入的音量控制。
ACODEC_GET_ADCR_VOL :获取右声道输入的音量控制。
ACODEC_SET_PD_DACL :左声道输出的下电控制。
ACODEC_SET_PD_DACR :右声道输出的下电控制。
ACODEC_SET_PD_ADCL :左声道输入的下电控制。
ACODEC_SET_PD_ADCR :右声道输入的下电控制。
ACODEC_SET_PD_LINEINL :左声道LINEIN 输入的下电控制。
ACODEC_SET_PD_LINEINR :右声道LINEIN 输入的下电控制。
10.3.7.1. ACODEC_SOFT_RESET_CTRL¶
【描述】
将 Codec恢复为默认设置。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SOFT_RESET_CTRL);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SOFT_RESET_CTRL |
Ioctl号 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:- 头文件:acodec.h
【注意事项】
无。
【举例】
if (ioctl(Acodec_Fd, ACODEC_SOFT_RESET_CTRL))
{
printf("ioctl reset err!\n");
}
10.3.7.2. ACODEC_SET_INPUT_VOL¶
【描述】
输入总音量控制。把用户期望设置的增益配置到数字增益控制寄存器。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_INPUT_VOL, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_INPUT_VOL |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:- 头文件:acodec.h
【注意事项】
输入音量范围为[24~0] 。若输入值为0则为静音。
调节时左右声道同时生效。
【举例】
CVI_U32 vol = 20;
if (ioctl(Acodec_Fd, ACODEC_SET_INPUT_VOL, &vol))
{
printf("ioctl err!\n");
}
10.3.7.3. ACODEC_GET_INPUT_VOL¶
【描述】
获取输入总音量。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_GET_INPUT_VOL, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_GET_INPUT_VOL |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输出 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:- 头文件:acodec.h
【注意事项】
输入音量范围为[24~0] , 若输出值0则为静音。
【举例】
CVI_U32 vol;
if (ioctl(Acodec_Fd, ACODEC_SET_INPUT_VOL, &vol))
{
printf("ioctl err!\n");
}
10.3.7.4. ACODEC_SET_OUTPUT_VOL¶
【描述】
输出总音量控制。把用户期望设置的增益配置到数字增益控制寄存器。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_OUTPUT_VOL, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_OUTPUT_VOL |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:- 头文件:acodec.h
【注意事项】
输出音量范围为[32~0], 调节时左右声道同时生效。
【举例】
CVI_U32 vol = 7;
if (ioctl(Acodec_Fd, ACODEC_SET_OUTPUT_VOL, &vol))
{
printf("ioctl err!\n");
}
10.3.7.5. ACODEC_GET_OUTPUT_VOL¶
【描述】
获取输出总音量。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_GET_OUTPUT_VOL, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_GET_OUTPUT_VOL |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输出 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
输出音量范围为[32~0]。
【举例】
CVI_U32 vol;
if (ioctl(Acodec_Fd, ACODEC_SET_INPUT_VOL, &vol))
{
printf("ioctl err!\n");
}
10.3.7.6. ACODEC_SET_GAIN_MICL¶
【描述】
左声道MIC输入的模拟增益控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_GAIN_MICL, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_GAIN_MICL |
Ioctl号 |
输入 |
arg |
无符号整型指针描述 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
参数名称 |
输入/输出 |
---|---|
CVI_SUCESS |
成功 |
CVI_FAILURE |
失败 |
【需求】
头文件:acodec.h
【注意事项】
在使用无源音频信号输入时,需适当的增大模拟增益。
输入音量范围为[24~0], 若输入值为0则表示静音。
【举例】
CVI_U32 gain_mic;
gain_mic = 5;
if (ioctl(Acodec_Fd, ACODEC_SET_GAIN_MICL, &gain_mic))
{
printf("ioctl err!\n");
}
10.3.7.7. ACODEC_SET_GAIN_MICR¶
【描述】
右声道MIC输入的模拟增益控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_GAIN_MICR, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_GAIN_MICR |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
在使用无源音频信号输入时,需适当的增大模拟增益。
输入音量范围为[24~0], 若输入值为0则表示静音。
【举例】
CVI_U32 gain_mic;
gain_mic = 5;
if (ioctl(Acodec_Fd, ACODEC_SET_GAIN_MICR, &gain_mic))
{
printf("ioctl err!\n");
}
10.3.7.8. ACODEC_SET_DACL_VOL¶
【描述】
左声道输出音量控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_DACL_VOL, struct cvi_vol_ctrl *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_DACL_VOL |
Ioctl号 |
输入 |
arg |
cvi_vol_ctrl结构体指针描述 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
输出音量范围为[32~0]。若输入值vol_ctrl.vol_ctrl_mute为1则变成静音,vol_ctrl.vol_ctrl_mute为0则为撤销静音。
【举例】
struct cvi_vol_ctrl vol_ctrl;
vol_ctrl.vol_ctrl_mute = 0x0;
vol_ctrl.vol_ctrl = 0x05;
if (ioctl(Acodec_Fd, ACODEC_SET_DACL_VOL, &vol_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.9. ACODEC_SET_DACR_VOL¶
【描述】
右声道输出音量控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_DACR_VOL, struct cvi_vol_ctrl *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_DACR_VOL |
Ioctl号 |
输入 |
arg |
cvi_vol_ctrl结构体指针描述 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
输出音量范围为[32~0]。若输入值vol_ctrl.vol_ctrl_mute为1则变成静音,vol_ctrl.vol_ctrl_mute为0则为撤销静音。
【举例】
struct cvi_vol_ctrl vol_ctrl;
vol_ctrl.vol_ctrl_mute = 0x0;
vol_ctrl.vol_ctrl = 0x05;
if (ioctl(Acodec_Fd, ACODEC_SET_DACR_VOL, &vol_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.10. ACODEC_SET_ADCL_VOL¶
【描述】
左声道输入音量控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_ADCL_VOL, struct cvi_vol_ctrl *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_ADCL_VOL |
Ioctl号 |
输入 |
arg |
cvi_vol_ctrl结构体指针描述 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
Input 配置为MIC in时, 输入音量范围为[24~0]。若输入值vol_ctrl.vol_ctrl_mute为1则变成静音,vol_ctrl.vol_ctrl_mute为0则为撤销静音
【举例】
struct cvi_vol_ctrl vol_ctrl;
vol_ctrl.vol_ctrl_mute = 0x0;
vol_ctrl.vol_ctrl = 0x05;
if (ioctl(Acodec_Fd, ACODEC_SET_ADCL_VOL, &vol_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.11. ACODEC_SET_ADCR_VOL¶
【描述】
右声道输入音量控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_ADCR_VOL, struct cvi_vol_ctrl *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_ADCR_VOL |
Ioctl号 |
输入 |
arg |
cvi_vol_ctrl结构体指针描述 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
Input 配置为MIC in时, 输入音量范围为[24~0]。若输入值vol_ctrl.vol_ctrl_mute为1则变成静音,vol_ctrl.vol_ctrl_mute为0则为撤销静音
【举例】
struct cvi_vol_ctrl vol_ctrl;
vol_ctrl.vol_ctrl_mute = 0x0;
vol_ctrl.vol_ctrl = 0x05;
if (ioctl(Acodec_Fd, ACODEC_SET_ADCR_VOL, &vol_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.12. ACODEC_SET_MICL_MUTE¶
【描述】
左声道MIC输入静音控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_MICL_MUTE, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_MICL_MUTE |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
arg参数范围[0, 1],0表示撤销静音,1表示静音。
【举例】
CVI_U32 mic_mute;
mic_mute = 0;
if (ioctl(Acodec_Fd, ACODEC_SET_MICL_MUTE, &mic_mute))
{
printf("ioctl err!\n");
}
10.3.7.13. ACODEC_SET_MICR_MUTE¶
【描述】
右声道MIC输入静音控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_MICR_MUTE, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_MICR_MUTE |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
arg参数范围[0, 1],0表示撤销静音,1表示静音。
【举例】
CVI_U32 mic_mute;
mic_mute = 0;
if (ioctl(Acodec_Fd, ACODEC_SET_MICR_MUTE, &mic_mute))
{
printf("ioctl err!\n");
}
10.3.7.14. ACODEC_SET_DACL_MUTE¶
【描述】
左声道输出静音控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_DACL_MUTE, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_DACL_MUTE |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
arg参数范围[0, 1],0表示撤销静音,1表示静音。
【举例】
CVI_U32 mute;
mute = 0;
if (ioctl(Acodec_Fd, ACODEC_SET_DACL_MUTE, &mute))
{
printf("ioctl err!\n");
}
10.3.7.15. ACODEC_SET_DACR_MUTE¶
【描述】
右声道输出静音控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_DACR_MUTE, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_DACR_MUTE |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
arg参数范围[0, 1],0表示撤销静音,1表示静音。
【举例】
CVI_U32 mute;
mute = 0;
if (ioctl(Acodec_Fd, ACODEC_SET_DACR_MUTE, &mute))
{
printf("ioctl err!\n");
}
10.3.7.16. ACODEC_GET_GAIN_MICL¶
【描述】
获取模拟左声道MIC输入的增益。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_GET_GAIN_MICL, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_GET_GAIN_MICL |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输出 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
无。
【举例】
CVI_U32 gain_mic;
mute = 0;
if (ioctl(Acodec_Fd, ACODEC_GET_GAIN_MICL, &gain_mic))
{
printf("ioctl err!\n");
}
10.3.7.17. ACODEC_GET_GAIN_MICR¶
【描述】
获取模拟右声道MIC输入的增益。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_GET_GAIN_MICR, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_GET_GAIN_MICR |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输出 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
无。
【举例】
CVI_U32 gain_mic;
mute = 0;
if (ioctl(Acodec_Fd, ACODEC_GET_GAIN_MICR, &gain_mic))
{
printf("ioctl err!\n");
}
10.3.7.18. ACODEC_GET_DACL_VOL¶
【描述】
获取左声道输出的音量控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_GET_DACL_VOL, struct cvi_vol_ctrl *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_GET_DACL_VOL |
Ioctl号 |
输入 |
arg |
cvi_vol_ctrl结构体指针描述 |
输出 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
无。
【举例】
struct cvi_vol_ctrl vol_ctrl;
if (ioctl(Acodec_Fd, ACODEC_GET_DACL_VOL, & vol_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.19. ACODEC_GET_DACR_VOL¶
【描述】
获取右声道输出的音量控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_GET_DACR_VOL, struct cvi_vol_ctrl *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_GET_DACR_VOL |
Ioctl号 |
输入 |
arg |
cvi_vol_ctrl结构体指针描述 |
输出 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
无。
【举例】
struct cvi_vol_ctrl vol_ctrl;
if (ioctl(Acodec_Fd, ACODEC_GET_DACR_VOL, & vol_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.20. ACODEC_GET_ADCL_VOL¶
【描述】
获取左声道输入的音量控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_GET_ADCL_VOL, struct cvi_vol_ctrl *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_GET_ADCL_VOL |
Ioctl号 |
输入 |
arg |
cvi_vol_ctrl结构体指针描述 |
输出 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
无。
【举例】
struct cvi_vol_ctrl vol_ctrl;
if (ioctl(Acodec_Fd, ACODEC_GET_ADCL_VOL, & vol_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.21. ACODEC_GET_ADCR_VOL¶
【描述】
获取右声道输入的音量控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_GET_ADCR_VOL, struct cvi_vol_ctrl *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_GET_ADCR_VOL |
Ioctl号 |
输入 |
arg |
cvi_vol_ctrl结构体指针描述 |
输出 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
无。
【举例】
struct cvi_vol_ctrl vol_ctrl;
if (ioctl(Acodec_Fd, ACODEC_GET_ADCR_VOL, & vol_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.22. ACODEC_SET_PD_DACL¶
【描述】
左声道输出的下电控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_PD_DACL, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_PD_DACL |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
不使用DACL时, 可以调用此接口,将DACL下电。arg参数范围[0, 1]。0 表示上电,1表示下电。
【举例】
CVI_U32 pd_ctrl;
pd_ctrl = 0x1;
if (ioctl(Acodec_Fd, ACODEC_SET_PD_DACL, &pd_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.23. ACODEC_SET_PD_DACR¶
【描述】
右声道输出的下电控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_PD_DACR, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_PD_DACR |
Ioctl号 |
输入 |
arg |
无符号整型指针描述 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
不使用DACR时, 可以调用此接口,将DACR下电。arg参数范围[0, 1]。0 表示上电,1表示下电。
【举例】
CVI_U32 pd_ctrl;
pd_ctrl = 0x1;
if (ioctl(Acodec_Fd, ACODEC_SET_PD_DACR, &pd_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.24. ACODEC_SET_PD_ADCL¶
【描述】
左声道输入的下电控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_PD_ADCL, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_PD_ADCL |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
不使用ADCL时, 可以调用此接口,将ADCL下电。arg参数范围[0, 1]。0 表示上电,1表示下电。
【举例】
CVI_U32 pd_ctrl;
pd_ctrl = 0x1;
if (ioctl(Acodec_Fd, ACODEC_SET_PD_ADCL, &pd_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.25. ACODEC_SET_PD_ADCR¶
【描述】
右声道输入的下电控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_PD_ADCR, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_PD_ADCR |
Ioctl号 |
输入 |
arg |
无符号整型指针描述 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
不使用ADCR时, 可以调用此接口,将ADCR下电。arg参数范围[0, 1]。0 表示上电,1表示下电。
【举例】
CVI_U32 pd_ctrl;
pd_ctrl = 0x1;
if (ioctl(Acodec_Fd, ACODEC_SET_PD_ADCR, &pd_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.26. ACODEC_SET_PD_LINEINL¶
【描述】
左声道LINEIN输入的下电控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_PD_LINEINL, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_PD_LINEINL |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
不使用LINEINL时, 可以调用此接口,将LINEINL下电。arg参数范围[0, 1]。0 表示上电,1表示下电。
【举例】
CVI_U32 pd_ctrl;
pd_ctrl = 0x1;
if (ioctl(Acodec_Fd, ACODEC_SET_PD_LINEINL, &pd_ctrl))
{
printf("ioctl err!\n");
}
10.3.7.27. ACODEC_SET_PD_LINEINR¶
【描述】
右声道LINEIN输入的下电控制。
【语法】
CVI_S32 ioctl (CVI_S32 fd, ACODEC_SET_PD_LINEINR, CVI_U32 *arg);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
fd |
Audio Codec 设备文件描述 |
输入 |
ACODEC_SET_PD_LINEINR |
Ioctl号 |
输入 |
arg |
无符号整型指针 |
输入 |
【返回值】
参数名称 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,其值为 错误码 。 |
【需求】
头文件:acodec.h
【注意事项】
不使用LINEINR时, 可以调用此接口,将LINEINR下电。arg参数范围[0, 1]。0 表示上电,1表示下电。
【举例】
CVI_U32 pd_ctrl;
pd_ctrl = 0x1;
if (ioctl(Acodec_Fd, ACODEC_SET_PD_LINEINR, &pd_ctrl))
{
printf("ioctl err!\n");
}
10.3.8. 重采样¶
Resampler 模块提供单独的重采样处理。当客户需要在上层对数据重采样时,可以使用该模块。
以下为相关API及细部说明:
CVI_Resampler_Create :创建一个重采样模块。
CVI_Resampler_Process :重采样模块数据处理。
CVI_Resampler_Destroy :销毁重采样模块。
CVI_Resampler_GetMaxOutputNum :计算重采样最大输出数据。
10.3.8.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.8.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.8.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.8.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
【注意事项】
无。
【举例】
无。