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

【相关数据类型及接口】

AUDIO_MOD_PARAM_S

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

【注意事项】

无。

【相关数据类型及接口】

AIO_ATTR_S

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

【注意事项】

无。

【相关数据类型及接口】

AIO_ATTR_S

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

【相关数据类型及接口】

AIO_ATTR_S

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。

【相关数据类型及接口】

AIO_ATTR_S

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

【相关数据类型及接口】

AIO_ATTR_S

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

【注意事项】

无。

【相关数据类型及接口】

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

【注意事项】

无。

【相关数据类型及接口】

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

噪声模式。

【注意事项】

无。

【相关数据类型及接口】

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

被占用区块数。

【注意事项】

无。

【相关数据类型及接口】

CVI_AO_QueryChnStat

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

【相关数据类型及接口】

CVI_AO_SetMute

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)。

【注意事项】

【相关数据类型及接口】

MAX_AUDIO_FILE_PATH_LEN MAX_AUDIO_FILE_NAME_LEN

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

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

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_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使用。

【相关数据类型及接口】

无。