123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560 |
- /******************************************************************************
- Copyright (C), 2001-2018, Hisilicon Tech. Co., Ltd.
- ******************************************************************************
- File Name : hi_comm_aio.h
- Version : Initial Draft
- Author : Hisilicon multimedia software group
- Created : 2009/5/5
- Description :
- History :
- 1.Date : 2009/5/5
- Author : p00123320
- Modification: Created file
- ******************************************************************************/
- #ifndef __HI_COMM_AIO_H__
- #define __HI_COMM_AIO_H__
- #include "hi_common.h"
- #include "hi_errno.h"
- #ifdef __cplusplus
- #if __cplusplus
- extern "C"{
- #endif
- #endif /* End of #ifdef __cplusplus */
- #define MAX_AUDIO_FRAME_NUM 300 /*max count of audio frame in Buffer */
- #define MAX_AUDIO_POINT_BYTES 4 /*max bytes of one sample point(now 32bit max)*/
- #define MAX_VOICE_POINT_NUM 480 /*max sample per frame for voice encode */
- #define MAX_AUDIO_POINT_NUM 2048 /*max sample per frame for all encoder(aacplus:2048)*/
- #define MAX_AO_POINT_NUM 4096 /* from h3;support 4096 framelen*/
- #define MIN_AUDIO_POINT_NUM 80 /*min sample per frame*/
- #define MAX_AI_POINT_NUM 2048 /*max sample per frame for all encoder(aacplus:2048)*/
- /*max length of audio frame by bytes, one frame contain many sample point */
- #define MAX_AUDIO_FRAME_LEN (MAX_AUDIO_POINT_BYTES*MAX_AO_POINT_NUM)
- /*max length of audio stream by bytes */
- #define MAX_AUDIO_STREAM_LEN MAX_AUDIO_FRAME_LEN
- #define MAX_AI_USRFRM_DEPTH 30 /*max depth of user frame buf */
- #define MAX_AUDIO_FILE_PATH_LEN 256
- #define MAX_AUDIO_FILE_NAME_LEN 256
- /*The VQE EQ Band num.*/
- #define VQE_EQ_BAND_NUM 10
- #define VQE_DRC_SECNUM 5
- #define AI_RECORDVQE_MASK_HPF 0x1
- #define AI_RECORDVQE_MASK_RNR 0x2
- #define AI_RECORDVQE_MASK_HDR 0x4
- #define AI_RECORDVQE_MASK_DRC 0x8
- #define AI_RECORDVQE_MASK_EQ 0x10
- #define AI_RECORDVQE_MASK_AGC 0x20
- #define AI_TALKVQE_MASK_HPF 0x1
- #define AI_TALKVQE_MASK_AEC 0x2
- #define AI_TALKVQE_MASK_AGC 0x8
- #define AI_TALKVQE_MASK_EQ 0x10
- #define AI_TALKVQE_MASK_ANR 0x20
- #define AO_VQE_MASK_HPF 0x1
- #define AO_VQE_MASK_ANR 0x2
- #define AO_VQE_MASK_AGC 0x4
- #define AO_VQE_MASK_EQ 0x8
- typedef enum hiAUDIO_SAMPLE_RATE_E
- {
- AUDIO_SAMPLE_RATE_8000 = 8000, /* 8K samplerate*/
- AUDIO_SAMPLE_RATE_12000 = 12000, /* 12K 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_96000 = 96000, /* 96K samplerate*/
- AUDIO_SAMPLE_RATE_BUTT,
- } AUDIO_SAMPLE_RATE_E;
- typedef enum hiAUDIO_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_BUTT,
- } AUDIO_BIT_WIDTH_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;
- 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;
- typedef enum hiAIO_SOUND_MODE_E
- {
- AUDIO_SOUND_MODE_MONO =0,/*mono*/
- AUDIO_SOUND_MODE_STEREO =1,/*stereo*/
- AUDIO_SOUND_MODE_BUTT
- } AUDIO_SOUND_MODE_E;
- /*
- An example of the packing scheme for G726-32 codewords is as shown, and bit A3 is the least significant bit of the first codeword:
- RTP G726-32:
- 0 1
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- |B B B B|A A A A|D D D D|C C C C| ...
- |0 1 2 3|0 1 2 3|0 1 2 3|0 1 2 3|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- MEDIA G726-32:
- 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- |A A A A|B B B B|C C C C|D D D D| ...
- |3 2 1 0|3 2 1 0|3 2 1 0|3 2 1 0|
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
- */
- 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;
- typedef enum hiADPCM_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,
- ADPCM_TYPE_BUTT,
- } ADPCM_TYPE_E;
- #define AI_EXPAND 0x01
- #define AI_CUT 0x02
- typedef struct hiAIO_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 */
- HI_U32 u32EXFlag; /* expand 8bit to 16bit,use AI_EXPAND(only valid for AI 8bit),use AI_CUT(only valid for extern Codec for 24bit) */
- HI_U32 u32FrmNum; /* frame num in buf[2,MAX_AUDIO_FRAME_NUM] */
- HI_U32 u32PtNumPerFrm; /* point num per frame (80/160/240/320/480/1024/2048)
- (ADPCM IMA should add 1 point, AMR only support 160) */
- HI_U32 u32ChnCnt; /* channle number on FS, valid value:1/2/4/8 */
- HI_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;
- typedef struct hiAI_CHN_PARAM_S
- {
- HI_U32 u32UsrFrmDepth;
- } AI_CHN_PARAM_S;
- typedef struct hiAUDIO_FRAME_S
- {
- AUDIO_BIT_WIDTH_E enBitwidth; /*audio frame bitwidth*/
- AUDIO_SOUND_MODE_E enSoundmode; /*audio frame momo or stereo mode*/
- HI_U8* u64VirAddr[2];
- HI_U64 u64PhyAddr[2];
- HI_U64 u64TimeStamp; /*audio frame timestamp*/
- HI_U32 u32Seq; /*audio frame seq*/
- HI_U32 u32Len; /*data lenth per channel in frame*/
- HI_U32 u32PoolId[2];
- } AUDIO_FRAME_S;
- typedef struct hiAEC_FRAME_S
- {
- AUDIO_FRAME_S stRefFrame; /* AEC reference audio frame */
- HI_BOOL bValid; /* whether frame is valid */
- HI_BOOL bSysBind; /* whether is sysbind */
- } AEC_FRAME_S;
- typedef struct hiAUDIO_FRAME_INFO_S
- {
- AUDIO_FRAME_S *pstFrame;/*frame ptr*/
- HI_U32 u32Id; /*frame id*/
- } AUDIO_FRAME_INFO_S;
- typedef struct hiAUDIO_STREAM_S
- {
- HI_U8 ATTRIBUTE *pStream; /* the virtual address of stream */
- HI_U64 ATTRIBUTE u64PhyAddr; /* the physics address of stream */
- HI_U32 u32Len; /* stream lenth, by bytes */
- HI_U64 u64TimeStamp; /* frame time stamp*/
- HI_U32 u32Seq; /* frame seq,if stream is not a valid frame,u32Seq is 0*/
- } AUDIO_STREAM_S;
- typedef struct hiAO_CHN_STATE_S
- {
- HI_U32 u32ChnTotalNum; /* total number of channel buffer */
- HI_U32 u32ChnFreeNum; /* free number of channel buffer */
- HI_U32 u32ChnBusyNum; /* busy number of channel buffer */
- } AO_CHN_STATE_S;
- 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;
- typedef enum hiAUDIO_FADE_RATE_E
- {
- AUDIO_FADE_RATE_1 = 0,
- AUDIO_FADE_RATE_2 = 1,
- AUDIO_FADE_RATE_4 = 2,
- AUDIO_FADE_RATE_8 = 3,
- AUDIO_FADE_RATE_16 = 4,
- AUDIO_FADE_RATE_32 = 5,
- AUDIO_FADE_RATE_64 = 6,
- AUDIO_FADE_RATE_128 = 7,
- AUDIO_FADE_RATE_BUTT
- } AUDIO_FADE_RATE_E;
- typedef struct hiAUDIO_FADE_S
- {
- HI_BOOL bFade;
- AUDIO_FADE_RATE_E enFadeInRate;
- AUDIO_FADE_RATE_E enFadeOutRate;
- } AUDIO_FADE_S;
- /**Defines the configure parameters of AEC.*/
- typedef struct hiAI_AEC_CONFIG_S
- {
- HI_BOOL bUsrMode; /* mode 0: auto mode 1: mannual.*/
- HI_S8 s8CngMode; /* cozy noisy mode: 0 close, 1 open, recommend 1*/
- HI_S8 s8NearAllPassEnergy; /* the far-end energy threshold for judging whether unvarnished transmission: 0 -59dBm0, 1 -49dBm0, 2 -39dBm0, recommend 1 */
- HI_S8 s8NearCleanSupEnergy; /* the energy threshold for compelling reset of near-end signal: 0 12dB, 1 15dB, 2 18dB, recommend 2 */
- HI_S16 s16DTHnlSortQTh; /* the threshold of judging single or double talk, recommend 16384, [0, 32767] */
- HI_S16 s16EchoBandLow; /* voice processing band1, low frequency parameter, [1, 63) for 8k, [1, 127) for 16k, recommend 10 */
- HI_S16 s16EchoBandHigh; /* voice processing band1, high frequency parameter, (s16EchoBandLow, 63] for 8k, (s16EchoBandLow, 127] for 16k, recommend 41 */
- /* s16EchoBandHigh must be greater than s16EchoBandLow */
- HI_S16 s16EchoBandLow2; /* voice processing band2, low frequency parameter, [1, 63) for 8k, [1, 127) for 16k, recommend 47 */
- HI_S16 s16EchoBandHigh2; /* voice processing band2, high frequency parameter, (s16EchoBandLow2, 63] for 8k, (s16EchoBandLow2, 127] for 16k, recommend 72 */
- /* s16EchoBandHigh2 must be greater than s16EchoBandLow2 */
- HI_S16 s16ERLBand[6]; /* ERL protect area, [1, 63] for 8k, [1, 127] for 16k, frequency band calculated by s16ERLBand * 62.5 */
- /* besides, s16ERLBand[n+1] should be greater than s16ERLBand[n] */
- HI_S16 s16ERL[7]; /* ERL protect value of ERL protect area, the smaller its value, the more strength its protect ability,[0, 18]*/
- HI_S16 s16VioceProtectFreqL; /* protect area of near-end low frequency, [1, 63) for 8k, [1, 127) for 16k, recommend 3 */
- HI_S16 s16VioceProtectFreqL1; /* protect area of near-end low frequency1, (s16VioceProtectFreqL, 63] for 8k, (s16VioceProtectFreqL, 127] for 16k, recommend 6 */
- HI_S32 s32Reserved; /* s16VioceProtectFreqL1 must be greater than s16VioceProtectFreqL */
- } AI_AEC_CONFIG_S;
- /**Defines the configure parameters of ANR.*/
- typedef struct hiAUDIO_ANR_CONFIG_S
- {
- HI_BOOL bUsrMode; /* mode 0: auto, mode 1: manual.*/
- HI_S16 s16NrIntensity; /* noise reduce intensity, range: [0, 25] */
- HI_S16 s16NoiseDbThr; /* noise threshold, range: [30, 60] */
- HI_S8 s8SpProSwitch; /* switch for music probe, range: [0:close, 1:open] */
- HI_S32 s32Reserved;
- } AUDIO_ANR_CONFIG_S;
- /**Defines the configure parameters of AGC.*/
- typedef struct hiAUDIO_AGC_CONFIG_S
- {
- HI_BOOL bUsrMode; /* mode 0: auto, mode 1: manual.*/
- HI_S8 s8TargetLevel; /* target voltage level, range: [-40, -1]dB */
- HI_S8 s8NoiseFloor; /* noise floor, range: TalkVqe/AoVqe[-65, -20]dB, RecordVqe[-50, -20]dB */
- HI_S8 s8MaxGain; /* max gain, range: [0, 30]dB */
- HI_S8 s8AdjustSpeed; /* adjustable speed, range: [0, 10]dB/s */
- HI_S8 s8ImproveSNR; /* switch for improving SNR, range: [0:close, 1:upper limit 3dB, 2:upper limit 6dB] */
- HI_S8 s8UseHighPassFilt; /* switch for using high pass filt, range: [0:close, 1:80Hz, 2:120Hz, 3:150:Hz, 4:300Hz: 5:500Hz] */
- HI_S8 s8OutputMode; /* output mode, mute when lower than noise floor, range: [0:close, 1:open] */
- HI_S16 s16NoiseSupSwitch; /* switch for noise suppression, range: [0:close, 1:open] */
- HI_S32 s32Reserved;
- } AUDIO_AGC_CONFIG_S;
- /**Defines the configure parameters of HPF.*/
- typedef enum hiAUDIO_HPF_FREQ_E
- {
- AUDIO_HPF_FREQ_80 = 80, /* 80Hz */
- AUDIO_HPF_FREQ_120 = 120, /* 120Hz */
- AUDIO_HPF_FREQ_150 = 150, /* 150Hz */
- AUDIO_HPF_FREQ_BUTT,
- } AUDIO_HPF_FREQ_E;
- typedef struct hiAUDIO_HPF_CONFIG_S
- {
- HI_BOOL bUsrMode; /* mode 0: auto mode 1: mannual.*/
- AUDIO_HPF_FREQ_E enHpfFreq; /*freq to be processed,value:HiFiVqe/TalkVqe/AoVqe(80Hz,120Hz,150Hz), RecordVqe(80Hz)*/
- } AUDIO_HPF_CONFIG_S;
- typedef struct hiAI_RNR_CONFIG_S
- {
- HI_BOOL bUsrMode; /* mode 0: auto, mode 1: mannual.*/
- HI_S32 s32NrMode; /*mode 0: floor noise; 1:ambient noise */
- HI_S32 s32MaxNrLevel; /*max NR level range:[2,20]dB*/
- HI_S32 s32NoiseThresh; /*noise threshold, range:[-80, -20]*/
- } AI_RNR_CONFIG_S;
- typedef struct hiAUDIO_EQ_CONFIG_S
- {
- HI_S8 s8GaindB[VQE_EQ_BAND_NUM]; /*EQ band, include 100,200,250,350,500,800,1.2k,2.5k,4k,8k in turn,
- range:TalkVqe/AoVqe[-100, 20], RecordVqe[-50, 20]*/
- HI_S32 s32Reserved;
- } AUDIO_EQ_CONFIG_S;
- /**Defines the configure parameters of UPVQE work state.*/
- typedef enum hiVQE_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;
- /**Defines record type*/
- typedef enum hiVQE_RECORD_TYPE
- {
- VQE_RECORD_NORMAL = 0, /*<double micphone recording. */
- VQE_RECORD_BUTT,
- } VQE_RECORD_TYPE;
- /* HDR Set CODEC GAIN Function Handle type */
- typedef HI_S32 (*pFuncGainCallBack)(HI_S32 s32SetGain);
- typedef struct hiAI_HDR_CONFIG_S
- {
- HI_BOOL bUsrMode; /* mode 0: auto mode 1: mannual.*/
- HI_S32 s32MinGaindB; /* the minimum of MIC(AI) CODEC gain, [0, 120]*/
- HI_S32 s32MaxGaindB; /* the maximum of MIC(AI) CODEC gain, [0, 120]*/
- HI_S32 s32MicGaindB; /* the current gain of MIC(AI) CODEC,[s32MinGaindB, s32MaxGaindB]*/
- HI_S32 s32MicGainStepdB; /* the step size of gain adjustment, [1, 3], recommemd 2 */
- pFuncGainCallBack pcallback; /* the callback function pointer of CODEC gain adjustment */
- } AI_HDR_CONFIG_S;
- typedef struct hiAI_DRC_CONFIG_S
- {
- HI_BOOL bUsrMode; /* enable user mode or not,default 0: disable user mode,1: user mode.*/
- HI_S16 s16AttackTime; /*time of signal change from large to small (ms), range:HiFiVqe[10, 250]ms, RecordVqe[10, 126]ms*/
- HI_S16 s16ReleaseTime; /*time of signal change from small to large (ms), range:HiFiVqe[10, 250]ms, RecordVqe[10, 126]ms*/
- HI_S16 s16OldLevDb[VQE_DRC_SECNUM]; /*old curve level(dB) ,default[0, -472, -792, -960, -1280],range:[-1440, 0]ms,store from big to small,scale:Q4*/
- HI_S16 s16NewLevDb[VQE_DRC_SECNUM]; /*new curve level(dB) ,default[0, -174, -410, -608, -1021],range:[-1440, 0]ms,store from big to small,scale:Q4*/
- } AI_DRC_CONFIG_S;
- /**Defines the configure parameters of Record VQE.*/
- typedef struct hiAI_RECORDVQE_CONFIG_S
- {
- HI_U32 u32OpenMask;
- HI_S32 s32WorkSampleRate; /* Sample Rate:16KHz/48KHz*/
- HI_S32 s32FrameSample; /* VQE frame length:80-4096 */
- VQE_WORKSTATE_E enWorkstate;
- HI_S32 s32InChNum;
- HI_S32 s32OutChNum;
- VQE_RECORD_TYPE enRecordType;
- AUDIO_HPF_CONFIG_S stHpfCfg;
- AI_RNR_CONFIG_S stRnrCfg;
- AI_HDR_CONFIG_S stHdrCfg;
- AI_DRC_CONFIG_S stDrcCfg;
- AUDIO_EQ_CONFIG_S stEqCfg;
- AUDIO_AGC_CONFIG_S stAgcCfg;
- } AI_RECORDVQE_CONFIG_S;
- /**Defines the configure parameters of Talk VQE.*/
- typedef struct hiAI_TALKVQE_CONFIG_S
- {
- HI_U32 u32OpenMask;
- HI_S32 s32WorkSampleRate; /* Sample Rate: 8KHz/16KHz. default: 8KHz*/
- HI_S32 s32FrameSample; /* VQE frame length: 80-4096 */
- VQE_WORKSTATE_E enWorkstate;
- AUDIO_HPF_CONFIG_S stHpfCfg;
- AI_AEC_CONFIG_S stAecCfg;
- AUDIO_ANR_CONFIG_S stAnrCfg;
- AUDIO_AGC_CONFIG_S stAgcCfg;
- AUDIO_EQ_CONFIG_S stEqCfg;
- } AI_TALKVQE_CONFIG_S;
- typedef struct hiAO_VQE_CONFIG_S
- {
- HI_U32 u32OpenMask;
- HI_S32 s32WorkSampleRate; /* Sample Rate: 8KHz/16KHz/48KHz. default: 8KHz*/
- HI_S32 s32FrameSample; /* VQE frame length: 80-4096 */
- VQE_WORKSTATE_E enWorkstate;
- AUDIO_HPF_CONFIG_S stHpfCfg;
- AUDIO_ANR_CONFIG_S stAnrCfg;
- AUDIO_AGC_CONFIG_S stAgcCfg;
- AUDIO_EQ_CONFIG_S stEqCfg;
- } AO_VQE_CONFIG_S;
- /*Defines the configure parameters of AI saving file.*/
- typedef struct hiAUDIO_SAVE_FILE_INFO_S
- {
- HI_BOOL bCfg;
- HI_CHAR aFilePath[MAX_AUDIO_FILE_PATH_LEN];
- HI_CHAR aFileName[MAX_AUDIO_FILE_NAME_LEN];
- HI_U32 u32FileSize; /*in KB*/
- } AUDIO_SAVE_FILE_INFO_S;
- /*Defines whether the file is saving or not .*/
- typedef struct hiAUDIO_FILE_STATUS_S
- {
- HI_BOOL bSaving;
- } AUDIO_FILE_STATUS_S;
- /**Defines audio clksel type*/
- typedef enum hiAUDIO_CLKSEL_E
- {
- AUDIO_CLKSEL_BASE = 0, /*<Audio base clk. */
- AUDIO_CLKSEL_SPARE, /*<Audio spare clk. */
- AUDIO_CLKSEL_BUTT,
- } AUDIO_CLKSEL_E;
- /*Defines audio mode parameter.*/
- typedef struct hiAUDIO_MOD_PARAM_S
- {
- AUDIO_CLKSEL_E enClkSel;
- } AUDIO_MOD_PARAM_S;
- typedef enum hiEN_AIO_ERR_CODE_E
- {
- AIO_ERR_VQE_ERR = 65 , /*vqe error*/
- } EN_AIO_ERR_CODE_E;
- /* invlalid device ID */
- #define HI_ERR_AI_INVALID_DEVID HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_DEVID)
- /* invlalid channel ID */
- #define HI_ERR_AI_INVALID_CHNID HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_CHNID)
- /* at lease one parameter is illagal ,eg, an illegal enumeration value */
- #define HI_ERR_AI_ILLEGAL_PARAM HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM)
- /* using a NULL point */
- #define HI_ERR_AI_NULL_PTR HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR)
- /* try to enable or initialize system,device or channel, before configing attribute */
- #define HI_ERR_AI_NOT_CONFIG HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_CONFIG)
- /* operation is not supported by NOW */
- #define HI_ERR_AI_NOT_SUPPORT HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT)
- /* operation is not permitted ,eg, try to change stati attribute */
- #define HI_ERR_AI_NOT_PERM HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM)
- /* the devide is not enabled */
- #define HI_ERR_AI_NOT_ENABLED HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_UNEXIST)
- /* failure caused by malloc memory */
- #define HI_ERR_AI_NOMEM HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_NOMEM)
- /* failure caused by malloc buffer */
- #define HI_ERR_AI_NOBUF HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_NOBUF)
- /* no data in buffer */
- #define HI_ERR_AI_BUF_EMPTY HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_EMPTY)
- /* no buffer for new data */
- #define HI_ERR_AI_BUF_FULL HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_FULL)
- /* system is not ready,had not initialed or loaded*/
- #define HI_ERR_AI_SYS_NOTREADY HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY)
- #define HI_ERR_AI_BUSY HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY)
- /* vqe err */
- #define HI_ERR_AI_VQE_ERR HI_DEF_ERR(HI_ID_AI, EN_ERR_LEVEL_ERROR, AIO_ERR_VQE_ERR)
- /* invlalid device ID */
- #define HI_ERR_AO_INVALID_DEVID HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_DEVID)
- /* invlalid channel ID */
- #define HI_ERR_AO_INVALID_CHNID HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_CHNID)
- /* at lease one parameter is illagal ,eg, an illegal enumeration value */
- #define HI_ERR_AO_ILLEGAL_PARAM HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM)
- /* using a NULL point */
- #define HI_ERR_AO_NULL_PTR HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR)
- /* try to enable or initialize system,device or channel, before configing attribute */
- #define HI_ERR_AO_NOT_CONFIG HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_CONFIG)
- /* operation is not supported by NOW */
- #define HI_ERR_AO_NOT_SUPPORT HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT)
- /* operation is not permitted ,eg, try to change stati attribute */
- #define HI_ERR_AO_NOT_PERM HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM)
- /* the devide is not enabled */
- #define HI_ERR_AO_NOT_ENABLED HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_UNEXIST)
- /* failure caused by malloc memory */
- #define HI_ERR_AO_NOMEM HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_NOMEM)
- /* failure caused by malloc buffer */
- #define HI_ERR_AO_NOBUF HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_NOBUF)
- /* no data in buffer */
- #define HI_ERR_AO_BUF_EMPTY HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_EMPTY)
- /* no buffer for new data */
- #define HI_ERR_AO_BUF_FULL HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_FULL)
- /* system is not ready,had not initialed or loaded*/
- #define HI_ERR_AO_SYS_NOTREADY HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY)
- #define HI_ERR_AO_BUSY HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY)
- /* vqe err */
- #define HI_ERR_AO_VQE_ERR HI_DEF_ERR(HI_ID_AO, EN_ERR_LEVEL_ERROR, AIO_ERR_VQE_ERR)
- #ifdef __cplusplus
- #if __cplusplus
- }
- #endif
- #endif /* End of #ifdef __cplusplus */
- #endif /* End of #ifndef __HI_COMM_AI_H__ */
|