187 lines
5.3 KiB
C
Executable File
187 lines
5.3 KiB
C
Executable File
/*
|
|
* tutuClear.h
|
|
* yanchen.lu@gmems.com
|
|
*
|
|
*/
|
|
#ifndef _TUTUCLEAR_H_
|
|
#define _TUTUCLEAR_H_
|
|
|
|
#include "tutu_typedef.h"
|
|
|
|
// Set below to TUTUClearConfig_t.Version for version control
|
|
#define TUTUCLEAR_VERSION MAKETUTUVER(1, 6, 4)
|
|
|
|
typedef struct {
|
|
UW32 uw32Version; // assign to TUTUCLEAR_VERSION
|
|
UW16 uw16SamplingFreq; // 0/1/2/3/4: 8000/16000/24000/32000/48000 Hz
|
|
UW16 uw16FrameSz; // set it as 10 [ms]
|
|
UW16 uw16MaxNumOfMic;
|
|
UW16 uw16MaxTailLength;
|
|
} TUTUClearConfig_t;
|
|
|
|
// Enumeration for uw32OpMode argument of TUTUClearParam_t
|
|
typedef enum {
|
|
TUTUClearOpMode_RESRV00 = 0x00000001,
|
|
TUTUClearOpMode_MST = 0x00000002,
|
|
TUTUClearOpMode_REC = 0x00000004,
|
|
TUTUClearOpMode_RESRV03 = 0x00000008,
|
|
TUTUClearOpMode_ASR = 0x00000010,
|
|
TUTUClearOpMode_RESRV05 = 0x00000020,
|
|
TUTUClearOpMode_INTERVIEW = 0x00000040,
|
|
TUTUClearOpMode_RESRV07 = 0x00000080,
|
|
TUTUClearOpMode_RESRV08 = 0x00000100,
|
|
TUTUClearOpMode_RESRV09 = 0x00000200,
|
|
TUTUClearOpMode_STEREO_AEC = 0x00000400,
|
|
TUTUClearOpMode_RESRV11 = 0x00000800,
|
|
TUTUClearOpMode_RESRV12 = 0x00001000,
|
|
TUTUClearOpMode_RESRV13 = 0x00002000,
|
|
TUTUClearOpMode_RESRV14 = 0x00004000,
|
|
TUTUClearOpMode_RESRV15 = 0x00008000,
|
|
} TUTUClearOpMode_e;
|
|
|
|
// Enumeration for uw32FuncMode argument of TUTUClearParam_t
|
|
typedef enum {
|
|
TUTUClearFuncMode_MicBypass = 0x00000001,
|
|
TUTUClearFuncMode_Resrv01 = 0x00000002,
|
|
TUTUClearFuncMode_Resrv02 = 0x00000004,
|
|
TUTUClearFuncMode_Resrv03 = 0x00000008,
|
|
TUTUClearFuncMode_Resrv04 = 0x00000010,
|
|
TUTUClearFuncMode_Resrv05 = 0x00000020,
|
|
TUTUClearFuncMode_AEC = 0x00000040,
|
|
TUTUClearFuncMode_adaSFS = 0x00000080,
|
|
TUTUClearFuncMode_NS = 0x00000100,
|
|
TUTUClearFuncMode_EQ = 0x00000200,
|
|
TUTUClearFuncMode_AGC = 0x00000400,
|
|
TUTUClearFuncMode_DRC = 0x00000800,
|
|
TUTUClearFuncMode_HPF = 0x00001000,
|
|
TUTUClearFuncMode_SC = 0x00002000,
|
|
TUTUClearFuncMode_DOA = 0x00004000,
|
|
TUTUClearFuncMode_SPKRID = 0x00008000,
|
|
TUTUClearFuncMode_MBDRC = 0x00010000,
|
|
TUTUClearFuncMode_AFC = 0x00020000,
|
|
TUTUClearFuncMode_Resrv18 = 0x00040000,
|
|
TUTUClearFuncMode_SEQ = 0x00080000,
|
|
TUTUClearFuncMode_VTRGR = 0x00100000
|
|
} TUTUClearFuncMode_e;
|
|
|
|
typedef struct {
|
|
UW16 auw16ParamAEC[16];
|
|
} TUTUAECParam_t;
|
|
|
|
typedef struct {
|
|
UW16 uw16Lambda;
|
|
UW16 uw16SupressionLevel;
|
|
UW16 uw16BGSimplicity;
|
|
UW16 uw16D;
|
|
UW16 auw16Resrv[28];
|
|
} TUTUNSParam_t;
|
|
|
|
typedef struct {
|
|
UW16 uw16EQPartitionBegin; // in Hz
|
|
UW16 uw16Resrv0;
|
|
UW16 auw16EQPartitionWidth[16]; // in Hz
|
|
W16 aw16EQGain[16]; // in dB
|
|
} TUTUEQParam_t;
|
|
|
|
typedef struct {
|
|
W16 aw16ExpanderInputLevels[2]; // in dB
|
|
UW16 uw16NumCompressorKnees; // [2;3]
|
|
UW16 uw16Resrv0;
|
|
W16 aw16CompressorKneeInputLevels[4]; // in dB
|
|
W16 aw16CompressorKneeOutputLevels[4]; // in dB
|
|
UW16 uw16AttackTime; // in ms
|
|
UW16 uw16ReleaseTime; // in ms
|
|
UW16 uw16MakeupGain; // linear gain
|
|
UW16 uw16Resrv1;
|
|
UW16 auw16Resrv[2];
|
|
} TUTUDRCParam_t;
|
|
|
|
typedef struct {
|
|
W16 w16TargetOutputLevel; // in dB
|
|
UW16 uw16MaxGain; // Maximal AGC gain
|
|
UW16 uw16MinGain; // Minimal AGC gain
|
|
UW16 uw16RespRate; // AGC adjust rate
|
|
} TUTUAGCParam_t;
|
|
|
|
typedef struct {
|
|
UW16 uw16T3T4DtctThrd;
|
|
UW16 uw16T4SilnDtctThrd;
|
|
UW16 uw16C;
|
|
UW16 uw16D;
|
|
UW16 auw16Resrv[12];
|
|
} TUTUSCParam_t;
|
|
|
|
typedef struct {
|
|
W16 aw16MicPosX[8];
|
|
W16 aw16MicPosY[8];
|
|
UW16 auw16MicPairSlct[8];
|
|
UW16 auw16Resrv[8];
|
|
} TUTUDOAParam_t;
|
|
|
|
typedef struct {
|
|
UW32 uw32OpMode; // check TUTUClearOpMode_e
|
|
UW32 uw32FuncMode; // check TUTUClearFuncMode_e
|
|
UW16 uw16NumOfMic;
|
|
UW16 uw16ECTailLengthInMs;
|
|
UW16 uw16Resv0;
|
|
UW16 uw16Resv1;
|
|
UW16 uw16Resv2;
|
|
UW16 uw16Resv3;
|
|
TUTUAECParam_t tTUTUAECParam;
|
|
TUTUNSParam_t tTUTUNSParam;
|
|
TUTUEQParam_t tTUTUEQParam;
|
|
TUTUDRCParam_t tTUTUDRCParam;
|
|
TUTUAGCParam_t tTUTUAGCParam;
|
|
TUTUSCParam_t tTUTUSCParam;
|
|
TUTUDOAParam_t tTUTUDOAParam;
|
|
} TUTUClearParam_t;
|
|
|
|
|
|
typedef struct {
|
|
W16 w16MicLevel; // MIC waveform level
|
|
W16 w16SCFlg;
|
|
W16 w16SpkrVrfCnfLvl;
|
|
W16 w16Resrv3;
|
|
W16 w16Resrv4;
|
|
W16 w16Resrv5;
|
|
W16 w16Resrv6;
|
|
W16 w16Resrv7;
|
|
W16 w16Resrv8;
|
|
W16 w16Resrv9;
|
|
W16 w16ResrvA;
|
|
W16 w16ResrvB;
|
|
W16 w16ResrvC;
|
|
W16 w16ResrvD;
|
|
W16 w16ResrvE;
|
|
W16 w16ResrvF;
|
|
} TUTUClearStat_t;
|
|
|
|
// Speaker profile structure
|
|
typedef struct {
|
|
W32 aw32Info[4];
|
|
W16 aw16Info[72];
|
|
} TUTUClearSpkrPrfl_t;
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
UW32 TUTUClear_GetVerNum(W8 *pw8Major, W8 *pw8Minor, W8 *pw8Revision);
|
|
UW32 TUTUClear_QueryMemSz(TUTUClearConfig_t *ptTUTUClearConfig);
|
|
UW32 TUTUClear_QueryLicenseExpiration(void);
|
|
W16 TUTUClear_Init(TUTUClearConfig_t *ptTUTUClearConfig, void *pTUTUClearObjectMem, void **pTUTUClearObject);
|
|
W16 TUTUClear_Release(void **pTUTUClearObject);
|
|
W16 TUTUClear_OneFrame(void *pTUTUClearObject, W16 *ptAECRef, W16 *ptMIC, W16 *ptLOut, TUTUClearStat_t *ptTUTUClearStat);
|
|
W16 TUTUClear_OneFrame_32b(void *pTUTUClearObject, W32 *ptTSMPLAECRef, W32 *ptTSMPLMIC, W32 *ptTSMPLLOut, TUTUClearStat_t *ptTUTUClearStat);
|
|
W16 TUTUClear_SetParams(void *pTUTUClearObject, TUTUClearParam_t *ptTUTUClearParam);
|
|
W16 TUTUClear_ResetSCFlg(void *pTUTUClearObject, W16 w16FlgHoldinMs);
|
|
W16 TUTUClear_InterModComm(void *pTUTUClearObjectSour, void *pTUTUClearObjectDest);
|
|
W16 TUTUClear_ImportKeywordData(void *pTUTUClearObject, const W8* fileNameStr);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _TUTUCLEAR_H_
|