10.4. 数据类型¶
10.4.1. 音频输入/输出¶
音频输入/输出 相关数据类型、数据结构定义如下:
AI_DEV_MAX_NUM :定义音频输入设备的最大数。
AO_DEV_MAX_NUM :定义音频输出设备的最大数。
CVI_AUD_MAX_CHANNEL_NUM :定义音频输出设备的最大通道数。
AI_TALKVQE_MASK_AEC :Talk Vqe AEC 功能的 Mask。
AI_TALKVQE_MASK_AGC :Talk Vqe AGC 功能的 Mask。
AI_TALKVQE_MASK_ANR :Talk Vqe ANR 功能的 Mask。
AI_RECORDVQE_MASK_AGC :Record Vqe AGC 功能的 Mask。
MAX_AUDIO_FILE_PATH_LEN :音频保存文件的路径的最大长度限制。
MAX_AUDIO_FILE_NAME_LEN :音频保存文件的名称的最大长度限制。
CVI_MAX_AI_DEVICE_ID_NUM :定义AI(音频输入)设备ID的最大数量限制。
CVI_MAX_AI_CARD_ID_NUM :定义AI(音频输入)卡ID的最大数量限制。
CVI_MAX_AO_DEVICE_ID_NUM :定义AO(音频输出)设备ID的最大数量限制。
CVI_MAX_AO_CARD_ID_NUM :定义AO(音频输出)卡ID的最大数量限制。
CVI_MAX_AUDIO_FRAME_NUM :定义音频帧的最大数量限制。
CVI_AUD_MAX_VOICE_POINT_NUM :定义每帧语音编码的最大样本数。
CVI_AUD_MAX_AUDIO_POINT_NUM :定义每帧音频编码的最大样本数。
CVI_MAX_AUDIO_STREAM_LEN :定义音频流的最大长度。
MAX_AUDIO_VQE_CUSTOMIZE_NAME :定义音频声音质量增强(VQE)自定义名称的最大长度限制。
AUDIO_CLKSEL_E :定义音频时钟源。
AUDIO_SAMPLE_RATE_E :定义音频采样率。
AUDIO_BIT_WIDTH_E :定义音频采样精度。
AIO_MODE_E :定义音频输入/输出 工作模式。
AIO_I2STYPE_E :定义设备 I2S 对接设备类型。
AUDIO_SOUND_MODE_E :定义音频声道模式。
AUDIO_MOD_PARAM_S :定义音频模块参数结构体。
AIO_ATTR_S :定义音频输入/输出 设备属性结构体。
AI_CHN_PARAM_S :定义通道参数结构体。
AUDIO_FRAME_S :定义音频帧数据结构体。
AEC_FRAME_S :定义回声抵消参考帧信息结构体。
AUDIO_AGC_CONFIG_S :定义音频自动增益控制配置信息结构体。
AI_AEC_CONFIG_S :定义音频回声抵消配置信息结构体。
AUDIO_ANR_CONFIG_S :定义音频语音降噪功能配置信息结构体。
AUDIO_DELAY_CONFIG_S: 定义音频信号延迟结构体。
VQE_WORKSTATE_E :定义声音质量增强的工作模式。
VQE_RECORD_TYPE :定义录音类型。
AI_TALKVQE_CONFIG_S :定义音频输入声音质量增强(Talk)配置信息结构 体。
AI_RECORDVQE_CONFIG_S :定义音频输入声音质量增强(Record)配置信息 结构体。
AUDIO_STREAM_S :定义音频码流结构体。
AO_CHN_STATE_S :音频输出通道的数据区块状态结构体。
AUDIO_TRACK_MODE_E :音频设备声道模式类型。
AUDIO_FADE_RATE_E :音频设备淡入淡出速率类型。
AUDIO_FADE_S :音频设备淡入淡出设置结构体。
G726_BPS_E :定义 G.726 编解码协议速率。
ADPCM_TYPE_E :定义 ADPCM 编解码协议类型。
AUDIO_SAVE_FILE_INFO_S :定义音频保存文件功能配置信息结构体。
AUDIO_FILE_STATUS_S :定义音频文件保存状态结构体。
VQE_MODULE_CONFIG_S :定义声音质量增强及重采样模块配置信息结构体。
AUDIO_VQE_REGISTER_S :定义声音质量增强及重采样模块注册结构体。
CVI_HPF_CONFIG_S :定义高通滤波器(High-Pass Filter, HPF)的配置参数。
CVI_EQ_CONFIG_S :定义均衡器(EQ)的配置参数。
CVI_DRC_LIMITER_PARAM :定义动态范围压缩器(DRC)限幅器的配置参数。
CVI_DRC_EXPANDER_PARAM :定义动态范围压缩器(DRC)扩展器的配置参数。
CVI_DRC_COMPRESSOR_PARAM :定义动态范围压缩器(DRC)压缩器的配置参数。
AUDIO_SPK_EQ_CONFIG_S :定义扬声器均衡器(EQ)的配置参数。
AO_VQE_CONFIG_S :定义音频输出(AO)语音质量增强(VQE)的配置参数。
HPF_FILTER_TYPE :定义高通滤波器(HPF)类型的枚举。
AUDIO_SPK_AGC_CONFIG_S :定义扬声器自动增益控制(AGC)的配置参数。
以下功能目前不支持:
AI_TALKVQE_MASK_HPF:Talk Vqe HPF 功能的 Mask。
AI_TALKVQE_MASK_EQ:Talk Vqe EQ 功能的 Mask。
AI_RECORDVQE_MASK_HPF:Record Vqe HPF 功能的 Mask。
AI_RECORDVQE_MASK_RNR:Record Vqe RNR 功能的 Mask。
AI_RECORDVQE_MASK_HDR:Record Vqe HDR 功能的 Mask。
AI_RECORDVQE_MASK_DRC:Record Vqe DRC 功能的 Mask。
AI_RECORDVQE_MASK_EQ:Record Vqe EQ 功能的 Mask。
AO_VQE_MASK_HPF:AO Vqe HPF 功能的 Mask。
10.4.1.1. AI_DEV_MAX_NUM¶
【说明】
定义音频输入设备的最大个数。
【定义】
#define AI_DEV_MAX_NUM 1
【注意事项】
已弃用。
【相关数据类型及接口】
无。
10.4.1.2. AO_DEV_MAX_NUM¶
【说明】
定义音频输出设备的最大个数。
【定义】
#define AO_DEV_MAX_NUM 1
【注意事项】
已弃用。
【相关数据类型及接口】
无。
10.4.1.3. CVI_AUD_MAX_CHANNEL_NUM¶
【说明】
定义音频输入/输出设备的最大通道个数。
【定义】
#define CVI_AUD_MAX_CHANNEL_NUM 8
【注意事项】
音频设备最大通道数用户可通过参数设置AIO_ATTR_S stAttr;stAttr.u32ChnCnt设置,但最大不超过 CVI_AUD_MAX_CHANNEL_NUM
【相关数据类型及接口】
无。
10.4.1.4. AI_TALKVQE_MASK_AEC¶
【说明】
定义 Talk Vqe AEC 功能的 Mask。
【定义】
#define AI_TALKVQE_MASK_AEC 0x3
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.5. AI_TALKVQE_MASK_AGC¶
【说明】
定义 Talk Vqe AGC 功能的 Mask。
【定义】
#define AI_TALKVQE_MASK_AGC 0x8
【注意事项】
无。
【相关数据类型及接口】
赋值给 AI_TALKVQE_CONFIG_S 结构体成员 u32OpenMask 表示开启 AGC 功能。
如 u32OpenMask = AI_TALKVQE_MASK_AEC | AI_TALKVQE_MASK_AGC;表示开启 AEC 和 AGC 功能。
10.4.1.6. AI_TALKVQE_MASK_ANR¶
【说明】
定义 Talk Vqe ANR 功能的 Mask。
【定义】
#define AI_TALKVQE_MASK_ANR 0x4
【注意事项】
无。
【相关数据类型及接口】
赋值给 AI_TALKVQE_CONFIG_S 结构体成员 u32OpenMask 表示开启 ANR 功 能。
如 u32OpenMask = AI_TALKVQE_MASK_AEC | AI_TALKVQE_MASK_ANR;表示开启 AEC 和 ANR 功能。
10.4.1.7. AI_RECORDVQE_MASK_AGC¶
【说明】
定义 Record Vqe AGC 功能的 Mask。
【定义】
#define AI_RECORDVQE_MASK_AGC 0x20
【注意事项】
无。
【相关数据类型及接口】
赋值给 AI_RECORDVQE_CONFIG_S 结构体成员 u32OpenMask 表示开启 AGC 功能。
如 u32OpenMask =AI_RECORDVQE_MASK_HPF | AI_RECORDVQE_MASK_AGC;表 示开启 HPF 和 AGC 功能。
10.4.1.8. MAX_AUDIO_FILE_PATH_LEN¶
【说明】
定义音频保存文件的路径的最大长度限制。
【定义】
#define MAX_AUDIO_FILE_PATH_LEN 256
【注意事项】
无。
【相关数据类型及接口】
AUDIO_SAVE_FILE_INFO_S
10.4.1.9. MAX_AUDIO_FILE_NAME_LEN¶
【说明】
定义音频保存文件的名称的最大长度限制。
【定义】
#define MAX_AUDIO_FILE_NAME_LEN 256
【注意事项】
无。
【相关数据类型及接口】
AUDIO_SAVE_FILE_INFO_S
10.4.1.10. CVI_MAX_AI_DEVICE_ID_NUM¶
【说明】
定义AI(音频输入)设备ID的最大数量限制。
【定义】
#define CVI_MAX_AI_DEVICE_ID_NUM 5 /* Maximum number of AI device ID */
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.11. CVI_MAX_AI_CARD_ID_NUM¶
【说明】
定义AI(音频输入)卡ID的最大数量限制。
【定义】
#define CVI_MAX_AI_CARD_ID_NUM 5 /* Maximum number of AI card ID */
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.12. CVI_MAX_AO_DEVICE_ID_NUM¶
【说明】
定义AO(音频输出)设备ID的最大数量限制。
【定义】
#define CVI_MAX_AO_DEVICE_ID_NUM 5 /* Maximum number of AO device ID */
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.13. CVI_MAX_AO_CARD_ID_NUM¶
【说明】
定义AO(音频输出)卡ID的最大数量限制。
【定义】
#define CVI_MAX_AO_CARD_ID_NUM 5 /* Maximum number of AO card ID */
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.14. CVI_MAX_AUDIO_FRAME_NUM¶
【说明】
定义音频帧的最大数量限制。
【定义】
#define CVI_MAX_AUDIO_FRAME_NUM 300 /* max count of audio frame in Buffer */
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.15. CVI_AUD_MAX_VOICE_POINT_NUM¶
【说明】
定义每帧语音编码的最大样本数。
【定义】
#define CVI_AUD_MAX_VOICE_POINT_NUM 1280 /* max sample per frame for voice encode */
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.16. CVI_AUD_MAX_AUDIO_POINT_NUM¶
【说明】
定义每帧音频编码的最大样本数。
【定义】
#define CVI_AUD_MAX_AUDIO_POINT_NUM 2048 /* max sample per frame for all encoder */
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.17. CVI_MAX_AUDIO_STREAM_LEN¶
【说明】
定义音频流的最大长度。
【定义】
#define CVI_MAX_AUDIO_STREAM_LEN 8192 /* Maximum length of audio stream */
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.18. MAX_AUDIO_VQE_CUSTOMIZE_NAME¶
【说明】
定义音频VQE(语音质量增强)自定义名称的最大长度。
【定义】
#define MAX_AUDIO_VQE_CUSTOMIZE_NAME 64 /* Maximum length of VQE customize name */
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.19. AUDIO_CLKSEL_E¶
【说明】
定义音频时钟源。
【定义】
typedef enum _AUDIO_CLKSEL_E
{ AUDIO_CLKSEL_BASE = 0, /*<Audio base clk. */
AUDIO_CLKSEL_SPARE, /*<Audio spare clk. */
AUDIO_CLKSEL_BUTT,
} AUDIO_CLKSEL_E;
【成员】
无。
【注意事项】
Cvitek 使用者无需对此时钟下设定。
【相关数据类型及接口】
10.4.1.20. AUDIO_SAMPLE_RATE_E¶
【说明】
定义音频采样率。
【定义】
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;
【成员】
成员名称 |
描述 |
---|---|
AUDIO_SAMPLE_RATE_8000 |
8kHz 采样率 |
AUDIO_SAMPLE_RATE_11025 |
11.025kHz 采样率 |
AUDIO_SAMPLE_RATE_16000 |
16kHz 采样率 |
AUDIO_SAMPLE_RATE_22050 |
22.050kHz 采样率 |
AUDIO_SAMPLE_RATE_24000 |
24kHz 采样率 |
AUDIO_SAMPLE_RATE_32000 |
32kHz 采样率 |
AUDIO_SAMPLE_RATE_44100 |
44.1kHz 采样率 |
AUDIO_SAMPLE_RATE_48000 |
48kHz 采样率 |
AUDIO_SAMPLE_RATE_64000 |
64kHz 采样率 |
【注意事项】
无。
【相关数据类型及接口】
10.4.1.21. AUDIO_BIT_WIDTH_E¶
【说明】
定义音频采样精度。
【定义】
typedef enum _AUDIO_BIT_WIDTH_E {
AUDIO_BIT_WIDTH_8 =0, /* 8bit width */
AUDIO_BIT_WIDTH_16 =1, /* 16bit width */
AUDIO_BIT_WIDTH_24 =2, /* 24bit width */
AUDIO_BIT_WIDTH_32 =3, /* 32bit width */
AUDIO_BIT_WIDTH_BUTT, /* boundary check */
} AUDIO_BIT_WIDTH_E;
【成员】
成员名称 |
描述 |
---|---|
AUDIO_BIT_WIDTH_8 |
采样精度为 8bit 位宽 |
AUDIO_BIT_WIDTH_16 |
采样精度为 16bit 位宽 |
AUDIO_BIT_WIDTH_24 |
采样精度为 24bit 位宽 |
AUDIO_BIT_WIDTH_32 |
采样精度为 32bit 位宽 |
【注意事项】
无。
【相关数据类型及接口】
10.4.1.22. AIO_MODE_E¶
【说明】
定义音频输入/输出 设备工作模式。
【定义】
typedef enum _AIO_MODE_E {
AIO_MODE_I2S_MASTER = 0, /* AIO I2S master mode */
AIO_MODE_I2S_SLAVE, /* AIO I2S slave mode */
AIO_MODE_PCM_SLAVE_STD, /* AIO PCM slave standard mode */
AIO_MODE_PCM_SLAVE_NSTD, /* AIO PCM slave non-standard mode */
AIO_MODE_PCM_MASTER_STD, /* AIO PCM master standard mode */
AIO_MODE_PCM_MASTER_NSTD, /* AIO PCM master non-standard mode */
AIO_MODE_BUTT /* boundary check */
}AIO_MODE_E;
【成员】
成员名称 |
描述 |
---|---|
AIO_MODE_I2S_MASTER |
I2S 主模式 |
AIO_MODE_I2S_SLAVE |
I2S 从模式 |
AIO_MODE_PCM_SLAVE_STD |
PCM 从模式(标准协议) |
AIO_MODE_PCM_SLAVE_NSTD |
PCM 从模式(自定义协议) |
AIO_MODE_PCM_MASTER_STD |
PCM 主模式(标准协议) |
AIO_MODE_PCM_MASTER_NSTD |
PCM 主模式(自定义协议) |
【注意事项】
Cvitek内建,只支持 I2S 主模式。
【相关数据类型及接口】
10.4.1.23. AIO_I2STYPE_E¶
【说明】
定义设备 I2S 对接设备类型。
【定义】
typedef enum {
AIO_I2STYPE_INNERCODEC = 0, /* AIO I2S connect inner audio CODEC */
AIO_I2STYPE_INNERHDMI, /* AIO I2S connect Inner HDMI */
AIO_I2STYPE_EXTERN, /* AIO I2S connect extern hardware */
} AIO_I2STYPE_E;
【成员】
成员名称 |
描述 |
---|---|
AIO_I2STYPE_INNERCODEC |
对接内置 CODEC |
AIO_I2STYPE_INNERHDMI |
对接内置 HDMI |
AIO_I2STYPE_EXTERN |
对接外接设备 |
【注意事项】
Cvitek 仅支援AIO_I2STYPE_INNERCODEC 对接内置 CODEC。
【相关数据类型及接口】
10.4.1.24. AUDIO_SOUND_MODE_E¶
【说明】
定义音频声道模式。
【定义】
typedef enum _AIO_SOUND_MODE_E {
AUDIO_SOUND_MODE_MONO = 0, /*mono*/
AUDIO_SOUND_MODE_STEREO = 1, /*stereo only support interlace mode*/
AUDIO_SOUND_MODE_BUTT /*boundary check*/
} AUDIO_SOUND_MODE_E;
【成员】
成员名称 |
描述 |
---|---|
AUDIO_SOUND_MODE_MONO |
单声道 |
AUDIO_SOUND_MODE_STEREO |
双声道 |
【注意事项】
左声道对应 通道 0,右声道对应通道 1。
对 Audio Input 来说,单声道默认从左声道输入,如果需要配置为右声道输入,
仅打开右声道并处理。
打开左右声道,按左声道处理,使用 CVI_AI_SetTrackMode 配置 Audio Input 声道模式为“AUDIO_TRACK_EXCHANGE”。
对 AO 来说,单声道默认从左声道输出,如果需要配置为右声道输出,可以考虑 两种方法:
仅打开右声道并处理。
打开左右声道,按左声道处理,使用 CVI_AO_SetTrackMode 配置 AO 声道模式为“AUDIO_TRACK_EXCHANGE”。
对于双声道模式,只应对左声道(即编号小于设备属性中通道数 u32ChnCnt 一半 的通道)进行操作,SDK 内部会自动对右声道也进行相应的操作。
【相关数据类型及接口】
10.4.1.25. AUDIO_MOD_PARAM_S¶
【说明】
定义音频模块参数结构体。
【定义】
typedef struct _AUDIO_MOD_PARAM_S {
AUDIO_CLKSEL_E enClkSel; /* Audio clock select */
} AUDIO_MOD_PARAM_S;
【成员】
enClkSel 音频时钟源选择。 请参见 AUDIO_CLKSEL_E。
【注意事项】
Cvitek无须针对CLK做特殊设定
【相关数据类型及接口】
无。
10.4.1.26. AIO_ATTR_S¶
【说明】
定义音频输入/输出 设备属性结构体。
【定义】
typedef struct _AIO_ATTR_S {
AUDIO_SAMPLE_RATE_E enSamplerate; /* sample rate */
AUDIO_BIT_WIDTH_E enBitwidth; /* bitwidth */
AIO_MODE_E enWorkmode; /* master or slave mode */
AUDIO_SOUND_MODE_E enSoundmode; /* momo or steror */
CVI_U32 u32EXFlag;
/* expand 8bit to 16bit,use AI_EXPAND(only valid for AI 8bit),*/
/*use AI_CUT(only valid for extern Codec for 24bit) */
CVI_U32 u32FrmNum;
/* frame num in buf[2,CVI_MAX_AUDIO_FRAME_NUM] */
CVI_U32 u32PtNumPerFrm;
/* point num per frame (80/160/240/320/480/1024/2048) */
/*(ADPCM IMA should add 1 point, AMR only support 160) */
CVI_U32 u32ChnCnt; /* channel number on FS, valid value:1/2/4/8 */
CVI_U32 u32ClkSel; /* 0: AI and AO clock is separate*/
/* 1: AI and AO clock is inseparate, AI use AO's clock*/
AIO_I2STYPE_E enI2sType; /* i2s type */
} AIO_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
enSamplerate |
音频采样率(从模式下,此参数不起作用)。静态属性。 |
enBitwidth |
音频采样精度(从模式下,此参数必须和音频AD/DA 的采样精度匹配)。 静态属性。 |
enWorkmode |
音频输入/输出工作模式。静态属性。 |
enSoundmode |
音频声道模式。静态属性。 |
u32EXFlag |
取值范围:{0, 1, 2}。 0:不扩展。 1:扩展成 16 位,8bit 到 16bit 扩展标志(只对 Audio Input 采样精度为 8bit 时有效)。 2:24 位裁剪成 16 位,在外置Codec 的场景下可能用到。 静态属性,保留参数,一般设置成1 即可。 |
u32FrmNum |
区块帧数目。 |
u32PtNumPerFrm |
每帧的采样点个数。 取值范围:G711、G726、ADPCM_DVI4编码时取值为 160、320、480; |
u32ChnCnt |
支持的通道数目。 |
u32ClkSel |
AI和AO是否使用相同的时钟源。 |
enI2sType |
配置设备 I2S 类型,Cvitek仅支持主模式。 |
【注意事项】
每帧的采样点个数 u32PtNumPerFrm 和采样率 enSamplerate 的取值决定了硬件产生中断 的频率,频率过高会影响系统的性能,跟其他业务也会相互影响,
建议这两个参数的取 值满足算式:(u32PtNumPerFrm*1000)/ enSamplerate>=10,
比如在采样率为 16000Hz 时, 建议设置采样点个数大于或者等于 160。
【相关数据类型及接口】
CVI_AI_SetPubAttr 和 CVI_AO_SetPubAttr
10.4.1.27. AI_CHN_PARAM_S¶
【说明】
定义通道参数结构体。
【定义】
typedef struct _AI_CHN_PARAM_S {
CVI_U32 u32UsrFrmDepth; /* user frame depth */
} AI_CHN_PARAM_S;
【成员】
u32UsrFrmDepth: 音频帧区块深度。
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.28. AUDIO_FRAME_S¶
【说明】
定义音频帧结构体。
【定义】
typedef struct _AUDIO_FRAME_S {
AUDIO_BIT_WIDTH_E enBitwidth;/*audio frame bitwidth*/
AUDIO_SOUND_MODE_E enSoundmode;/*audio frame momo or stereo mode*/
CVI_U8 * u64VirAddr[2]; /*audio frame vir addr*/
CVI_U64 u64PhyAddr[2]; /*audio frame phy addr*/
CVI_U64 u64TimeStamp; /*audio frame timestamp*/
CVI_U32 u32Seq; /*audio frame seq*/
CVI_U32 u32Len; /*data length per channel in frame*/
CVI_U32 u32PoolId[2]; /*audio frame pool id*/
} AUDIO_FRAME_S;
【成员】
成员名称 |
描述 |
---|---|
enBitwidth |
音频采样精度。 |
enSoundmode |
音频声道模式。 |
u64VirAddr [2] |
音频帧数据虚拟地址。 |
u64PhyAddr[2] |
音频帧数据物理地址。 目前不支持 |
u64TimeStamp |
音频帧时间戳。 以 μs 为单位。 |
u32Seq |
音频帧序号。 |
u32Len |
音频帧长度:单一通道总取样量。 samples(单位取样量) 为单位。 1 sample = 2 bytes。 Ex. AIO_ATTR_S 参数设置 u32FrmNum = 320, u32ChnCnt = 2. 则*u32Len = 320(samples/channel). u64VirAddr [0] buffer 内含有bytes数目应为 (u32Len x u32ChnCnt x 2) | |
u32PoolId[2] |
音频帧区块池 ID。 |
【注意事项】
u32Len(音频帧长度)指单个声道的数据长度。
u64VirAddr [0],长度为 bytes : (u32Len x bytes_per_sample);
单声道默认为左声道,资料排列为[左,左,左,左,左,….] 。
立体声数据按左 右声道, 资料排列为[左,右,左,右,左,右….] 。
(注:左代表左声道单一sample, 右左声道单一sample)
u64VirAddr [1],无存放数据,可供客制化使用 。
【相关数据类型及接口】
无。
10.4.1.29. AEC_FRAME_S¶
【说明】
定义音频回声抵消参考帧信息结构体。
【定义】
typedef struct _AEC_FRAME_S {
AUDIO_FRAME_S stRefFrame; /* aec reference audio frame */
CVI_BOOL bValid; /* whether frame is valid */
CVI_BOOL bSysBind; /* whether is sysbind */
}AEC_FRAME_S;
【成员】
成员名称 |
描述 |
---|---|
stRefFrame |
回声抵消参考帧结构体。 |
bValid |
参考帧有效的标志。 取值范围: CVI_TRUE:参考帧有效。 CVI_FALSE:参考帧无效, 无效时不能使用此参考帧进行回声抵消。 |
bSysBind |
Audio Input 和 AENC 是否系统绑定。 |
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.30. AUDIO_AGC_CONFIG_S¶
【说明】
定义音频自动增益控制配置信息结构体。
【定义】
typedef struct _AUDIO_AGC_CONFIG_S {
/* the max boost gain for AGC release processing, [0, 3] */
/* para_obj.para_agc_max_gain = 1; */
CVI_S8 para_agc_max_gain;
/* the gain level of target high of AGC, [0, 36] */
/* para_obj.para_agc_target_high = 2; */
CVI_S8 para_agc_target_high;
/* the gain level of target low of AGC, [0, 36] */
/* para_obj.para_agc_target_low = 6; */
CVI_S8 para_agc_target_low;
/* speech-activated AGC functionality, [0, 1] */
/* para_obj.para_agc_vad_enable = 1; */
CVI_BOOL para_agc_vad_ena;
} AUDIO_AGC_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
para_agc_max_gain |
信号可以被放大的最大增益。 |
para_agc_target_high: |
AGC将会去达到的“Target High”水平。 |
para_agc_target_low |
AGC将会去达到的“Target Low”水平。 |
para_agc_vad_enable |
Speech-activated AGC功能应用了来自NR的Speech VAD以避免放大背景噪声。 建议在处于高SNR的环境中开启此功能,而当处于中/低SNR环境中最好 关闭此功能以获得较佳的语音品质 |
【注意事项】
无。
【相关数据类型及接口】
AI_VQE_CONFIG_S
10.4.1.31. AI_AEC_CONFIG_S¶
【说明】
定义音频回声抵消配置信息结构体。
【定义】
typedef struct _AI_AEC_CONFIG_S {
CVI_U16 para_aec_filter_len; /* the filter length of AEC, [1, 13] */
CVI_U16 para_aes_std_thrd; /* the threshold of STD/DTD, [0, 39] */
CVI_U16 para_aes_supp_coeff; /* the residual echo suppression level in AES, [0, 100] */
} AI_AEC_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
para_aex_filter_len |
自适应滤波器的长度 |
para_aes_std_thrd |
残留回声判断阈值 |
para_aes_supp_coeff |
残留回声抑制力道 |
【注意事项】
当用户模式开启时,其他参数才生效,
否则按照 AI_VQE_CONFIG_S/ AI_TALKVQE_CONFIG_S 中的工作模式 enWorkstate 对应的默认值来配置。
配置参数时,只有在用户模式开启时,才会对高级参数做正确性检查,只有正确 的高级参数才能配置成功。
【相关数据类型及接口】
AI_VQE_CONFIG_S
10.4.1.32. AUDIO_ANR_CONFIG_S¶
【说明】
定义音频语音降噪功能配置信息结构体。
【定义】
typedef struct _AUDIO_ANR_CONFIG_S {
/* the coefficient of NR priori SNR tracking, [0, 20] */
/* para_obj.para_nr_snr_coeff = 15; */
CVI_U16 para_nr_snr_coeff;
/* the coefficient of NR noise tracking, [0, 14] */
/* para_obj.para_nr_noise_coeff = 2; */
//CVI_S8 para_nr_noise_coeff;
CVI_U16 para_nr_init_sile_time;
} AUDIO_ANR_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
para_nr_snr_coeff |
Signal-to-Noise Ratio(SNR)跟踪系数。 如果将其设置为较大的值,则NR会具有较高的降噪能力,但语音信号可能会较容易失真; 如果选择较小的值,则NR将抑制较少的噪声信号,但会具有较好的语音品质性能。 |
para_nr_noise_coeff |
噪声跟踪系数。 此参数决定平稳噪声的跟踪速度。 [0 ~ 14] 0: 最慢的噪音追踪速度 14: 最快的噪音追踪速度 |
【注意事项】
无。
【相关数据类型及接口】
AI_VQE_CONFIG_S
10.4.1.33. AUDIO_DELAY_CONFIG_S¶
【说明】
定义音频信号延迟结构体。
【定义】
typedef struct _AUDIO_DELAY_CONFIG_S {
/* the initial filter length of linear AEC to support up for echo tail, [1, 13] */
CVI_U16 para_aec_init_filter_len;
/* the digital gain target, [1, 12] */
CVI_U16 para_dg_target;
/* the delay sample for ref signal, [1, 3000] */
CVI_U16 para_delay_sample;
} AUDIO_DELAY_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
para_aec_init_filter_len |
自适应滤波器的长度 |
para_dg_target |
Digital Gain。范围[1 – 12] 此功能有助于降低residual echo及 residual stationary noise. |
para_delay_sample |
用于延迟参考信号 范围[1-3000]可使 AEC/AES加速收敛一开始出现的回声。 |
【注意事项】
无。
【相关数据类型及接口】
10.4.1.34. VQE_WORKSTATE_E¶
【说明】
定义声音质量增强的工作模式。
【定义】
typedef enum _VQE_WORKSTATE_E {
VQE_WORKSTATE_COMMON = 0,
/* common environment, Applicable to the family of voice calls. */
VQE_WORKSTATE_MUSIC = 1,
/* music environment , Applicable to the family of music environment. */
VQE_WORKSTATE_NOISY = 2,
/* noisy environment , Applicable to the noisy voice calls. */
} VQE_WORKSTATE_E;
【成员】
成员名称 |
描述 |
---|---|
VQE_WORKSTATE_COMMON |
一般模式。 |
VQE_WORKSTATE_MUSIC |
音乐模式。 |
VQE_WORKSTATE_NOISY |
噪声模式。 |
【注意事项】
无。
【相关数据类型及接口】
AI_VQE_CONFIG_S
10.4.1.35. VQE_RECORD_TYPE¶
【说明】
定义录音类型。
【定义】
typedef enum _VQE_RECORD_TYPE {
VQE_RECORD_NORMAL = 0,
/*<double micphone recording. */
VQE_RECORD_BUTT, /* Used for boundary checking */
} VQE_RECORD_TYPE;
【成员】
VQE_RECORD_NORMAL: 标准类型。
【注意事项】
Cvitek仅支持talk VQE,record VQE除非客制化,目前无使用。
【相关数据类型及接口】
10.4.1.36. AI_TALKVQE_CONFIG_S¶
【说明】
定义音频输入声音质量增强(Talk)配置信息结构体。
【定义】
typedef struct _AI_TALKVQE_CONFIG_S {
CVI_U16 para_client_config; /* Client-specific configuration parameter */
CVI_U32 u32OpenMask; /* VQE feature enable mask */
CVI_S32 s32WorkSampleRate; /* Sample Rate: 8KHz/16KHz. Default: 8KHz */
// MIC IN VQE settings
AI_AEC_CONFIG_S stAecCfg; /* Acoustic Echo Cancellation configuration */
AUDIO_ANR_CONFIG_S stAnrCfg; /* Automatic Noise Reduction configuration */
AUDIO_AGC_CONFIG_S stAgcCfg; /* Automatic Gain Control configuration */
AUDIO_DELAY_CONFIG_S stAecDelayCfg; /* AEC delay configuration */
CVI_S32 para_notch_freq; /* User can ignore this flag */
CVI_CHAR customize[MAX_AUDIO_VQE_CUSTOMIZE_NAME]; /* Customization name */
} AI_TALKVQE_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
para_client_config |
客户端参数配置 |
u32OpenMask |
Talk Vqe 的各功能使能的 Mask 值。 |
s32WorkSampleRate |
工作采样频率。 该参数为内部功能算法工作采样率。 取值范围:8KHz/16KHz。 默认值为8KHz。 |
stAecCfg |
回声抵消功能相关配置信息。 |
stAnrCfg |
语音降噪功能相关配置信息。 |
stAgcCfg |
自动增益控制相关配置信息。 |
stAecDelayCfg |
信号延迟相关配置信息 |
para_notch_freq |
客制化频率消除。 |
customize |
客制化参数选择 |
【注意事项】
Cvitek VQE仅支持AGC/ANR/AEC 其余不支持
例如:RNR/EQ 相关数据设入后,并不会有效果
【相关数据类型及接口】
无。
10.4.1.37. AI_RECORDVQE_CONFIG_S¶
【说明】
定义音频输入声音质量增强(Record)配置信息结构体。
【定义】
typedef struct _AI_RECORDVQE_CONFIG_S {
CVI_U32 u32OpenMask; /* Bitmask for enabling/disabling features */
CVI_S32 s32WorkSampleRate; /* Sample Rate: 16KHz/48KHz */
/* Sample Rate:16KHz/48KHz*/
CVI_S32 s32FrameSample; /* Number of samples per frame */
CVI_S32 s32BytesPerSample; /* Number of bytes per sample */
/* VQE frame length:80-4096 */
VQE_WORKSTATE_E enWorkstate; /* Current work state of VQE */
CVI_S32 s32InChNum; /* Number of input channels */
CVI_S32 s32OutChNum; /* Number of output channels */
VQE_RECORD_TYPE enRecordType; /* Type of recording */
AUDIO_AGC_CONFIG_S stAgcCfg; /* Configuration for Automatic Gain Control (AGC) */
} AI_RECORDVQE_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
u32OpenMask |
Record Vqe 的各功能使能的 Mask 值。 |
s32WorkSampleRate |
工作采样频率。 该参数为内部功能算法工作采样率。 取值范围:16KHz 或者 48KHz |
s32FrameSample |
VQE 的帧长,即采样点数目。支持范围[80, 4096]。 |
enWorkstate |
工作模式。 |
s32InChNum |
VQE 处理的输入通道数目。取值范围:[1, 2]。 |
s32OutChNum |
VQE 处理的输出通道数目。取值范围:[1, 2]。 |
enRecordType |
录音类型。 |
stAgcCfg |
自动增益控制相关配置信息。 |
【注意事项】
Cvitek VQE仅支持AGC/ANR/AEC 其余不支持
例如:RNR/EQ 相关数据设置后,并不会有效果
【相关数据类型及接口】
无。
10.4.1.38. AUDIO_STREAM_S¶
【说明】
定义音频码流结构体。
【定义】
typedef struct _AUDIO_STREAM_S {
CVI_U8 *pStream; /* the virtual address of stream */
CVI_U32 u32PhyAddr; /* the physics address of stream */
CVI_U32 u32Len; /* stream lenth, by bytes */
CVI_U64 u64TimeStamp; /* frame time stamp*/
CVI_U32 u32Seq; /* frame seq,if stream is not a valid frame, u32Seq is 0*/
} AUDIO_STREAM_S;
【成员】
成员名称 |
描述 |
---|---|
pStream |
音频码流数据指针。 |
u32PhyAddr |
音频码流的物理地址。 |
u32Len |
音频码流长度。AUDIO_STREAM_S 结构体内,以 byte 为单位。 |
u64TimeStamp |
音频码流时间戳。 |
u32Seq |
音频码流序号。 |
【注意事项】
无。
【相关数据类型及接口】
CVI_AENC_GetStream
10.4.1.39. AO_CHN_STATE_S¶
【说明】
音频输出通道的数据区块状态结构体。
【定义】
typedef struct hiAO_CHN_STATE_S {
CVI_U32 u32ChnTotalNum;
CVI_U32 u32ChnFreeNum;
CVI_U32 u32ChnBusyNum;
} AO_CHN_STATE_S;
【成员】
成员名称 |
描述 |
---|---|
u32ChnTotalNum |
输出通道总的区块数。 |
u32ChnFreeNum |
可用的空闲区块数。 |
u32ChnBusyNum |
被占用区块数。 |
【注意事项】
无。
【相关数据类型及接口】
10.4.1.40. AUDIO_TRACK_MODE_E¶
【说明】
定义音频设备声道模式类型。
【定义】
typedef enum _AUDIO_TRACK_MODE_E {
AUDIO_TRACK_NORMAL = 0, /* Normal audio track */
AUDIO_TRACK_BOTH_LEFT = 1, /* Both channels play left audio */
AUDIO_TRACK_BOTH_RIGHT = 2, /* Both channels play right audio */
AUDIO_TRACK_EXCHANGE = 3, /* Exchange left and right audio channels */
AUDIO_TRACK_MIX = 4, /* Mix both left and right audio channels */
AUDIO_TRACK_LEFT_MUTE = 5, /* Mute left audio channel */
AUDIO_TRACK_RIGHT_MUTE = 6, /* Mute right audio channel */
AUDIO_TRACK_BOTH_MUTE = 7, /* Mute both audio channels */
AUDIO_TRACK_BUTT /* End of audio track modes */
} AUDIO_TRACK_MODE_E;
【成员】
成员名称 |
描述 |
---|---|
AUDIO_TRACK_NORMAL |
正常模式,不做处理 |
AUDIO_TRACK_BOTH_LEFT |
两个声道全部为左声道声音 |
AUDIO_TRACK_BOTH_RIGHT |
两个声道全部为右声道声音 |
AUDIO_TRACK_EXCHANGE |
左右声道数据互换,左声道为右声道声音,右声 道为左声道声音 |
AUDIO_TRACK_MIX |
左右两个声道输出为左右声道相加(混音) |
AUDIO_TRACK_LEFT_MUTE |
左声道静音,右声道播放原右声道声音 |
AUDIO_TRACK_RIGHT_MUTE |
右声道静音,左声道播放原左声道声音 |
AUDIO_TRACK_BOTH_MUTE |
左右声道均静音 |
【注意事项】
无。
【相关数据类型及接口】
10.4.1.41. AUDIO_FADE_RATE_E¶
【说明】
定义音频输出设备淡入淡出速度类型。
【定义】
typedef enum _AUDIO_FADE_RATE_E {
AUDIO_FADE_RATE_NONE = 0,
AUDIO_FADE_RATE_10 = 10,
AUDIO_FADE_RATE_20 = 20,
AUDIO_FADE_RATE_30 = 30,
AUDIO_FADE_RATE_50 = 50,
AUDIO_FADE_RATE_100 = 100,
AUDIO_FADE_RATE_200 = 200,
AUDIO_FADE_RATE_BUTT = -1
} AUDIO_FADE_RATE_E;
【成员】
成员名称 |
描述 |
---|---|
AUDIO_FADE_RATE_NONE |
音量递增或递减中间无延迟 |
AUDIO_FADE_RATE_10 |
音量递增或递减每10ms更动步阶 |
AUDIO_FADE_RATE_20 |
音量递增或递减每20ms更动步阶 |
AUDIO_FADE_RATE_30 |
音量递增或递减每30ms更动步阶 |
AUDIO_FADE_RATE_50 |
音量递增或递减每50ms更动步阶 |
AUDIO_FADE_RATE_100 |
音量递增或递减每100ms更动步阶 |
AUDIO_FADE_RATE_200 |
音量递增或递减每200ms更动步阶 |
【注意事项】
Cvitek使用AUDIO_FADE_RATE_E参数时,请确认AUDIO_FADE_S内的bFade已经设为CVI_TRUE,淡入或淡出会以目前音量值逐步依设定的AUDIO_FADE_RATE做时间延迟设置,直到淡入至unmute或是淡出至mute。
【相关数据类型及接口】
无。
10.4.1.42. AUDIO_FADE_S¶
【说明】
音频输出设备淡入淡出配置结构体。
【定义】
typedef struct hiAUDIO_FADE_S {
CVI_BOOL bFade;
AUDIO_FADE_RATE_E enFadeInRate;
AUDIO_FADE_RATE_E enFadeOutRate;
} AUDIO_FADE_S;
【成员】
成员名称 |
描述 |
---|---|
bFade |
是否开启淡入淡出功能。 CVI_TRUE:开启淡入淡出功能。 CVI_FALSE:关闭淡入淡出功能。 |
enFadeInRate |
音频输出设备音量淡入速度。 |
enFadeOutRate |
音频输出设备音量淡出速度。 |
【注意事项】
Cvitek请确认AUDIO_FADE_S内的bFade已经设为CVI_TRUE,enFadeInRate/enFadeOutRate值的设定才有所作用。
【相关数据类型及接口】
10.4.1.43. G726_BPS_E¶
【说明】
定义 G.726 编解码协议速率。
【定义】
typedef enum _G726_BPS_E {
G726_16K = 0, /* G726 16kbps, see RFC3551.txt 4.5.4 G726-16 */
G726_24K, /* G726 24kbps, see RFC3551.txt 4.5.4 G726-24 */
G726_32K, /* G726 32kbps, see RFC3551.txt 4.5.4 G726-32 */
G726_40K, /* G726 40kbps, see RFC3551.txt 4.5.4 G726-40 */
MEDIA_G726_16K, /* G726 16kbps for ASF ... */
MEDIA_G726_24K, /* G726 24kbps for ASF ... */
MEDIA_G726_32K, /* G726 32kbps for ASF ... */
MEDIA_G726_40K, /* G726 40kbps for ASF ... */
G726_BUTT, /* Used for boundary checking */
} G726_BPS_E;
【成员】
成员名称 |
描述 |
---|---|
G726_16K |
16kbps G.726。 |
G726_24K |
24kbps G. 726。 |
G726_32K |
32kbps G.726。 |
G726_40K |
40kbps G.726。 |
MEDIA_G726_16K G726 |
16kbps for ASF。 |
MEDIA_G726_24K |
G726 24kbps for ASF。 |
MEDIA_G726_32K |
G726 32kbps for ASF。 |
MEDIA_G726_40K |
G726 40kbps for ASF。 |
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.44. ADPCM_TYPE_E¶
【说明】
定义 ADPCM 编解码协议类型。
【定义】
typedef enum _ADPCM_TYPE_E {
/* see DVI4 diiffers in three respects from the IMA ADPCM at RFC3551.txt 4.5.1 DVI4 */
ADPCM_TYPE_DVI4 = 0, /* 32kbps ADPCM(DVI4) for RTP */
ADPCM_TYPE_IMA, /* 32kbps ADPCM(IMA),NOTICE:point num must be 161/241/321/481 */
ADPCM_TYPE_ORG_DVI4, /* Original DVI4 ADPCM type */
ADPCM_TYPE_BUTT, /* Used for boundary checking */
} ADPCM_TYPE_E;
【成员】
成员名称 |
描述 |
---|---|
ADPCM_TYPE_DVI4 |
32kbit/s ADPCM(DVI4)。 |
ADPCM_TYPE_IMA |
32kbit/s ADPCM(IMA)。 |
ADPCM_TYPE_ORG_DVI4 |
32kbit/s ADPCM(ORG_DVI4)。 |
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.45. AUDIO_SAVE_FILE_INFO_S¶
【说明】
定义音频文件保存的配置参数。
【定义】
typedef struct _AUDIO_SAVE_FILE_INFO_S {
CVI_BOOL bCfg; /* Configuration flag (TRUE/FALSE) */
CVI_CHAR aFilePath[MAX_AUDIO_FILE_PATH_LEN]; /* File path where the audio is saved */
CVI_CHAR aFileName[MAX_AUDIO_FILE_NAME_LEN]; /* Name of the saved audio file */
CVI_U32 u32FileSize; /* Size of the file in KB */
} AUDIO_SAVE_FILE_INFO_S;
【成员】
成员名称 |
描述 |
---|---|
bCfg |
配置标志,指示是否启用文件保存配置。 |
aFilePath |
文件保存路径,指定音频文件保存的目录。 |
aFileName |
文件名,指定保存的音频文件的名称。 |
u32FileSize |
文件大小,指定保存的音频文件的最大大小(单位:KB)。 |
【注意事项】
无
【相关数据类型及接口】
10.4.1.46. CVI_HPF_CONFIG_S¶
【说明】
定义高通滤波器(High-Pass Filter, HPF)的配置参数。
【定义】
typedef struct _CVI_HPF_CONFIG_S {
int type; /* HPF filter type */
float f0; /* cut-off frequency */
float Q; /* Q factor */
float gainDb; /* gain in dB */
} CVI_HPF_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
type |
滤波器类型编号,用于区分不同的高通滤波器设计或实现。 |
f0 |
截止频率(Hz),定义高通滤波器开始衰减低于此频率的信号的点。 |
Q |
质量因数,描述滤波器的带宽与其中心频率的比率,影响滤波器的选择性。 |
gainDb |
增益(分贝),指定滤波器通过频率的增益或衰减量。 |
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.47. CVI_EQ_CONFIG_S¶
【描述】
定义了均衡器(EQ)的配置参数。
【定义】
typedef struct _CVI_EQ_CONFIG_S {
int bandIdx; /* Index of the EQ band */
uint32_t freq; /* Frequency in Hz */
float QValue; /* Quality factor of the EQ band */
float gainDb; /* Gain in decibels for the EQ band */
} CVI_EQ_CONFIG_S;
【成员说明】
成员名称 |
描述 |
---|---|
bandIdx |
表示均衡器频段的索引。 |
freq |
表示该频段的中心频率,单位为赫兹(Hz)。 |
QValue |
质量因数,描述了该频段的带宽与中心频率的比例,影响滤波器的选择性。 |
gainDb |
增益,以分贝(dB)表示,指定该频段的增益或衰减水平。 |
【备注】
无。
【相关数据类型和接口】
无。
10.4.1.48. CVI_DRC_LIMITER_PARAM¶
【描述】
定义动态范围压缩器(DRC)限幅器的配置参数。
【定义】
typedef struct _CVI_DRC_LIMITER_PARAM {
uint32_t attackTimeMs; /* Attack time in milliseconds */
uint32_t releaseTimeMs; /* Release time in milliseconds */
float thresholdDb; /* Threshold level in decibels */
float postGain; /* Post-gain in decibels */
} CVI_DRC_LIMITER_PARAM;
【成员说明】
成员名称 |
描述 |
---|---|
attackTimeMs |
攻击时间,单位为毫秒(ms),表示从信号达到阈值到压缩开始所需的时间。 |
releaseTimeMs |
释放时间,单位为毫秒(ms),表示从信号低于阈值到压缩停止所需的时间。 |
thresholdDb |
阈值,单位为分贝(dB),表示压缩开始的信号电平。 |
postGain |
后增益,单位为分贝(dB),表示信号经过压缩后的增益调整。 |
【备注】
无。
【相关数据类型和接口】
无。
10.4.1.49. CVI_DRC_EXPANDER_PARAM¶
【描述】
定义动态范围压缩器(DRC)扩展器的配置参数。
【定义】
typedef struct _CVI_DRC_EXPANDER_PARAM {
uint32_t attackTimeMs; /* Attack time in milliseconds */
uint32_t releaseTimeMs; /* Release time in milliseconds */
uint32_t holdTimeMs; /* Hold time in milliseconds */
uint16_t ratio; /* Expansion ratio */
float thresholdDb; /* Threshold level in decibels */
float minDb; /* Minimum level in decibels */
} CVI_DRC_EXPANDER_PARAM;
【成员说明】
成员名称 |
描述 |
---|---|
attackTimeMs |
攻击时间,单位为毫秒(ms),表示从信号达到阈值到扩展开始所需的时间。 |
releaseTimeMs |
释放时间,单位为毫秒(ms),表示从信号低于阈值到扩展停止所需的时间。 |
holdTimeMs |
保持时间,单位为毫秒(ms),表示在释放之前保持扩展状态的时间。 |
ratio |
扩展比率,表示输入信号和输出信号之间的比率。 |
thresholdDb |
阈值,单位为分贝(dB),表示扩展开始的信号电平。 |
minDb |
最低电平,单位为分贝(dB),表示扩展器的最低输出电平。 |
【备注】
无。
【相关数据类型和接口】
无。
10.4.1.50. CVI_DRC_COMPRESSOR_PARAM¶
【描述】
定义动态范围压缩器(DRC)压缩器的配置参数。
【定义】
typedef struct _CVI_DRC_COMPRESSOR_PARAM {
uint32_t attackTimeMs; /* Attack time in milliseconds */
uint32_t releaseTimeMs; /* Release time in milliseconds */
uint16_t ratio; /* Compression ratio */
float thresholdDb; /* Threshold level in decibels */
} CVI_DRC_COMPRESSOR_PARAM;
【成员说明】
成员名称 |
描述 |
---|---|
attackTimeMs |
攻击时间,单位为毫秒(ms),表示从信号达到阈值到压缩开始所需的时间。 |
releaseTimeMs |
释放时间,单位为毫秒(ms),表示从信号低于阈值到压缩停止所需的时间。 |
ratio |
压缩比率,表示输入信号和输出信号之间的比率。 |
thresholdDb |
阈值,单位为分贝(dB),表示压缩开始的信号电平。 |
【备注】
无。
【相关数据类型和接口】
无。
10.4.1.51. AUDIO_SPK_EQ_CONFIG_S¶
【描述】
定义扬声器均衡器(EQ)的配置参数。
【定义】
typedef struct _AUDIO_SPK_EQ_CONFIG_S {
CVI_U16 para_spk_eq_nband; /* Number of EQ bands */
CVI_U16 para_spk_eq_freq[5]; /* EQ band frequencies */
CVI_U16 para_spk_eq_gain[5]; /* EQ band gains */
CVI_U16 para_spk_eq_qfactor[5]; /* EQ band Q factors */
} AUDIO_SPK_EQ_CONFIG_S;
【成员说明】
成员名称 |
描述 |
---|---|
para_spk_eq_nband |
EQ频段数量。 |
para_spk_eq_freq |
EQ频段的中心频率数组。 |
para_spk_eq_gain |
EQ频段的增益数组。 |
para_spk_eq_qfactor |
EQ频段的Q因子数组。 |
【备注】
无。
【相关数据类型和接口】
无。
10.4.1.52. AO_VQE_CONFIG_S¶
【描述】
定义音频输出(AO)语音质量增强(VQE)的配置参数。
【定义】
typedef struct _AO_VQE_CONFIG_S {
CVI_U32 u32OpenMask; /* Open mask for VQE modules */
CVI_S32 s32WorkSampleRate; /* Working sample rate */
CVI_S32 s32channels; /* Number of channels */
/* Sample Rate: 8KHz/16KHz default: 8KHz*/
AUDIO_SPK_AGC_CONFIG_S stAgcCfg; /* AGC configuration */
AUDIO_SPK_EQ_CONFIG_S stEqCfg; /* EQ configuration */
CVI_HPF_CONFIG_S stHpfParam; /* HPF configuration */
CVI_EQ_CONFIG_S stEqParam; /* EQ configuration */
CVI_DRC_COMPRESSOR_PARAM stDrcCompressor; /* DRC compressor configuration */
CVI_DRC_LIMITER_PARAM stDrcLimiter; /* DRC limiter configuration */
CVI_DRC_EXPANDER_PARAM stDrcExpander; /* DRC expander configuration */
} AO_VQE_CONFIG_S;
【成员说明】
成员名称 |
描述 |
---|---|
u32OpenMask |
VQE模块的开启掩码。 |
s32WorkSampleRate |
工作采样率,单位为Hz。 |
s32channels |
通道数量。 |
stAgcCfg |
自动增益控制(AGC)配置参数。 |
stEqCfg |
均衡器(EQ)配置参数。 |
stHpfParam |
高通滤波器(HPF)配置参数。 |
stEqParam |
均衡器(EQ)配置参数。 |
stDrcCompressor |
动态范围压缩器(DRC)压缩器配置参数。 |
stDrcLimiter |
动态范围压缩器(DRC)限幅器配置参数。 |
stDrcExpander |
动态范围压缩器(DRC)扩展器配置参数。 |
【备注】
无。
【相关数据类型和接口】
无。
10.4.1.53. HPF_FILTER_TYPE¶
【描述】
定义高通滤波器(HPF)类型的枚举。
【定义】
typedef enum {
E_FILTER_LPF, /* Low-pass filter */
E_FILTER_HPF, /* High-pass filter */
E_FILTER_LSF, /* Low-shelf filter */
E_FILTER_HSF, /* High-shelf filter */
E_FILTER_PEF, /* Peak filter */
E_FILTER_MAX, /* Maximum filter type */
} HPF_FILTER_TYPE;
【成员说明】
枚举值 |
描述 |
---|---|
E_FILTER_LPF |
低通滤波器。 |
E_FILTER_HPF |
高通滤波器。 |
E_FILTER_LSF |
低架滤波器。 |
E_FILTER_HSF |
高架滤波器。 |
E_FILTER_PEF |
峰值滤波器。 |
E_FILTER_MAX |
最大滤波器类型。 |
【备注】
无。
【相关数据类型和接口】
无。
10.4.1.54. AUDIO_SPK_AGC_CONFIG_S¶
【描述】
定义扬声器自动增益控制(AGC)的配置参数。
【定义】
typedef struct _AUDIO_SPK_AGC_CONFIG_S {
CVI_S8 para_agc_max_gain; /* the max boost gain for AGC release processing, [0, 3] */
CVI_S8 para_agc_target_high; /* the gain level of target high of AGC, [0, 36] */
CVI_S8 para_agc_target_low; /* the gain level of target low of AGC, [0, 36] */
} AUDIO_SPK_AGC_CONFIG_S;
【成员说明】
成员名称 |
描述 |
---|---|
para_agc_max_gain |
AGC释放处理的最大提升增益,范围为[0, 3]。 |
para_agc_target_high |
AGC目标高增益电平,范围为[0, 36]。 |
para_agc_target_low |
AGC目标低增益电平,范围为[0, 36]。 |
【备注】
无。
【相关数据类型和接口】
无。
10.4.1.55. AUDIO_FILE_STATUS_S¶
【说明】
定义音频文件保存状态结构体。
【定义】
typedef struct _AUDIO_FILE_STATUS_S {
CVI_BOOL bSaving; /* Whether the file is saving or not */
} AUDIO_FILE_STATUS_S;
【成员】
成员名称 |
描述 |
---|---|
bSaving |
是否处于存文件状态。 CVI_TRUE:处于存文件状态; CVI_FALSE:不处于存文件状态。 |
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.56. VQE_MODULE_CONFIG_S¶
【说明】
定义声音质量增强及重采样模块配置信息结构体。
【定义】
typedef struct _VQE_MODULE_CONFIG_S {
CVI_VOID *pHandle; /* Handle of the VQE module */
} VQE_MODULE_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
pHandle |
注册句柄。 |
【注意事项】
各声音质量增强及重采样模块的注册句柄,用户可通过调用句柄获取接口进行获取。
【相关数据类型及接口】
无。
10.4.1.57. AUDIO_VQE_REGISTER_S¶
【说明】
定义声音质量增强及重采样模块注册结构体。
【定义】
typedef struct _AUDIO_VQE_REGISTER_S {
VQE_MODULE_CONFIG_S stResModCfg; /* Configuration for the Resample module */
VQE_MODULE_CONFIG_S stHpfModCfg; /* Configuration for the High Pass Filter module */
VQE_MODULE_CONFIG_S stHdrModCfg; /* Configuration for the HDR module */
VQE_MODULE_CONFIG_S stGainModCfg; /* Configuration for the Gain module */
// Record VQE
VQE_MODULE_CONFIG_S stRecordModCfg; /* Configuration for the Record VQE module */
// Talk VQE
VQE_MODULE_CONFIG_S stAecModCfg; /* Configuration for the Acoustic Echo Cancellation module */
VQE_MODULE_CONFIG_S stAnrModCfg; /* Configuration for the Automatic Noise Reduction module */
VQE_MODULE_CONFIG_S stAgcModCfg; /* Configuration for the Automatic Gain Control module */
VQE_MODULE_CONFIG_S stEqModCfg; /* Configuration for the Equalizer module */
// CviFi VQE
VQE_MODULE_CONFIG_S stRnrModCfg; /* Configuration for the Residual Noise Reduction module */
VQE_MODULE_CONFIG_S stDrcModCfg; /* Configuration for the Dynamic Range Compression module */
VQE_MODULE_CONFIG_S stPeqModCfg; /* Configuration for the Parametric Equalizer module */
} AUDIO_VQE_REGISTER_S;
【成员】
成员名称 |
描述 |
---|---|
pHandle |
注册句柄。 |
【注意事项】
目前仅支持audio uplink语音录音后的Talk VQE。其余VQE不支持。
【相关数据类型及接口】
无。
10.4.2. 音频编码¶
音频编码相关数据类型、数据结构定义如下:
AENC_MAX_CHN_NUM :定义音频编码通道的最大个数。
AENC_ATTR_G711_S :定义 G.711 编码协议属性结构体。
AENC_ATTR_G726_S :定义 G.726 编码协议属性结构体。
AENC_ATTR_ADPCM_S :定义 ADPCM 编码协议属性结构体。
AENC_ATTR_LPCM_S :定义 LPCM 编码协议属性结构体。
AENC_CHN_ATTR_S :定义音频编码通道属性结构体。
AAC_AENC_ENCODER_S :定义编码器属性结构体。
10.4.2.1. AENC_MAX_CHN_NUM¶
【说明】
定义音频编码通道的最大个数。
【定义】
#define AENC_MAX_CHN_NUM 3
【注意事项】
【相关数据类型及接口】
无。
10.4.2.2. AENC_ATTR_G711_S¶
【说明】
定义 G.711 编码协议属性结构体。
【定义】
typedef struct hiAENC_ATTR_G711_S
{
CVI_U32 resv;
}AENC_ATTR_G711_S;
【成员】
成员名称 |
描述 |
---|---|
resv |
无使用 |
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.2.3. AENC_ATTR_G726_S¶
【说明】
定义 G.726 编码协议属性结构体。
【定义】
typedef struct _AENC_ATTR_G726_S {
【成员】
成员名称 |
描述 |
---|---|
enG726bps |
G.726 协议码率。 |
【注意事项】
无。
【相关数据类型及接口】
10.4.2.4. AENC_ATTR_ADPCM_S¶
【说明】
定义 ADPCM 编码协议属性结构体。
【定义】
typedef struct _AENC_ATTR_ADPCM_S {
ADPCM_TYPE_E enADPCMType;
}AENC_ATTR_ADPCM_S;
【成员】
成员名称 |
描述 |
---|---|
enADPCMType |
ADPCM 类型。 |
【注意事项】
无。
【相关数据类型及接口】
10.4.2.5. AENC_ATTR_LPCM_S¶
【说明】
定义 LPCM 编码协议属性结构体。
【定义】
typedef struct _AENC_ATTR_LPCM_S {
CVI_U32 resv; /*reserve item*/
}AENC_ATTR_LPCM_S;
【成员】
此结构内部变量无使用。
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.2.6. AENC_CHN_ATTR_S¶
【说明】
定义音频编码通道属性结构体。该结构体的定义在不同处理器平台上略有不同。
【定义】
typedef struct _AENC_CHN_ATTR_S {
PAYLOAD_TYPE_E enType;
CVI_U32 u32PtNumPerFrm;
CVI_U32 u32BufSize;
CVI_VOID *pValue;
CVI_BOOL bFileDbgMode;
}AENC_CHN_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
enType |
音频编码协议类型,静态属性。 |
u32PtNumPerFrm |
音频编码协议对应的帧长 |
u32BufSize |
音频编码区块大小。 |
pValue |
具体协议属性指针。 |
bFileDbgMode |
是否存文件状态 |
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.2.7. AAC_AENC_ENCODER_S¶
【说明】
定义AAC编码器属性结构体。
【定义】
typedef struct _AAC_AENC_ENCODER_S {
PAYLOAD_TYPE_E enType;
CVI_U32 u32MaxFrmLen;
CVI_CHAR aszName[17];
/* encoder type,be used to print proc information */
CVI_S32 (*pfnOpenEncoder)(CVI_VOID *pEncoderAttr, CVI_VOID **ppEncoder);
/* pEncoder is the handle to control the encoder */
CVI_S32 (*pfnEncodeFrm)(CVI_VOID *pEncoder, CVI_S16 * inputdata, CVI_U8 *
pu8Outbuf,
CVI_S32 s32InputSizeBytes, CVI_U32 *pu32OutLen);
CVI_S32 (*pfnCloseEncoder)(CVI_VOID *pEncoder);
} AAC_AENC_ENCODER_S;
【成员】
此结构体仅供AAC外部LIB连结使用,此版SDK仅定义,尚未支持。
【注意事项】
此结构体仅供AAC外部LIB连结使用,此版SDK仅定义,尚未支持。如须使用AAC请参照middleware/sample/audio/aac_sample内容。
【相关数据类型及接口】
无。
10.4.3. 音频解码¶
音频解码相关数据类型、数据结构定义如下:
MAX_AUDIO_FRAME_NUM :定义最大音频解码区块帧数。
ADEC_MAX_CHN_NUM :定义音频解码通道的最大个数。
ADEC_ATTR_G711_S :定义 G.711 解码协议属性结构体。
ADEC_ATTR_G726_S :定义 G.726 解码协议属性结构体。
ADEC_ATTR_ADPCM_S :定义 ADPCM 解码协议属性结构体。
ADEC_ATTR_LPCM_S :定义 LPCM 解码协议属性结构体。
ADEC_MODE_E :定义解码方式。
ADEC_CHN_ATTR_S :定义解码通道属性结构体。
ADEC_DECODER_S :定义解码器属性结构体。
10.4.3.1. MAX_AUDIO_FRAME_NUM¶
【说明】
定义最大音频解码区块帧数。
【定义】
#define MAX_AUDIO_FRAME_NUM 300
【注意事项】
目前音频内部缓存帧数, 由SDK内部决定,因此此设置对于使用者而言并未开放亦不会有任何效力。
【相关数据类型及接口】
无。
10.4.3.2. ADEC_MAX_CHN_NUM¶
【说明】
定义音频解码通道的最大个数。
【定义】
#define ADEC_MAX_CHN_NUM 3
【注意事项】
目前仅支持单信道编译码。
【相关数据类型及接口】
无。
10.4.3.3. ADEC_ATTR_G711_S¶
【说明】
定义 G.711 解码协议属性结构体。
【定义】
typedef struct _ADEC_ATTR_G711_S {
CVI_U32 resv;
}ADEC_ATTR_G711_S;
【成员】
此结构内变量在cvitek处理器下无使用
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.3.4. ADEC_ATTR_G726_S¶
【说明】
定义 G.726 解码协议属性结构体。
【定义】
typedef struct _ADEC_ATTR_G726_S {
G726_BPS_E enG726bps;
}ADEC_ATTR_G726_S;
【成员】
成员名称 |
描述 |
---|---|
enG726bps |
G.726 协议码率。 |
【注意事项】
无。
【相关数据类型及接口】
10.4.3.5. ADEC_ATTR_ADPCM_S¶
【说明】
定义 ADPCM 解码协议属性结构体。
【定义】
typedef struct _ADEC_ATTR_ADPCM_S {
ADPCM_TYPE_E enADPCMType;
}ADEC_ATTR_ADPCM_S;
【成员】
成员名称 |
描述 |
---|---|
enADPCMType |
ADPCM 类型。 |
【注意事项】
无。
【相关数据类型及接口】
10.4.3.6. ADEC_ATTR_LPCM_S¶
【说明】
定义 LPCM 解码协议属性结构体。
【定义】
typedef struct _ADEC_ATTR_LPCM_S {
CVI_U32 resv;
}ADEC_ATTR_LPCM_S;
【成员】
resv 待扩展用。
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.3.7. ADEC_MODE_E¶
【说明】
定义解码方式。
【定义】
typedef enum _ADEC_MODE_E {
ADEC_MODE_PACK = 0,
ADEC_MODE_STREAM ,
ADEC_MODE_BUTT
}ADEC_MODE_E;
【成员】
成员名称 |
描述 |
---|---|
ADEC_MODE_PACK |
Pack 方式解码。 |
ADEC_MODE_STREAM |
stream 方式解码。 |
【注意事项】
pack 方式用于用户确认当前码流包为一帧数据编码结果的情况下,
解码器会直接对其进行解码,如果不是一帧,解码器会出错。
这种模式的效率比较高,在使用 AENC 模块编码的码流包如果没有破坏,均可以使用此方式解码。
stream 方式用于用户不能确认当前码流包是不是一帧数据的情况下,解码器需要 对码流进行判断并区块,此工作方式的效率低下,一般用于读文件码流送解码或 者不确定码流包边界的情况。
当然由于语音编码码流长度固定,很容易确定在码 流中的帧边界,推荐使用 pack 方式解码。
Cvitek 仅支持pack模式,在不确定stream边界的状况下,Cvitek会因为frame数不对齐而译码错误。
【相关数据类型及接口】
无。
10.4.3.8. ADEC_CHN_ATTR_S¶
【说明】
定义解码通道属性结构体。
【定义】
typedef struct _ADEC_CH_ATTR_S {
PAYLOAD_TYPE_E enType;
CVI_U32 u32BufSize; /*buf size[2~CVI_MAX_AUDIO_FRAME_NUM]*/
ADEC_MODE_E enMode;/*decode mode*/
/* CVI_VOID ATTRIBUTE *pValue;*/
CVI_VOID *pValue;
CVI_BOOL bFileDbgMode;
//if ao not enable
CVI_S32 s32BytesPerSample;
CVI_S32 s32frame_size; //in samples
CVI_S32 s32ChannelNums; // 1 or 2
CVI_S32 s32Sample_rate;;
}ADEC_CHN_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
enType |
音频解码协议类型,静态属性。 |
u32BufSize |
音频解码区块缓存大小。目前音频内部缓存帧数, 由SDK内部决定,因此此设置对于使用者而言并未开放亦不会有任何效力。 |
enMode |
解码方式,静态属性。Mode仅支持, ADEC_MODE_PACK模式,无法透过设定ADEC_MODE_STREAM自动侦测。 |
pValue |
具体协议属性指针。 |
bFileDbgMode |
是否开启保存文件模式。请 注意在SDK内的cvi_sample_audio.c 范例码,此值默认是为True,以便做debug 使用,使用者实际运用上应设为 False避免因存盘占用效能或内存。 |
使用者仅单独使用ADEC模块,而未使用AO模块时,需透过以下变量设置告知ADEC模块相关参数特性。 |
|
s32BytesPerSample |
单位采样使用字节。 (位宽度SL16, 16bits = 2 bytes, 此时单位采样使用字节应设为2) (SDK内的范例即使用皆为 2) 。 |
s32frame_size |
Period sample s ize:每次送入给ADEC模块的采样数。 |
s32ChannelNums |
通道数(单声道:1\双声道:2)。 |
s32Sample_rate |
欲译码码流的采样频率(HZ)。 |
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.3.9. AUDIO_FRAME_INFO_S¶
【说明】
定义解码后的音频帧信息结构体。
【定义】
typedef struct _AUDIO_FRAME_INFO_S {
AUDIO_FRAME_S *pstFrame;
CVI_U32 u32Id;
} AUDIO_FRAME_INFO_S;
【成员】
成员名称 |
描述 |
---|---|
pstFrame |
音频帧指针。 |
u32Id |
音频帧的索引,范围[0, 49] |
【注意事项】
无。
【相关数据类型及接口】
CVI_ADEC_GetFrame
CVI_ADEC_ReleaseFrame
10.4.3.10. ADEC_DECODER_S¶
【说明】
定义解码器属性结构体。
【定义】
typedef struct _ADEC_DECODER_S {
PAYLOAD_TYPE_E enType;
CVI_CHAR aszName[17];
CVI_S32 (*pfnOpenDecoder)(CVI_VOID *pDecoderAttr, CVI_VOID
**ppDecoder);
CVI_S32 (*pfnDecodeFrm)(CVI_VOID *pDecoder, CVI_U8 **pu8Inbuf,
CVI_S32 *ps32LeftByte,
CVI_U16 *pu16Outbuf, CVI_U32 *pu32OutLen, CVI_U32
*pu32Chns);
CVI_S32 (*pfnGetFrmInfo)(CVI_VOID *pDecoder, CVI_VOID *pInfo);
CVI_S32 (*pfnCloseDecoder)(CVI_VOID *pDecoder);
CVI_S32 (*pfnResetDecoder)(CVI_VOID *pDecoder);
} ADEC_DECODER_S;
【成员】
成员名称 |
描述 |
---|---|
enType |
解码协议类型。 |
aszName |
解码器名称。 |
pfnOpenDecoder |
打开解码器的函数指针。 |
pfnDecodeFrm |
进行解码的函数指针 |
pfnGetFrmInfo |
获取音频帧信息的函数指针。 |
pfnCloseDecoder |
关闭解码器的函数指针。 |
pfnResetDecoder |
清空缓存 buffer,复位解码器。 |
【注意事项】
此结构专用于链接外部AAC译码lib,目前AAC译码请参阅middleware/sample/audio/aac_sample使用。
【相关数据类型及接口】
无。