10.4. 数据类型

10.4.1. 音频输入/输出

音频输入/输出 相关数据类型、数据结构定义如下:


以下功能目前不支持:

  • 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 使用者无需对此时钟下设定。

【相关数据类型及接口】

AUDIO_MOD_PARAM_S

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 采样率

【注意事项】

无。

【相关数据类型及接口】

AIO_ATTR_S

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 位宽

【注意事项】

无。

【相关数据类型及接口】

AIO_ATTR_S

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 主模式。

【相关数据类型及接口】

AIO_ATTR_S

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。

【相关数据类型及接口】

AIO_ATTR_S

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 内部会自动对右声道也进行相应的操作。

【相关数据类型及接口】

AIO_ATTR_S

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环境中最好 关闭此功能以获得较佳的语音品质

【注意事项】

无。

【相关数据类型及接口】

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: 最快的噪音追踪速度

【注意事项】

无。

【相关数据类型及接口】

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

噪声模式。

【注意事项】

无。

【相关数据类型及接口】

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

被占用区块数。

【注意事项】

无。

【相关数据类型及接口】

CVI_AO_QueryChnStat

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值的设定才有所作用。

【相关数据类型及接口】

CVI_AO_SetMute

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. 音频编码

音频编码相关数据类型、数据结构定义如下:

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 协议码率。

【注意事项】

无。

【相关数据类型及接口】

G726_BPS_E

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 类型。

【注意事项】

无。

【相关数据类型及接口】

ADPCM_TYPE_E

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. 音频解码

音频解码相关数据类型、数据结构定义如下:

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 协议码率。

【注意事项】

无。

【相关数据类型及接口】

G726_BPS_E

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 类型。

【注意事项】

无。

【相关数据类型及接口】

ADPCM_TYPE_E

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

静音控制

【注意事项】

无。

【相关数据类型及接口】

无。