583 lines
17 KiB
C
583 lines
17 KiB
C
/*--------------------------------------------------------------------------------------------------------------------
|
|
(C) Copyright 2019 ASR Ltd. All Rights Reserved
|
|
-------------------------------------------------------------------------------------------------------------------*/
|
|
|
|
/******************************************************************************
|
|
* MODULE IMPLEMENTATION FILE
|
|
*******************************************************************************
|
|
* Title: Header for Audio calibration
|
|
*
|
|
* Filename: acm_calibration.h
|
|
*
|
|
* Authors: Jackie Fan
|
|
*
|
|
* Description: Header file for Audio calibration.
|
|
*
|
|
* Last Updated:
|
|
*
|
|
* Notes:
|
|
******************************************************************************/
|
|
#ifndef _ACMCALIBRATION_H_
|
|
#define _ACMCALIBRATION_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"{
|
|
#endif
|
|
|
|
#include "acm_comm.h"
|
|
#include "AudioHAL.h"
|
|
#include "Biquad_IIR.h"
|
|
|
|
|
|
//For each VE parameter, fill a tag to mark the end
|
|
#define ASR_BOARD_VE_TAG 0xBEEF
|
|
|
|
|
|
#define ACM_VOLUME_CNT AUDIOHAL_SPK_VOL_QTY
|
|
#define ACM_RATE_CNT 2 //voice enhancement rate number
|
|
|
|
#define ACM_DSP_RXSIDETONE_BIT (0x1 << ACMDSP_CONTROL_BITS_RX_SIDETONE)
|
|
#define ACM_DSP_RXVOLUME_BIT (0x1 << ACMDSP_CONTROL_BITS_RX_VOLUME)
|
|
#define ACM_DSP_TXVOLUME_BIT (0x1 << ACMDSP_CONTROL_BITS_TX_VOLUME)
|
|
|
|
#define ACM_CODEC_MIC_BIT (0x1 << ACMCODEC_CONTROL_BITS_MIC)
|
|
#define ACM_CODEC_SIDETONE_BIT (0x1 << ACMCODEC_CONTROL_BITS_SIDETONE)
|
|
|
|
/********************************************************************************************************
|
|
ACMCodec_GainT.CodecControl defines board specific configuration:
|
|
bit 0 : mic selection
|
|
bit 1 : codec sidetone selection
|
|
*********************************************************************************************************/
|
|
#define ACMCODEC_MIC1 0
|
|
#define ACMCODEC_MIC2 1
|
|
|
|
|
|
#define ACMMEDIA_CONTROL_BITS_RX_EQ (0x0001)
|
|
#define ACMMEDIA_CONTROL_BITS_RX_DRC_AND_HFP (0x0002)
|
|
#define ACMMEDIA_CONTROL_BITS_RX_SPK_PRO (0x0004)
|
|
|
|
#define ASR_BOARD_MEDIA_VE_SETTING \
|
|
( (ACMMEDIA_CONTROL_BITS_RX_DRC_AND_HFP) \
|
|
)
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{
|
|
ACMCODEC_CONTROL_BITS_MIC = 0,
|
|
ACMCODEC_CONTROL_BITS_SIDETONE = 1,
|
|
|
|
ACMCODEC_CONTROL_BITS_CNT = 16 //16 control bits
|
|
} ACMCODEC_CONTROL_BITS;
|
|
|
|
|
|
/********************************************************************************************************
|
|
ACMDSP_VEParametersT.VoiceControl defines board specific configuration:
|
|
bit 0 : Tx EC
|
|
bit 1 : Tx Dual-Mic
|
|
bit 2 : Tx NS
|
|
bit 3 : TX EQ
|
|
bit 4 : TX AVC
|
|
bit 5 : TX Volume
|
|
bit 6 : reserved
|
|
bit 7 : reserved
|
|
bit 8 : Rx NS
|
|
bit 9 : Rx EQ
|
|
bit 10: Rx Boost
|
|
bit 11: Rx BiQuadIIR
|
|
bit 12: Rx Rx Volume
|
|
bit 13: Rx sidetone
|
|
bit 14: reserved
|
|
bit 15: reserved
|
|
*********************************************************************************************************/
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{
|
|
ACMDSP_CONTROL_BITS_TX_EC = 0,
|
|
ACMDSP_CONTROL_BITS_TX_DUALMIC = 1,
|
|
ACMDSP_CONTROL_BITS_TX_NS = 2,
|
|
ACMDSP_CONTROL_BITS_TX_EQ = 3,
|
|
ACMDSP_CONTROL_BITS_TX_AVC = 4,
|
|
ACMDSP_CONTROL_BITS_TX_VOLUME = 5,
|
|
ACMDSP_CONTROL_BITS_RESERVED6 = 6,
|
|
ACMDSP_CONTROL_BITS_RESERVED7 = 7,
|
|
|
|
ACMDSP_CONTROL_BITS_RX_NS = 8,
|
|
ACMDSP_CONTROL_BITS_RX_EQ = 9,
|
|
ACMDSP_CONTROL_BITS_RX_BOOST = 10,
|
|
ACMDSP_CONTROL_BITS_RX_BIQUADIIR= 11,
|
|
ACMDSP_CONTROL_BITS_RX_VOLUME = 12,
|
|
ACMDSP_CONTROL_BITS_RX_SIDETONE = 13,
|
|
ACMDSP_CONTROL_BITS_RX_SLOWVOICE= 14,
|
|
ACMDSP_CONTROL_BITS_MP3_MODE = 15,
|
|
|
|
ACMDSP_CONTROL_BITS_CNT = 16 //16 control bits
|
|
} ACMDSP_CONTROL_BITS;
|
|
|
|
|
|
//#ifdef CRANEL_8MRAM
|
|
#if defined(CRANEL_4MRAM) || defined(CRANEL_8MRAM) || defined(CRANEGT_DDR) || defined(CRANELS_SUPPORT) || defined(CRANELG_SUPPORT)
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{
|
|
ACMCODEC_PGA_STAGE1_M6dB = 0,
|
|
ACMCODEC_PGA_STAGE1_M3dB,
|
|
ACMCODEC_PGA_STAGE1_0dB,
|
|
ACMCODEC_PGA_STAGE1_3dB,
|
|
ACMCODEC_PGA_STAGE1_6dB,
|
|
ACMCODEC_PGA_STAGE1_9dB,
|
|
ACMCODEC_PGA_STAGE1_12dB,
|
|
ACMCODEC_PGA_STAGE1_15dB,
|
|
ACMCODEC_PGA_STAGE1_18dB,
|
|
ACMCODEC_PGA_STAGE1_21dB,
|
|
|
|
ACMCODEC_PGA_STAGE1_CNT,
|
|
|
|
ACMCODEC_PGA_STAGE1_ENUM_16_BIT = 0x7FFF //16bit enum compiling enforcement
|
|
} ACMCODEC_PGA_STAGE1;
|
|
|
|
#else
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{
|
|
ACMCODEC_PGA_STAGE1_0dB = 0,
|
|
ACMCODEC_PGA_STAGE1_6dB,
|
|
ACMCODEC_PGA_STAGE1_12dB,
|
|
ACMCODEC_PGA_STAGE1_18dB,
|
|
ACMCODEC_PGA_STAGE1_EXT_24dB = 7,/*0b111, only for cranG(3603) and craneM(1603)*/
|
|
|
|
ACMCODEC_PGA_STAGE1_CNT,
|
|
|
|
ACMCODEC_PGA_STAGE1_ENUM_16_BIT = 0x7FFF //16bit enum compiling enforcement
|
|
} ACMCODEC_PGA_STAGE1;
|
|
#endif
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{
|
|
ACMCODEC_PGA_STAGE2_M6dB = 0,
|
|
ACMCODEC_PGA_STAGE2_M3dB,
|
|
ACMCODEC_PGA_STAGE2_0dB,
|
|
ACMCODEC_PGA_STAGE2_3dB,
|
|
ACMCODEC_PGA_STAGE2_6dB,
|
|
|
|
ACMCODEC_PGA_STAGE2_CNT,
|
|
|
|
ACMCODEC_PGA_STAGE2_ENUM_16_BIT = 0x7FFF //16bit enum compiling enforcement
|
|
} ACMCODEC_PGA_STAGE2;
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{//0~31, RSNUM = 4
|
|
ACMCODEC_ADC_DIGGAIN_BYPASS = 0, //0
|
|
ACMCODEC_ADC_DIGGAIN_M24dB = 1,
|
|
ACMCODEC_ADC_DIGGAIN_M18dB = 2,
|
|
ACMCODEC_ADC_DIGGAIN_M14dB = 3,
|
|
ACMCODEC_ADC_DIGGAIN_M12dB = 4,
|
|
ACMCODEC_ADC_DIGGAIN_M10dB = 5,
|
|
ACMCODEC_ADC_DIGGAIN_M8dB = 6,
|
|
ACMCODEC_ADC_DIGGAIN_M7dB = 7,
|
|
ACMCODEC_ADC_DIGGAIN_M6dB = 8,
|
|
ACMCODEC_ADC_DIGGAIN_M5dB = 9,
|
|
ACMCODEC_ADC_DIGGAIN_M4dB = 10,
|
|
ACMCODEC_ADC_DIGGAIN_M3dB = 11,
|
|
ACMCODEC_ADC_DIGGAIN_M2dB = 12,
|
|
ACMCODEC_ADC_DIGGAIN_M1dB = 14,
|
|
ACMCODEC_ADC_DIGGAIN_0dB = 16,
|
|
ACMCODEC_ADC_DIGGAIN_1dB = 18,
|
|
ACMCODEC_ADC_DIGGAIN_2dB = 20,
|
|
ACMCODEC_ADC_DIGGAIN_3dB = 23,
|
|
ACMCODEC_ADC_DIGGAIN_4dB = 25,
|
|
ACMCODEC_ADC_DIGGAIN_5dB = 28,
|
|
ACMCODEC_ADC_DIGGAIN_6dB = 31,
|
|
|
|
ACMCODEC_ADC_DIGGAIN_ENUM_16_BIT = 0x7FFF //16bit enum compiling enforcement
|
|
} ACMCODEC_ADC_DIGGAIN;
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{//0~255, RSNUM = 4
|
|
ACMCODEC_DAC_DIGGAIN_BYPASS = 0, //0
|
|
ACMCODEC_DAC_DIGGAIN_M24dB = 1,
|
|
ACMCODEC_DAC_DIGGAIN_M18dB = 2,
|
|
ACMCODEC_DAC_DIGGAIN_M14dB = 3,
|
|
ACMCODEC_DAC_DIGGAIN_M12dB = 4,
|
|
ACMCODEC_DAC_DIGGAIN_M10dB = 5,
|
|
ACMCODEC_DAC_DIGGAIN_M8dB = 6,
|
|
ACMCODEC_DAC_DIGGAIN_M7dB = 7,
|
|
ACMCODEC_DAC_DIGGAIN_M6dB = 8,
|
|
ACMCODEC_DAC_DIGGAIN_M5dB = 9,
|
|
ACMCODEC_DAC_DIGGAIN_M4dB = 10,
|
|
ACMCODEC_DAC_DIGGAIN_M3dB = 11,
|
|
ACMCODEC_DAC_DIGGAIN_M2dB = 12,
|
|
ACMCODEC_DAC_DIGGAIN_M1dB = 14,
|
|
ACMCODEC_DAC_DIGGAIN_0dB = 16,
|
|
ACMCODEC_DAC_DIGGAIN_1dB = 18,
|
|
ACMCODEC_DAC_DIGGAIN_2dB = 20,
|
|
ACMCODEC_DAC_DIGGAIN_3dB = 23,
|
|
ACMCODEC_DAC_DIGGAIN_4dB = 25,
|
|
ACMCODEC_DAC_DIGGAIN_5dB = 28,
|
|
ACMCODEC_DAC_DIGGAIN_6dB = 32,
|
|
ACMCODEC_DAC_DIGGAIN_7dB = 36,
|
|
ACMCODEC_DAC_DIGGAIN_8dB = 40,
|
|
ACMCODEC_DAC_DIGGAIN_9dB = 45,
|
|
ACMCODEC_DAC_DIGGAIN_10dB = 51,
|
|
ACMCODEC_DAC_DIGGAIN_11dB = 57,
|
|
ACMCODEC_DAC_DIGGAIN_12dB = 64,
|
|
ACMCODEC_DAC_DIGGAIN_13dB = 71,
|
|
ACMCODEC_DAC_DIGGAIN_14dB = 80,
|
|
ACMCODEC_DAC_DIGGAIN_15dB = 90,
|
|
ACMCODEC_DAC_DIGGAIN_16dB = 101,
|
|
ACMCODEC_DAC_DIGGAIN_17dB = 113,
|
|
ACMCODEC_DAC_DIGGAIN_18dB = 127,
|
|
ACMCODEC_DAC_DIGGAIN_19dB = 143,
|
|
ACMCODEC_DAC_DIGGAIN_20dB = 160,
|
|
ACMCODEC_DAC_DIGGAIN_21dB = 180,
|
|
ACMCODEC_DAC_DIGGAIN_22dB = 201,
|
|
ACMCODEC_DAC_DIGGAIN_23dB = 226,
|
|
ACMCODEC_DAC_DIGGAIN_24dB = 254,
|
|
|
|
ACMCODEC_DAC_DIGGAIN_ENUM_16_BIT = 0x7FFF //16bit enum compiling enforcement
|
|
} ACMCODEC_DAC_DIGGAIN;
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{//0~255, RSNUM = 8
|
|
ACMCODEC_SIDETONE_GAIN_BYPASS = 0, //0
|
|
ACMCODEC_SIDETONE_GAIN_M48dB = 1,
|
|
ACMCODEC_SIDETONE_GAIN_M42dB = 2,
|
|
ACMCODEC_SIDETONE_GAIN_M38dB = 3,
|
|
ACMCODEC_SIDETONE_GAIN_M36dB = 4,
|
|
ACMCODEC_SIDETONE_GAIN_M34dB = 5,
|
|
ACMCODEC_SIDETONE_GAIN_M32dB = 6,
|
|
ACMCODEC_SIDETONE_GAIN_M30dB = 8,
|
|
ACMCODEC_SIDETONE_GAIN_M28dB = 10,
|
|
ACMCODEC_SIDETONE_GAIN_M26dB = 13,
|
|
ACMCODEC_SIDETONE_GAIN_M24dB = 16,
|
|
ACMCODEC_SIDETONE_GAIN_M22dB = 20,
|
|
ACMCODEC_SIDETONE_GAIN_M20dB = 26,
|
|
ACMCODEC_SIDETONE_GAIN_M18dB = 32,
|
|
ACMCODEC_SIDETONE_GAIN_M16dB = 41,
|
|
ACMCODEC_SIDETONE_GAIN_M14dB = 51,
|
|
ACMCODEC_SIDETONE_GAIN_M12dB = 64,
|
|
ACMCODEC_SIDETONE_GAIN_M10dB = 81,
|
|
ACMCODEC_SIDETONE_GAIN_M9dB = 91,
|
|
ACMCODEC_SIDETONE_GAIN_M8dB = 102,
|
|
ACMCODEC_SIDETONE_GAIN_M7dB = 114,
|
|
ACMCODEC_SIDETONE_GAIN_M6dB = 128,
|
|
ACMCODEC_SIDETONE_GAIN_M5dB = 144,
|
|
ACMCODEC_SIDETONE_GAIN_M4dB = 161,
|
|
ACMCODEC_SIDETONE_GAIN_M3dB = 181,
|
|
ACMCODEC_SIDETONE_GAIN_M2dB = 203,
|
|
ACMCODEC_SIDETONE_GAIN_M1dB = 228,
|
|
ACMCODEC_SIDETONE_GAIN_0dB = 255,
|
|
|
|
ACMCODEC_SIDETONE_GAIN_ENUM_16_BIT = 0x7FFF //16bit enum compiling enforcement
|
|
} ACMCODEC_SIDETONE_GAIN;
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{
|
|
ACMCODEC_DAC_GAIN_6dB = 0,
|
|
ACMCODEC_DAC_GAIN_3dB,
|
|
ACMCODEC_DAC_GAIN_0dB,
|
|
ACMCODEC_DAC_GAIN_M3dB,
|
|
ACMCODEC_DAC_GAIN_M6dB,
|
|
|
|
ACMCODEC_DAC_GAIN_CNT,
|
|
|
|
ACMCODEC_DAC_GAIN_ENUM_16_BIT = 0x7FFF //16bit enum compiling enforcement
|
|
} ACMCODEC_DAC_GAIN;
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{
|
|
//ACMCODEC_RCV_GAIN_NOTUSED = 0,
|
|
//ACMCODEC_RCV_GAIN_M6dB = 1,
|
|
ACMCODEC_RCV_GAIN_M6dB = 0,
|
|
ACMCODEC_RCV_GAIN_M3dB,
|
|
ACMCODEC_RCV_GAIN_0dB,
|
|
ACMCODEC_RCV_GAIN_3dB,
|
|
ACMCODEC_RCV_GAIN_6dB,
|
|
|
|
ACMCODEC_RCV_GAIN_CNT,
|
|
|
|
ACMCODEC_RCV_GAIN_ENUM_16_BIT = 0x7FFF //16bit enum compiling enforcement
|
|
} ACMCODEC_RCV_GAIN;
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{
|
|
ACMCODEC_CLASSG_MODE_0_9V = 0,
|
|
ACMCODEC_CLASSG_MODE_1_8V,
|
|
|
|
ACMCODEC_CLASSG_MODE_CNT,
|
|
|
|
ACMCODEC_CLASSG_MODE_ENUM_16_BIT = 0x7FFF //16bit enum compiling enforcement
|
|
} ACMCODEC_CLASSG_MODE;
|
|
|
|
|
|
//ICAT EXPORTED ENUM
|
|
typedef enum
|
|
{
|
|
ACMCODEC_CLASSD_GAIN_1_5VV = 0,
|
|
ACMCODEC_CLASSD_GAIN_2_0VV,
|
|
ACMCODEC_CLASSD_GAIN_2_3VV,
|
|
|
|
ACMCODEC_CLASSD_GAIN_CNT,
|
|
|
|
ACMCODEC_CLASSD_GAIN_ENUM_16_BIT = 0x7FFF //16bit enum compiling enforcement
|
|
} ACMCODEC_CLASSD_GAIN;
|
|
|
|
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
ACMCODEC_PGA_STAGE1 PGA_Stage1; //00:0dB;01:6dB;10:12dB;11:18dB
|
|
ACMCODEC_PGA_STAGE2 PGA_Stage2; //000:-6dB;001:-2.5dB;010:0dB;011:3.5dB;100:6dB
|
|
ACMCODEC_ADC_DIGGAIN ADC_DigGain; //AdcDigGain[4:0]:1~31
|
|
ACMCODEC_SIDETONE_GAIN SideTone_Gain; //SideToneGain[8:0] :[-256,255]
|
|
signed short Reserved1; //Reserved1
|
|
signed short Reserved2; //Reserved2
|
|
} ACMCodec_GainInT;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
ACMCODEC_DAC_DIGGAIN DAC_DigGain; //DacDigGain[7:0]:1~255
|
|
ACMCODEC_DAC_GAIN DAC_Gain; //000:6dB;001:3.5dB;010:0dB;011:-2.5dB;100:-6dB
|
|
ACMCODEC_RCV_GAIN RCV_Gain; //001:-6dB;010:-2.5dB;011:0dB;100:3.5dB;101:6dB
|
|
ACMCODEC_CLASSG_MODE ClassG_Mode; //0=+/-0.9V; 1=+/-1.8V
|
|
ACMCODEC_CLASSD_GAIN ClassD_Gain; //0=1.5V/V;1=2V/V;2=2.33V/V;3=0
|
|
signed short Reserved1; //Reserved1
|
|
} ACMCodec_GainOutT;
|
|
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
ACM_PROFILE_ID Profile;
|
|
unsigned short CodecControl;
|
|
ACMCodec_GainInT Tx_CodecGain; //tx has same gain for every volume
|
|
signed short Tx_DSPGain; //dB, tx has same gain for every volume
|
|
ACMCodec_GainOutT Rx_CodecGain[ACM_VOLUME_CNT];
|
|
signed short Rx_DSPGain[ACM_VOLUME_CNT]; //dB
|
|
signed short Rx_DSPSideToneGain; //dB
|
|
} ACMCodec_GainT;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
signed short SampleDelay; // reference delay to echo
|
|
signed short NumOfTaps; // Fir filter length
|
|
signed short ConvergenceSpeed; // slowdown
|
|
signed short Ref2EchoPowerRatio; // ratio of ref to echo, [-12 ~30]db, decimal number
|
|
signed short DC_factor; //[14000 ~16350] but default should be 16200
|
|
signed short reserved0;
|
|
} ACMDSP_ECParamsT;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
signed short BoostMode; // 0 , 1, 2, 3
|
|
signed short BoostGainDb;
|
|
signed short PeakGainDb;
|
|
signed short BoostNoiseGainDb;
|
|
signed short NoiseLevel;
|
|
signed short BoostAttach;
|
|
signed short BoostRelease;
|
|
signed short reserved;
|
|
signed short TargetLevel;
|
|
signed short AgcMaxGainDb;
|
|
signed short AgcMaxRMS;
|
|
signed short AgcEnvStep; //expert parameters
|
|
signed short RMStrackStep; //expert parameters
|
|
} ACMDSP_AGCParamsT;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
signed short a[3];
|
|
signed short b[3];
|
|
} ACMDSP_BiQuadCoeffsT;
|
|
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
unsigned short PeriodDelta;
|
|
unsigned short ExpandRate;
|
|
unsigned short CorrectionThreshold;
|
|
signed short reserved;
|
|
} ACMDSP_SlowVoiceParamsT;
|
|
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct {
|
|
signed short MaxSuppressDb; // [-40,0)db.
|
|
signed short PeakNoiseDb; // [-70,-12)db.
|
|
signed short NoiseMatrix; // following is expert parameters
|
|
signed short FrameSmoothFactor;
|
|
signed short reserved;
|
|
} ACMDSP_NSParamsT; //noise suppression para, for both TX&RX
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct {// res parameters
|
|
signed short ResMode;
|
|
signed short DtGainDb;
|
|
signed short FestGainDb;
|
|
signed short NoiseFloorDbov;
|
|
signed short CnGaindb;
|
|
signed short DtThresh;
|
|
signed short Gamma;
|
|
//following is expert paramters
|
|
signed short AuditoryMasking;
|
|
signed short NonlinearModel;
|
|
signed short WinitCntThresh;
|
|
signed short EstResMatrix;
|
|
signed short VadhangRef;
|
|
signed short VadhangNear;
|
|
signed short reserved;
|
|
} ACMDSP_NSResParamsT;
|
|
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct {// reserved parameters for dual_mic
|
|
signed short TapsNum;
|
|
signed short Oversuppression;
|
|
signed short OverAuditoryMasking;
|
|
signed short DualMicVmThresh;
|
|
signed short DualMicVmOffset;
|
|
signed short DualMicNoiseThresh;
|
|
signed short DualMicVadHang;
|
|
signed short DualMicVmRelease;
|
|
signed short NonStationaryLeftDb;
|
|
} ACMDSP_NSDmParamsT;
|
|
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct {
|
|
ACMDSP_NSParamsT NsParams;
|
|
ACMDSP_NSResParamsT ResParams;
|
|
ACMDSP_NSDmParamsT DmParams;
|
|
} ACMDSP_NSTxParamsT; //TX only
|
|
|
|
//CATStudio could not support union definition which has bit filed and short types
|
|
#if 0
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct {
|
|
BOOL Tx_EC_On:1; //bit 0
|
|
BOOL Tx_DualMic_On:1; //bit 1
|
|
BOOL Tx_NS_On:1; //bit 2
|
|
BOOL Tx_EQ_On:1; //bit 3
|
|
BOOL Tx_AVC_On:1; //bit 4
|
|
BOOL Tx_Volume_On:1; //bit 5
|
|
BOOL Reserved6:1; //bit 6
|
|
BOOL Reserved7:1; //bit 7
|
|
|
|
BOOL Rx_NS_On:1; //bit 8
|
|
BOOL Rx_EQ_On:1; //bit 9
|
|
BOOL Rx_Boost_On:1; //bit 10
|
|
BOOL Rx_BiQuadIIR_On:1; //bit 11
|
|
BOOL Rx_Volume_On:1; //bit 12
|
|
BOOL Rx_Sidetone_On:1; //bit 13
|
|
BOOL Reserved14:1; //bit 14
|
|
BOOL Reserved15:1; //bit 15
|
|
} ACMDSP_VCBitsT;
|
|
|
|
|
|
//ICAT EXPORTED UNION
|
|
typedef union {
|
|
ACMDSP_VCBitsT Bits;
|
|
unsigned short VC;
|
|
} ACMDSP_VoiceControlT; //TX only
|
|
#endif
|
|
|
|
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
ACM_PROFILE_ID Profile;
|
|
signed short Version;
|
|
unsigned short VoiceControl;
|
|
|
|
//TX path
|
|
signed short ExpertParam1[ACM_RATE_CNT];
|
|
ACMDSP_ECParamsT EcParams[ACM_RATE_CNT];
|
|
ACMDSP_NSTxParamsT NsParamsTx[ACM_RATE_CNT];
|
|
signed short TxFreq_eqCoeffArray[ACM_RATE_CNT][24];
|
|
ACMDSP_AGCParamsT TxAgcParams[ACM_RATE_CNT];
|
|
|
|
//RX path
|
|
signed short ExpertParam2[ACM_RATE_CNT];
|
|
ACMDSP_NSParamsT NsParamsRx[ACM_RATE_CNT];
|
|
signed short RxFreq_eqCoeffArray[ACM_RATE_CNT][24];
|
|
ACMDSP_AGCParamsT RxAgcParams[ACM_RATE_CNT];
|
|
ACMDSP_BiQuadCoeffsT BiQuadIIR[ACM_RATE_CNT]; //can be used as hpf/lpf or notch filter
|
|
ACMDSP_SlowVoiceParamsT SlowVoiceParam;
|
|
|
|
//Reserved
|
|
unsigned short Reserved[6];
|
|
unsigned short Tag; //Fixed as 0xBEEF
|
|
} ACMDSP_VEParametersT;
|
|
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
unsigned short drcGain;
|
|
unsigned short cutOffFreqIdx;
|
|
unsigned short resv1;
|
|
unsigned short resv2;
|
|
|
|
} ACMCP_MediaDRCParaT;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
unsigned short maxRms;
|
|
unsigned short Alpha;
|
|
unsigned short N2cos;
|
|
unsigned short resv;
|
|
|
|
} ACMCP_SPKProParaT;
|
|
|
|
//ICAT EXPORTED STRUCT
|
|
typedef struct
|
|
{
|
|
unsigned int index;
|
|
unsigned int onoffCtl; // bit0:eq, bit1: drc, bit2: spkPro
|
|
EqParamIn eqParam;
|
|
ACMCP_MediaDRCParaT drcParam;
|
|
ACMCP_SPKProParaT spkProParam;
|
|
unsigned short Reserved[7];
|
|
unsigned short Tag; //Fixed as 0xBEEF
|
|
} ACMCP_MediaVEarametersT;
|
|
|
|
int ACMCalibration_GetVEParam(unsigned short profile, ACMDSP_VEParametersT *out_params);
|
|
int ACMCalibration_GetMediaVEParam(unsigned int index, ACMCP_MediaVEarametersT* out_param);
|
|
int ACMCalibration_GetCodecGainParam(unsigned short profile, ACMCodec_GainT *out_params);
|
|
void ACMCalibration_ConfigVE(short *pData);
|
|
void ACMCalibration_ConfigMediaVE(short *pData);
|
|
void ACMCalibration_ConfigCodec(short *pData);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //_ACMCALIBRATION_H_
|