www.pudn.com > 8032.RAR > adsp.c


/**********************************************************************/ 
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/ 
/***************                                       ****************/ 
/***************  $Modtime:: 04/04/19 3:01p    $       ****************/ 
/***************  $Revision:: 1                $       ****************/ 
/***************                                       ****************/ 
/***************   Description :                       ****************/ 
/***************                                       ****************/ 
/***************                                       ****************/ 
/***************       Company : MediaTek Inc.         ****************/ 
/***************    Programmer :                       ****************/ 
/**********************************************************************/ 
 
#ifndef _ADSP_C 
#define _ADSP_C 
 
#define VOLUME_BASE (0x20000/MAX_VOL_LEVEL) 
 
#ifdef TRACE_WRONG_VOL 
  #define VOL_ZERO_BASE         1 
#else /* normal case */ 
  #ifdef VOL_ZERO_AS_MUTE 
    #define VOL_ZERO_BASE       0 
  #else /* volume zero no mute */ 
    #ifdef USE_LINEAR_VLOUME 
      #define VOL_ZERO_BASE     (VOLUME_BASE/2) 
    #else 
      #define VOL_ZERO_BASE     0x150 
    #endif 
  #endif /* volume zero no mute */ 
#endif /* normal case */ 
 
#ifdef USE_LINEAR_VLOUME 
code DWRD VOLUME[MAX_VOL_LEVEL + 1] = 
{ 
  VOL_ZERO_BASE, 
  VOLUME_BASE *  1, VOLUME_BASE *  2, VOLUME_BASE *  3, VOLUME_BASE *  4, VOLUME_BASE *  5, 
  VOLUME_BASE *  6, VOLUME_BASE *  7, VOLUME_BASE *  8, VOLUME_BASE *  9, VOLUME_BASE * 10, 
  VOLUME_BASE * 11, VOLUME_BASE * 12, VOLUME_BASE * 13, VOLUME_BASE * 14, VOLUME_BASE * 15, 
  VOLUME_BASE * 16, VOLUME_BASE * 17, VOLUME_BASE * 18, VOLUME_BASE * 19, 0x20000 
}; 
 
#else 
// 2.5dB per step 
code DWRD VOLUME[MAX_VOL_LEVEL + 1] = 
{ 
  VOL_ZERO_BASE, 
  0x00000229,0x000002E1,0x000003D7,0x0000051F,0x000006D4, 
  0x0000091B,0x00000C24,0x00001031,0x00001597,0x00001CCB, 
  0x00002665,0x00003333,0x00004447,0x00005B0C,0x0000796A, 
  0x0000A1E9,0x0000D7E9,0x00011FEB,0x00017FF2,0x00020000 
}; 
#endif 
 
 
code DWRD GAINDRY[GAIN_DRY_MAX] = 
{ 
  0x00003314,0x0000394F,0x0000404D,0x00004826,0x000050F4,0x00005AD5,0x000065EA,0x00007259, 
  0x0000804D,0x00008FF5,0x0000A186,0x0000B53B,0x0000CB59,0x0000E429,0x00010000,0x00011F3C, 
  0x00014248,0x0001699C,0x000195BB,0x0001C73D,0x0001FEC9,0x00023D1C,0x0002830A,0x0002D181, 
  0x0003298B,0x00038C52,0x0003FB27,0x00047782,0x0005030A 
}; 
 
code DWRD GAINBAND[GAIN_BAND_MAX] = 
{ 
  0xFFFF3315,0xFFFF3950,0xFFFF404E,0xFFFF4827,0xFFFF50F5,0xFFFF5AD6,0xFFFF65EB,0xFFFF725A, 
  0xFFFF804E,0xFFFF8FF6,0xFFFFA187,0xFFFFB53C,0xFFFFCB5A,0xFFFFE42A,0x00000000,0x00001F3C, 
  0x00004248,0x0000699C,0x000095BB,0x0000C73D,0x0000FEC9,0x00013D1C,0x0001830A,0x0001D181, 
  0x0002298B,0x00028C52,0x0002FB27,0x00037782,0x0004030A 
}; 
 
code DWRD MICGAIN[GAIN_MIC_MAX] = 
{ 
  0, 
  0x000005C9,0x0000082C,0x00000B8B,0x0000104E,0x00001709,0x00002089,0x00002DF5,0x000040EB, 
  0x00005BB3,0x00008187,0x0000B6F6,0x00010271,0x00016D0E,0x000203A8,0x0002D862,0x000404DE, 
  0x0005AD51,0x000804DD,0x000B53BF,0x000FFFFE 
}; 
 
#ifdef KARAOKE_SIMPLE_ECHO 
code BYTE ECHO_DELAY[ECHO_LEVEL_MAX] = 
{ 
  0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 
  100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200 
}; 
 
code DWRD ECHO_LEVEL[ECHO_LEVEL_MAX] = 
{ 
  0, 
  0x00002E49,0x00004161,0x00005C5A,0x00008274,0x0000B845,0x00010449,0x00016FAA,0x00020756, 
  0x0002DD96,0x00040C37,0x0005B7B1,0x00081385,0x000B6873,0x00101D3F,0x0016C311,0x002026F3, 
  0x002D6A86,0x004026E7,0x005A9DF7,0x007FFFFF 
}; 
 
code DWRD ECHO_DEPTH[ECHO_LEVEL_MAX] = 
{ 
  0, 
  0x00002E49,0x00004161,0x00005C5A,0x00008274,0x0000B845,0x00010449,0x00016FAA,0x00020756, 
  0x0002DD96,0x00040C37,0x0005B7B1,0x00081385,0x000B6873,0x00101D3F,0x0016C311,0x002026F3, 
  0x002D6A86,0x004026E7,0x005A9DF7,0x00700000 
}; 
#else /* original echo */ 
code BYTE ECHO_DELAY[DELAY_ECHO_MAX] = 
{ 
  0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 
  100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200 
}; 
 
code DWRD ECHO_LEVEL[ECHO_LEVEL_MAX] = 
{ 
  0, 
  0x00002E49,0x00004161,0x00005C5A,0x00008274,0x0000B845,0x00010449,0x00016FAA,0x00020756, 
  0x0002DD96,0x00040C37,0x0005B7B1,0x00081385,0x000B6873,0x00101D3F,0x0016C311,0x002026F3, 
  0x002D6A86,0x004026E7,0x005A9DF7,0x007FFFFF 
}; 
 
code DWRD ECHO_DEPTH[ECHO_LEVEL_MAX] = 
{ 
  0, 
  0x00002E49,0x00004161,0x00005C5A,0x00008274,0x0000B845,0x00010449,0x00016FAA,0x00020756, 
  0x0002DD96,0x00040C37,0x0005B7B1,0x00081385,0x000B6873,0x00101D3F,0x0016C311,0x002026F3, 
  0x002D6A86,0x004026E7,0x005A9DF7,0x00700000 
}; 
#endif /* original echo */ 
 
code DWRD TRIM[TRIM_LEVEL_MAX] = 
{ 
  0x0000A1E9,0x0000AB81,0x0000B5AA,0x0000C06E,0x0000CBD5,0x0000D7E9,0x0000E4B4,0x0000F241, 
  0x0001009C,0x00010FD0,0x00011FEB,0x000130FB,0x0001430D,0x00015631,0x00016A78,0x00017FF2, 
  0x000196B2,0x0001AECB,0x0001C852,0x0001E35C,0x00020000,0x00021E57,0x00023E79,0x00026083, 
  0x00028492,0x0002AAC3,0x0002D338,0x0002FE13,0x00032B77,0x00035B8C,0x00038E7B,0x0003C46E, 
  0x0003FD93,0x00043A1B,0x00047A3A,0x0004BE25,0x00050616,0x0005524B,0x0005A303,0x0005F884, 
  0x00065316 
}; 
 
code DWRD VSURRGAIN[VSURR_GAIN_MAX] =  
{ 
  0x00001031,0x00001462,0x000019A9,0x0000204E,0x000028AB,0x00003333,0x00004075,0x00005126, 
  0x00006628,0x0000809C,0x0000A1E9,0x0000CBD5,0x0001009C,0x0001430D,0x000196B2,0x00020000 
}; 
 
code DWRD DYNAMIC_RANGE[DNR_MAX] = 
{ 
  0x00000000, 
  0x000FFFFF,0x001FFFFF,0x002FFFFF,0x003FFFFF,0x004FFFFF,0x005FFFFF,0x006FFFFF,0x007FFFFF 
}; 
 
code DWRD LRMIX[LRMIX_MAX] = 
{ 
  0x00000000, 
  0x00080000,0x00100000,0x00180000,0x00200000,0x00280000,0x00300000,0x00380000,0x00400000, 
  0x00480000,0x00500000,0x00580000,0x00600000,0x00680000,0x00700000,0x00780000,0x00800000 
}; 
 
code DWRD MICTH[MIC_TH_MAX] = 
{ 
  0x2000, 0x4000, 0x6000, 0x8000, 0xA000, 0xC000, 0xE000, 0x10000, 0x20000, 0x40000, 0x60000, 0x80000, 0xA0000, 0xC0000, 0xE0000 
}; 
 
code BYTE SBDELAY[DELAY_SUB_MAX] = 
{ 
  1, 2, 3, 4, 5, 6, 7 
}; 
 
#ifdef PLAYER_SURROUND 
typedef struct rReverbMode 
{ 
  DWRD dwGain; 
  BYTE bReverbBank0; 
  BYTE bReverbBank1; 
  BYTE bReverbBank2; 
  BYTE bReverbBank3; 
} rReverbMode; 
 
static code rReverbMode prReverMode[AUD_REVERB_MODE_MAX] = { 
  {0x200000, 79, 67, 59, 47},       /* 01 Concert */ 
  {0x180000, 41, 31, 23, 13},       /* 02 Living Room */ 
  {0x300000, 79, 59, 37, 19},       /* 03 Hall */ 
  {0x400000, 19, 17, 11,  7},       /* 04 Bathroom */ 
  {0x600000, 59, 47, 37, 23},       /* 05 Cave */ 
  {0x100000, 79, 73, 71, 67},       /* 06 Arena */ 
  {0x500000, 73, 67, 31, 11}        /* 07 Church */ 
}; 
 
static code char pcChEqPreset[AUD_EQ_TYPE_MAX][CH_EQ_BAND_NO+1] = { 
  { 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },      // 00 NONE 
  { 0,  10,  8,  5,  0,  -2,  0,  2,  4,  8, 10 },    // 01 ROCK 
  { 0,  -2,  0,  4,  8,  10,  8,  5,  1,  -2,  -4 },  // 02 POP 
  { 0,  14,  12,  8,  2,  -2,  0,  6,  10,  8,  4 },  // 03 LIVE 
  { 0,  10,  9,  7,  4,  0,  -3,  -5,  -3,  -1, 0 },  // 04 DANCE 
  { 0,  -4,  -2,  -1,  0,  1,  3,  6,  8,  9, 10 },   // 05 TECHNO 
  { 0,  0,  0,  0,  0,  0,  0,  -1,  -2,  -3, -5 },   // 06 Classic 
  { 0,  5,  4,  3,  2,  1,  -1,  -3,  -5,  -7, -8 }   // 07 Soft 
}; 
 
#endif /* PLAYER_SURROUND */ 
 
#endif /* _ADSP_C */