10.4. 数据类型¶
10.4.1. 音频输入/输出¶
音频输入/输出 相关数据类型、数据结构定义如下:
AI_DEV_MAX_NUM :定义音频输入设备的最大数
AO_DEV_MAX_NUM :定义音频输出设备的最大数
AI_MAX_CHN_NUM :定义音频输入设备的最大通道数。
AO_MAX_CHN_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 :音频保存文件的名称的最大长度限制。
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 :定义录音类型。
VQE_EQ_BAND_NUM :定义 EQ 功能可调节的频段数。
AI_TALKVQE_CONFIG_S :定义音频输入声音质量增强(Talk)配置信息结构 体。
AI_RECORDVQE_CONFIG_S :定义音频输入声音质量增强(Record)配置信息 结构体。
AO_VQE_CONFIG_S :定义音频输出声音质量增强配置信息结构体。
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 :定义声音质量增强及重采样模块注册结构体。
ST_CVI_WAV_HEADER :定义Wav标头参考结构体。
以下功能目前不支持:
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. AIO_MAX_NUM¶
【说明】
定义音频输入/输出设备的最大个数。
【定义】
#define AIO_MAX_NUM 2
【注意事项】
已弃用。
【相关数据类型及接口】
无。
10.4.1.2. AI_DEV_MAX_NUM¶
【说明】
定义音频输入设备的最大个数。
【定义】
#define AI_DEV_MAX_NUM 1
【注意事项】
已弃用。
【相关数据类型及接口】
无。
10.4.1.3. AO_DEV_MAX_NUM¶
【说明】
定义音频输出设备的最大个数。
【定义】
#define AO_DEV_MAX_NUM 1
【注意事项】
已弃用。
【相关数据类型及接口】
无。
10.4.1.4. AI_MAX_CHN_NUM¶
【说明】
定义音频输入设备的最大通道个数。
【定义】
#define AI_MAX_CHN_NUM 2
【注意事项】
已经弃用 参考 CVI_AUD_MAX_CHANNEL_NUM
【相关数据类型及接口】
无。
10.4.1.5. AO_MAX_CHN_NUM¶
【说明】
定义音频输出设备的最大通道个数。
【定义】
#define AO_MAX_CHN_NUM 1
【注意事项】
已经弃用 参考 CVI_AUD_MAX_CHANNEL_NUM
【相关数据类型及接口】
无。
10.4.1.6. CVI_AUD_MAX_CHANNEL_NUM¶
【说明】
定义音频输入/输出设备的最大通道个数。
【定义】
#define CVI_AUD_MAX_CHANNEL_NUM 3
【注意事项】
音频设备最大通道数用户可通过参数设置AIO_ATTR_S stAttr;stAttr.u32ChnCnt设置,但最大不超过 CVI_AUD_MAX_CHANNEL_NUM
【相关数据类型及接口】
无。
10.4.1.7. AI_TALKVQE_MASK_AEC¶
【说明】
定义 Talk Vqe AEC 功能的 Mask。
【定义】
#define AI_TALKVQE_MASK_AEC 0x3
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.8. 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.9. 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.10. 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.11. MAX_AUDIO_FILE_PATH_LEN¶
【说明】
定义音频保存文件的路径的最大长度限制。
【定义】
#define MAX_AUDIO_FILE_PATH_LEN 256
【注意事项】
无。
【相关数据类型及接口】
AUDIO_SAVE_FILE_INFO_S
10.4.1.12. MAX_AUDIO_FILE_NAME_LEN¶
【说明】
定义音频保存文件的名称的最大长度限制。
【定义】
#define MAX_AUDIO_FILE_NAME_LEN 256
【注意事项】
无。
【相关数据类型及接口】
AUDIO_SAVE_FILE_INFO_S
10.4.1.13. 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.14. 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.15. 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, }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.16. AIO_MODE_E¶
【说明】
定义音频输入/输出 设备工作模式。
【定义】
typedef enum hiAIO_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
}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.17. 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.18. AUDIO_SOUND_MODE_E¶
【说明】
定义音频声道模式。
【定义】
typedef enum _AIO_SOUND_MODE_E {
AUDIO_SOUND_MODE_MONO =0, /*mono*/
AUDIO_SOUND_MODE_STEREO =1, /*stereo*/
AUDIO_SOUND_MODE_BUTT
}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.19. AUDIO_MOD_PARAM_S¶
【说明】
定义音频模块参数结构体。
【定义】
typedef struct cviAUDIO_MOD_PARAM_S {
AUDIO_CLKSEL_E enClkSel;
} AUDIO_MOD_PARAM_S;
【成员】
enClkSel 音频时钟源选择。 请参见 AUDIO_CLKSEL_E。
【注意事项】
Cvitek无须针对CLK做特殊设定
【相关数据类型及接口】
无。
10.4.1.20. 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 */
CVI_U32 u32FrmNum; /*frame num in buffer*/
CVI_U32 u32PtNumPerFrm; /*number of samples*/
CVI_U32 u32ChnCnt;
CVI_U32 u32ClkSel;
AIO_I2STYPE_E enI2sType;
}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 |
支持的通道数目。 |
enI2sType |
配置设备 I2S 类型,Cvitek仅支持主模式。 |
Audio Input 取值 |
AIO_I2STYPE_INNERCODEC AIO_I2STYPE_EXTERN |
AO 取值 |
AIO_I2STYPE_INNERCODEC AIO_I2STYPE_EXT ERN,AIO_I2STYPE_INNERHDMI。 |
【注意事项】
每帧的采样点个数 u32PtNumPerFrm 和采样率 enSamplerate 的取值决定了硬件产生中断 的频率,频率过高会影响系统的性能,跟其他业务也会相互影响,
建议这两个参数的取 值满足算式:(u32PtNumPerFrm*1000)/ enSamplerate>=10,
比如在采样率为 16000Hz 时, 建议设置采样点个数大于或者等于 160。
【相关数据类型及接口】
CVI_AI_SetPubAttr 和 CVI_AO_SetPubAttr
10.4.1.21. AI_CHN_PARAM_S¶
【说明】
定义通道参数结构体。
【定义】
typedef struct _AI_CHN_PARAM_S {
CVI_U32 u32UsrFrmDepth;
} AI_CHN_PARAM_S;
【成员】
u32UsrFrmDepth: 音频帧区块深度。
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.22. AUDIO_FRAME_S¶
【说明】
定义音频帧结构体。
【定义】
typedef struct _AUDIO_FRAME_S {
AUDIO_BIT_WIDTH_E enBitwidth;
AUDIO_SOUND_MODE_E enSoundmode;
CVI_U64 u64VirAddr [2];
CVI_U64 u64TimeStamp;
CVI_U32 u32Seq;
CVI_U32 u32Len;
CVI_U32 u32PoolId[2];
} 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.23. 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.24. AUDIO_AGC_CONFIG_S¶
【说明】
定义音频自动增益控制配置信息结构体。
【定义】
typedef struct _AUDIO_AGC_CONFIG_S {
CVI_S8 para_agc_max_gain;
CVI_S8 para_agc_target_high;
CVI_S8 para_agc_target_low;
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.25. AI_AEC_CONFIG_S¶
【说明】
定义音频回声抵消配置信息结构体。
【定义】
typedef struct _AI_AEC_CONFIG_S {
CVI_U16 para_aec_filter_len;
CVI_U16 para_aes_std_thrd;
CVI_U16 para_aes_supp_coeff;
} 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.26. AUDIO_ANR_CONFIG_S¶
【说明】
定义音频语音降噪功能配置信息结构体。
【定义】
typedef struct _AUDIO_ANR_CONFIG_S {
CVI_S8 para_nr_snr_coeff;
CVI_S8 para_nr_noise_coeff;
} 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.27. 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.28. VQE_WORKSTATE_E¶
【说明】
定义声音质量增强的工作模式。
【定义】
typedef enum _VQE_WORKSTATE_E {
VQE_WORKSTATE_COMMON = 0,
VQE_WORKSTATE_MUSIC = 1,
VQE_WORKSTATE_NOISY = 2
} VQE_WORKSTATE_E;
【成员】
成员名称 |
描述 |
---|---|
VQE_WORKSTATE_COMMON |
一般模式。 |
VQE_WORKSTATE_MUSIC |
音乐模式。 |
VQE_WORKSTATE_NOISY |
噪声模式。 |
【注意事项】
无。
【相关数据类型及接口】
AI_VQE_CONFIG_S
10.4.1.29. VQE_RECORD_TYPE¶
【说明】
定义录音类型。
【定义】
typedef enum _VQE_RECORD_TYPE {
VQE_RECORD_NORMAL = 0,
VQE_RECORD_BUTT, }
VQE_RECORD_TYPE;
【成员】
VQE_RECORD_NORMAL: 标准类型。
【注意事项】
Cvitek仅支持talk VQE,record VQE除非客制化,目前无使用。
【相关数据类型及接口】
10.4.1.30. AI_TALKVQE_CONFIG_S¶
【说明】
定义音频输入声音质量增强(Talk)配置信息结构体。
【定义】
typedef struct _AI_TALKVQE_CONFIG_S {
CVI_U16 para_client_config;
CVI_U32 u32OpenMask;
CVI_S32 s32WorkSampleRate;
/* Sample Rate: 8KHz/16KHz. default: 8KHz*/
//MIC IN VQE setting
AI_AEC_CONFIG_S stAecCfg;
AUDIO_ANR_CONFIG_S stAnrCfg;
AUDIO_AGC_CONFIG_S stAgcCfg;
AUDIO_DELAY_CONFIG_S stAecDelayCfg;
CVI_S32 s32RevMask;//turn this flag to default 0x11
CVI_S32 para_notch_freq;//user can ignore this flag
CVI_CHAR customize[MAX_AUDIO_VQE_CUSTOMIZE_NAME];
} AI_TALKVQE_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
para_client_config |
客户端参数配置 |
u32OpenMask |
Talk Vqe 的各功能使能的 Mask 值。 |
s32WorkSampleRate |
工作采样频率。 该参数为内部功能算法工作采样率。 取值范围:8KHz/16KHz。 默认值为8KHz。 |
stAecCfg |
回声抵消功能相关配置信息。 |
stAnrCfg |
语音降噪功能相关配置信息。 |
stAgcCfg |
自动增益控制相关配置信息。 |
stAecDelayCfg |
信号延迟相关配置信息 |
s32RevMask |
客制化遮蔽值设定。 |
para_notch_freq |
客制化频率消除。 |
customize |
客制化参数选择 |
【注意事项】
Cvitek VQE仅支持AGC/ANR/AEC 其余不支持
例如:RNR/EQ 相关数据设入后,并不会有效果
【相关数据类型及接口】
无。
10.4.1.31. AI_RECORDVQE_CONFIG_S¶
【说明】
定义音频输入声音质量增强(Record)配置信息结构体。
【定义】
typedef struct _AI_RECORDVQE_CONFIG_S {
CVI_U32 u32OpenMask;
CVI_S32 s32WorkSampleRate;
CVI_S32 s32FrameSample;
VQE_WORKSTATE_E enWorkstate;
CVI_S32 s32InChNum;
CVI_S32 s32OutChNum;
VQE_RECORD_TYPE enRecordType;
AUDIO_AGC_CONFIG_S stAgcCfg;
} 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.32. AO_VQE_CONFIG_S¶
【说明】
定义音频输出声音质量增强配置信息结构体。
【定义】
typedef struct _AO_VQE_CONFIG_S {
CVI_U32 u32OpenMask;
CVI_S32 s32WorkSampleRate;
/* Sample Rate: 8KHz/16KHz default: 8KHz*/
AUDIO_SPK_AGC_CONFIG_S stAgcCfg;
AUDIO_SPK_EQ_CONFIG_S stEqCfg;
} AO_VQE_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
u32OpenMask |
AO Vqe 的各功能使能的 Mask 值。 |
s32WorkSampleRate |
工作采样频率。 该参数为内部功能算法工作采样率。 取值范围:8KHz/16KHz/48KHz。 默认值为 8KHz。(仅 Hpf 支持 48KHz) |
stAgcCfg |
自动增益控制相关配置信息。 |
stEqCfg |
语音讯号均衡处理配置 |
【注意事项】
不支持
【相关数据类型及接口】
无。
10.4.1.33. 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.34. 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.35. AUDIO_TRACK_MODE_E¶
【说明】
定义音频设备声道模式类型。
【定义】
typedef enum hiAUDIO_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;
【成员】
成员名称 |
描述 |
---|---|
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.36. 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.37. 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.38. G726_BPS_E¶
【说明】
定义 G.726 编解码协议速率。
【定义】
typedef enum hiG726_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,
} 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.39. ADPCM_TYPE_E¶
【说明】
定义 ADPCM 编解码协议类型。
【定义】
typedef enum hiADPCM_TYPE_E {
ADPCM_TYPE_DVI4 = 0,
ADPCM_TYPE_IMA,
ADPCM_TYPE_ORG_DVI4,
ADPCM_TYPE_BUTT,
} 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.40. ST_CVI_WAV_HEADER¶
【说明】
定义WAV标头参考结构体。
【定义】
typedef struct _cvi_wavHEADER {
/* RIFF string */
CVI_U8 riff[4];
// overall size of file in bytes
CVI_U32 overall_size;
// WAVE string
CVI_U8 wave[4];
// fmt string with trailing null char
CVI_U8 fmt_chunk_marker[4];
// length of the format data
CVI_U32 length_of_fmt;
// format type. 1-PCM, 3- IEEE float, 6 - 8bit A law, 7 - 8bit mu law
CVI_U16 format_type;
// no.of channels
CVI_U16 channels;
// sampling rate (blocks per second)
CVI_U32 sample_rate;
// SampleRate * NumChannels * BitsPerSample/8
CVI_U32 byterate;
// NumChannels * BitsPerSample/8
CVI_U16 block_align;
// bits per sample, 8- 8bits, 16- 16 bits etc
CVI_U16 bits_per_sample;
// DATA string or FLLR string
CVI_U8 data_chunk_header[4];
// NumSamples * NumChannels * BitsPerSample/8 - size of the next chunk that will be read
CVI_U32 data_size;
} ST_CVI_WAV_HEADER;
【成员】
此结构体仅供用户参考,并无CVI API 作为输入变量。
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.41. AUDIO_FILE_STATUS_S¶
【说明】
定义音频文件保存状态结构体。
【定义】
typedef struct hiAUDIO_FILE_STATUS_S {
CVI_BOOL bSaving;
} AUDIO_FILE_STATUS_S;
【成员】
成员名称 |
描述 |
---|---|
bSaving |
是否处于存文件状态。 CVI_TRUE:处于存文件状态; CVI_FALSE:不处于存文件状态。 |
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.1.42. VQE_MODULE_CONFIG_S¶
【说明】
定义声音质量增强及重采样模块配置信息结构体。
【定义】
typedef struct _VQE_MODULE_CONFIG_S {
CVI_VOID *pHandle;
} VQE_MODULE_CONFIG_S;
【成员】
成员名称 |
描述 |
---|---|
pHandle |
注册句柄。 |
【注意事项】
各声音质量增强及重采样模块的注册句柄,用户可通过调用句柄获取接口进行获取。
【相关数据类型及接口】
无。
10.4.1.43. AUDIO_VQE_REGISTER_S¶
【说明】
定义声音质量增强及重采样模块注册结构体。
【定义】
typedef struct _AUDIO_VQE_REGISTER_S {
VQE_MODULE_CONFIG_S stResModCfg;
VQE_MODULE_CONFIG_S stHpfModCfg;
VQE_MODULE_CONFIG_S stHdrModCfg;
VQE_MODULE_CONFIG_S stGainModCfg;
// Record VQE
VQE_MODULE_CONFIG_S stRecordModCfg;
// Talk VQE
VQE_MODULE_CONFIG_S stAecModCfg;
VQE_MODULE_CONFIG_S stAnrModCfg;
VQE_MODULE_CONFIG_S stAgcModCfg;
VQE_MODULE_CONFIG_S stEqModCfg;
// CviFi VQE
VQE_MODULE_CONFIG_S stRnrModCfg;
VQE_MODULE_CONFIG_S stDrcModCfg;
VQE_MODULE_CONFIG_S stPeqModCfg;
} 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_CHN_STATE_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_CHN_STATE_S¶
【说明】
定义音频解码通道的数据缓存状态结构体。
【定义】
typedef struct _ADEC_CHN_STATE_S {
CVI_BOOL bEndOfStream; /* EOS flag */
CVI_U32 u32BufferFrmNum; /* total number of channel buffer */
CVI_U32 u32BufferFreeNum; /* free number of channel buffer */
CVI_U32 u32BufferBusyNum; /* busy number of channel buffer */
} ADEC_CHN_STATE_S;
【成员】
成员名称 |
描述 |
---|---|
bEndOfStream |
解码码流结束状态。 |
u32BufferFrmNum |
解码通道总的缓存块数。 |
u32BufferFreeNum |
可用的空闲缓存块数。 |
u32BufferBusyNum |
被占用缓存块数 |
【注意事项】
无。
【相关数据类型及接口】
无。
10.4.3.11. 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使用。
【相关数据类型及接口】
无。
10.4.4. 内置Codec¶
内置Codec相关数据类型、数据结构定义如下:
cvi_vol_ctrl :定义内置Audio Codec音量控制结构体。
10.4.4.1. ACODEC_VOL_CTRL¶
【说明】
定义内置Audio Codec音量控制结构体。
【定义】
struct cvi_vol_ctrl {
/* volume control, adc range: 0x00~0x1f, 0x17F:mute. dac range: 0x00~0x0f, 0x0f:mute */
CVI_U32 vol_ctrl;
/* adc/dac mute control, 1:mute, 0:unmute */
CVI_U32 vol_ctrl_mute;
};
【成员】
成员名称 |
描述 |
---|---|
vol_ctrl |
音量大小 |
vol_ctrl_mute |
静音控制 |
【注意事项】
无。
【相关数据类型及接口】
无。