Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (C) 2004-2010 NXP Software
      3  * Copyright (C) 2010 The Android Open Source Project
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License");
      6  * you may not use this file except in compliance with the License.
      7  * You may obtain a copy of the License at
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 
     19 /************************************************************************************/
     20 /*                                                                                  */
     21 /*  Includes                                                                        */
     22 /*                                                                                  */
     23 /************************************************************************************/
     24 
     25 #include "LVCS_Private.h"
     26 #include "Filters.h"                            /* Filter definitions */
     27 #include "BIQUAD.h"                             /* Biquad definitions */
     28 #include "LVCS_Headphone_Coeffs.h"              /* Headphone coefficients */
     29 
     30 
     31 /************************************************************************************/
     32 /*                                                                                  */
     33 /*  Stereo Enhancer coefficient constant tables                                     */
     34 /*                                                                                  */
     35 /************************************************************************************/
     36 
     37 /* Coefficient table for the middle filter */
     38 const BiquadA01B1CoefsSP_t LVCS_SEMidCoefTable[] = {
     39     {CS_MIDDLE_8000_A0,         /* 8kS/s coefficients */
     40      CS_MIDDLE_8000_A1,
     41      CS_MIDDLE_8000_B1,
     42      (LVM_UINT16 )CS_MIDDLE_8000_SCALE},
     43     {CS_MIDDLE_11025_A0,        /* 11kS/s coefficients */
     44      CS_MIDDLE_11025_A1,
     45      CS_MIDDLE_11025_B1,
     46      (LVM_UINT16 )CS_MIDDLE_11025_SCALE},
     47     {CS_MIDDLE_12000_A0,        /* 12kS/s coefficients */
     48      CS_MIDDLE_12000_A1,
     49      CS_MIDDLE_12000_B1,
     50      (LVM_UINT16 )CS_MIDDLE_12000_SCALE},
     51     {CS_MIDDLE_16000_A0,        /* 16kS/s coefficients */
     52      CS_MIDDLE_16000_A1,
     53      CS_MIDDLE_16000_B1,
     54      (LVM_UINT16 )CS_MIDDLE_16000_SCALE},
     55     {CS_MIDDLE_22050_A0,        /* 22kS/s coefficients */
     56      CS_MIDDLE_22050_A1,
     57      CS_MIDDLE_22050_B1,
     58      (LVM_UINT16 )CS_MIDDLE_22050_SCALE},
     59     {CS_MIDDLE_24000_A0,        /* 24kS/s coefficients */
     60      CS_MIDDLE_24000_A1,
     61      CS_MIDDLE_24000_B1,
     62      (LVM_UINT16 )CS_MIDDLE_24000_SCALE},
     63     {CS_MIDDLE_32000_A0,        /* 32kS/s coefficients */
     64      CS_MIDDLE_32000_A1,
     65      CS_MIDDLE_32000_B1,
     66      (LVM_UINT16 )CS_MIDDLE_32000_SCALE},
     67     {CS_MIDDLE_44100_A0,        /* 44kS/s coefficients */
     68      CS_MIDDLE_44100_A1,
     69      CS_MIDDLE_44100_B1,
     70      (LVM_UINT16 )CS_MIDDLE_44100_SCALE},
     71     {CS_MIDDLE_48000_A0,        /* 48kS/s coefficients */
     72      CS_MIDDLE_48000_A1,
     73      CS_MIDDLE_48000_B1,
     74      (LVM_UINT16 )CS_MIDDLE_48000_SCALE}
     75 #ifdef HIGHER_FS
     76     ,
     77     {CS_MIDDLE_96000_A0,        /* 96kS/s coefficients */
     78      CS_MIDDLE_96000_A1,
     79      CS_MIDDLE_96000_B1,
     80      (LVM_UINT16 )CS_MIDDLE_96000_SCALE},
     81     {CS_MIDDLE_192000_A0,        /* 192kS/s coefficients */
     82      CS_MIDDLE_192000_A1,
     83      CS_MIDDLE_192000_B1,
     84      (LVM_UINT16 )CS_MIDDLE_192000_SCALE}
     85 #endif
     86     };
     87 
     88 /* Coefficient table for the side filter */
     89 const BiquadA012B12CoefsSP_t LVCS_SESideCoefTable[] = {
     90     /* Headphone Side coefficients */
     91     {CS_SIDE_8000_A0,           /* 8kS/s coefficients */
     92      CS_SIDE_8000_A1,
     93      CS_SIDE_8000_A2,
     94      CS_SIDE_8000_B1,
     95      CS_SIDE_8000_B2,
     96      (LVM_UINT16 )CS_SIDE_8000_SCALE},
     97     {CS_SIDE_11025_A0,          /* 11kS/s coefficients */
     98      CS_SIDE_11025_A1,
     99      CS_SIDE_11025_A2,
    100      CS_SIDE_11025_B1,
    101      CS_SIDE_11025_B2,
    102      (LVM_UINT16 )CS_SIDE_11025_SCALE},
    103     {CS_SIDE_12000_A0,          /* 12kS/s coefficients */
    104      CS_SIDE_12000_A1,
    105      CS_SIDE_12000_A2,
    106      CS_SIDE_12000_B1,
    107      CS_SIDE_12000_B2,
    108      (LVM_UINT16 )CS_SIDE_12000_SCALE},
    109     {CS_SIDE_16000_A0,          /* 16kS/s coefficients */
    110      CS_SIDE_16000_A1,
    111      CS_SIDE_16000_A2,
    112      CS_SIDE_16000_B1,
    113      CS_SIDE_16000_B2,
    114      (LVM_UINT16 )CS_SIDE_16000_SCALE},
    115     {CS_SIDE_22050_A0,          /* 22kS/s coefficients */
    116      CS_SIDE_22050_A1,
    117      CS_SIDE_22050_A2,
    118      CS_SIDE_22050_B1,
    119      CS_SIDE_22050_B2,
    120      (LVM_UINT16 )CS_SIDE_22050_SCALE},
    121     {CS_SIDE_24000_A0,          /* 24kS/s coefficients */
    122      CS_SIDE_24000_A1,
    123      CS_SIDE_24000_A2,
    124      CS_SIDE_24000_B1,
    125      CS_SIDE_24000_B2,
    126      (LVM_UINT16 )CS_SIDE_24000_SCALE},
    127     {CS_SIDE_32000_A0,          /* 32kS/s coefficients */
    128      CS_SIDE_32000_A1,
    129      CS_SIDE_32000_A2,
    130      CS_SIDE_32000_B1,
    131      CS_SIDE_32000_B2,
    132      (LVM_UINT16 )CS_SIDE_32000_SCALE},
    133     {CS_SIDE_44100_A0,          /* 44kS/s coefficients */
    134      CS_SIDE_44100_A1,
    135      CS_SIDE_44100_A2,
    136      CS_SIDE_44100_B1,
    137      CS_SIDE_44100_B2,
    138      (LVM_UINT16 )CS_SIDE_44100_SCALE},
    139     {CS_SIDE_48000_A0,          /* 48kS/s coefficients */
    140      CS_SIDE_48000_A1,
    141      CS_SIDE_48000_A2,
    142      CS_SIDE_48000_B1,
    143      CS_SIDE_48000_B2,
    144      (LVM_UINT16 )CS_SIDE_48000_SCALE}
    145 #ifdef HIGHER_FS
    146      ,
    147      {CS_SIDE_96000_A0,          /* 96kS/s coefficients */
    148      CS_SIDE_96000_A1,
    149      CS_SIDE_96000_A2,
    150      CS_SIDE_96000_B1,
    151      CS_SIDE_96000_B2,
    152      (LVM_UINT16 )CS_SIDE_96000_SCALE},
    153      {CS_SIDE_192000_A0,          /* 192kS/s coefficients */
    154      CS_SIDE_192000_A1,
    155      CS_SIDE_192000_A2,
    156      CS_SIDE_192000_B1,
    157      CS_SIDE_192000_B2,
    158      (LVM_UINT16 )CS_SIDE_192000_SCALE}
    159 #endif
    160 };
    161 
    162 
    163 /************************************************************************************/
    164 /*                                                                                  */
    165 /*  Equaliser coefficient constant tables                                           */
    166 /*                                                                                  */
    167 /************************************************************************************/
    168 
    169 const BiquadA012B12CoefsSP_t LVCS_EqualiserCoefTable[] = {
    170     /* Headphone coefficients */
    171     {CS_EQUALISER_8000_A0,      /* 8kS/s coefficients */
    172      CS_EQUALISER_8000_A1,
    173      CS_EQUALISER_8000_A2,
    174      CS_EQUALISER_8000_B1,
    175      CS_EQUALISER_8000_B2,
    176      (LVM_UINT16 )CS_EQUALISER_8000_SCALE},
    177     {CS_EQUALISER_11025_A0,     /* 11kS/s coefficients */
    178      CS_EQUALISER_11025_A1,
    179      CS_EQUALISER_11025_A2,
    180      CS_EQUALISER_11025_B1,
    181      CS_EQUALISER_11025_B2,
    182      (LVM_UINT16 )CS_EQUALISER_11025_SCALE},
    183     {CS_EQUALISER_12000_A0,     /* 12kS/s coefficients */
    184      CS_EQUALISER_12000_A1,
    185      CS_EQUALISER_12000_A2,
    186      CS_EQUALISER_12000_B1,
    187      CS_EQUALISER_12000_B2,
    188      (LVM_UINT16 )CS_EQUALISER_12000_SCALE},
    189     {CS_EQUALISER_16000_A0,     /* 16kS/s coefficients */
    190      CS_EQUALISER_16000_A1,
    191      CS_EQUALISER_16000_A2,
    192      CS_EQUALISER_16000_B1,
    193      CS_EQUALISER_16000_B2,
    194      (LVM_UINT16 )CS_EQUALISER_16000_SCALE},
    195     {CS_EQUALISER_22050_A0,     /* 22kS/s coefficients */
    196      CS_EQUALISER_22050_A1,
    197      CS_EQUALISER_22050_A2,
    198      CS_EQUALISER_22050_B1,
    199      CS_EQUALISER_22050_B2,
    200      (LVM_UINT16 )CS_EQUALISER_22050_SCALE},
    201     {CS_EQUALISER_24000_A0,     /* 24kS/s coefficients */
    202      CS_EQUALISER_24000_A1,
    203      CS_EQUALISER_24000_A2,
    204      CS_EQUALISER_24000_B1,
    205      CS_EQUALISER_24000_B2,
    206      (LVM_UINT16 )CS_EQUALISER_24000_SCALE},
    207     {CS_EQUALISER_32000_A0,     /* 32kS/s coefficients */
    208      CS_EQUALISER_32000_A1,
    209      CS_EQUALISER_32000_A2,
    210      CS_EQUALISER_32000_B1,
    211      CS_EQUALISER_32000_B2,
    212      (LVM_UINT16 )CS_EQUALISER_32000_SCALE},
    213     {CS_EQUALISER_44100_A0,     /* 44kS/s coefficients */
    214      CS_EQUALISER_44100_A1,
    215      CS_EQUALISER_44100_A2,
    216      CS_EQUALISER_44100_B1,
    217      CS_EQUALISER_44100_B2,
    218      (LVM_UINT16 )CS_EQUALISER_44100_SCALE},
    219     {CS_EQUALISER_48000_A0,     /* 48kS/s coefficients */
    220      CS_EQUALISER_48000_A1,
    221      CS_EQUALISER_48000_A2,
    222      CS_EQUALISER_48000_B1,
    223      CS_EQUALISER_48000_B2,
    224      (LVM_UINT16 )CS_EQUALISER_48000_SCALE},
    225 #ifdef HIGHER_FS
    226     {CS_EQUALISER_96000_A0,     /* 96kS/s coefficients */
    227      CS_EQUALISER_96000_A1,
    228      CS_EQUALISER_96000_A2,
    229      CS_EQUALISER_96000_B1,
    230      CS_EQUALISER_96000_B2,
    231      (LVM_UINT16 )CS_EQUALISER_96000_SCALE},
    232     {CS_EQUALISER_192000_A0,     /* 192kS/s coefficients */
    233      CS_EQUALISER_192000_A1,
    234      CS_EQUALISER_192000_A2,
    235      CS_EQUALISER_192000_B1,
    236      CS_EQUALISER_192000_B2,
    237      (LVM_UINT16 )CS_EQUALISER_192000_SCALE},
    238 #endif
    239 
    240     /* Concert Sound EX Headphone coefficients */
    241     {CSEX_EQUALISER_8000_A0,    /* 8kS/s coefficients */
    242      CSEX_EQUALISER_8000_A1,
    243      CSEX_EQUALISER_8000_A2,
    244      CSEX_EQUALISER_8000_B1,
    245      CSEX_EQUALISER_8000_B2,
    246      (LVM_UINT16 )CSEX_EQUALISER_8000_SCALE},
    247     {CSEX_EQUALISER_11025_A0,   /* 11kS/s coefficients */
    248      CSEX_EQUALISER_11025_A1,
    249      CSEX_EQUALISER_11025_A2,
    250      CSEX_EQUALISER_11025_B1,
    251      CSEX_EQUALISER_11025_B2,
    252      (LVM_UINT16 )CSEX_EQUALISER_11025_SCALE},
    253     {CSEX_EQUALISER_12000_A0,   /* 12kS/s coefficients */
    254      CSEX_EQUALISER_12000_A1,
    255      CSEX_EQUALISER_12000_A2,
    256      CSEX_EQUALISER_12000_B1,
    257      CSEX_EQUALISER_12000_B2,
    258      (LVM_UINT16 )CSEX_EQUALISER_12000_SCALE},
    259     {CSEX_EQUALISER_16000_A0,   /* 16kS/s coefficients */
    260      CSEX_EQUALISER_16000_A1,
    261      CSEX_EQUALISER_16000_A2,
    262      CSEX_EQUALISER_16000_B1,
    263      CSEX_EQUALISER_16000_B2,
    264      (LVM_UINT16 )CSEX_EQUALISER_16000_SCALE},
    265     {CSEX_EQUALISER_22050_A0,   /* 22kS/s coefficients */
    266      CSEX_EQUALISER_22050_A1,
    267      CSEX_EQUALISER_22050_A2,
    268      CSEX_EQUALISER_22050_B1,
    269      CSEX_EQUALISER_22050_B2,
    270      (LVM_UINT16 )CSEX_EQUALISER_22050_SCALE},
    271     {CSEX_EQUALISER_24000_A0,   /* 24kS/s coefficients */
    272      CSEX_EQUALISER_24000_A1,
    273      CSEX_EQUALISER_24000_A2,
    274      CSEX_EQUALISER_24000_B1,
    275      CSEX_EQUALISER_24000_B2,
    276      (LVM_UINT16 )CSEX_EQUALISER_24000_SCALE},
    277     {CSEX_EQUALISER_32000_A0,   /* 32kS/s coefficients */
    278      CSEX_EQUALISER_32000_A1,
    279      CSEX_EQUALISER_32000_A2,
    280      CSEX_EQUALISER_32000_B1,
    281      CSEX_EQUALISER_32000_B2,
    282      (LVM_UINT16 )CSEX_EQUALISER_32000_SCALE},
    283     {CSEX_EQUALISER_44100_A0,   /* 44kS/s coefficients */
    284      CSEX_EQUALISER_44100_A1,
    285      CSEX_EQUALISER_44100_A2,
    286      CSEX_EQUALISER_44100_B1,
    287      CSEX_EQUALISER_44100_B2,
    288      (LVM_UINT16 )CSEX_EQUALISER_44100_SCALE},
    289     {CSEX_EQUALISER_48000_A0,   /* 48kS/s coefficients */
    290      CSEX_EQUALISER_48000_A1,
    291      CSEX_EQUALISER_48000_A2,
    292      CSEX_EQUALISER_48000_B1,
    293      CSEX_EQUALISER_48000_B2,
    294      (LVM_UINT16 )CSEX_EQUALISER_48000_SCALE}
    295 #ifdef HIGHER_FS
    296     ,
    297     {CSEX_EQUALISER_96000_A0,   /* 96kS/s coefficients */
    298      CSEX_EQUALISER_96000_A1,
    299      CSEX_EQUALISER_96000_A2,
    300      CSEX_EQUALISER_96000_B1,
    301      CSEX_EQUALISER_96000_B2,
    302      (LVM_UINT16 )CSEX_EQUALISER_96000_SCALE},
    303      {CSEX_EQUALISER_192000_A0,   /* 192kS/s coefficients */
    304      CSEX_EQUALISER_192000_A1,
    305      CSEX_EQUALISER_192000_A2,
    306      CSEX_EQUALISER_192000_B1,
    307      CSEX_EQUALISER_192000_B2,
    308      (LVM_UINT16 )CSEX_EQUALISER_192000_SCALE}
    309 #endif
    310 };
    311 
    312 
    313 /************************************************************************************/
    314 /*                                                                                  */
    315 /*  Reverb delay constant tables                                                    */
    316 /*                                                                                  */
    317 /************************************************************************************/
    318 
    319 /* Stereo delay table for Concert Sound */
    320 const LVM_UINT16    LVCS_StereoDelayCS[] = {
    321     LVCS_STEREODELAY_CS_8KHZ,
    322     LVCS_STEREODELAY_CS_11KHZ,
    323     LVCS_STEREODELAY_CS_12KHZ,
    324     LVCS_STEREODELAY_CS_16KHZ,
    325     LVCS_STEREODELAY_CS_22KHZ,
    326     LVCS_STEREODELAY_CS_24KHZ,
    327     LVCS_STEREODELAY_CS_32KHZ,
    328     LVCS_STEREODELAY_CS_44KHZ,
    329     LVCS_STEREODELAY_CS_48KHZ};
    330 
    331 /************************************************************************************/
    332 /*                                                                                  */
    333 /*  Reverb coefficients constant table                                              */
    334 /*                                                                                  */
    335 /************************************************************************************/
    336 
    337 const BiquadA012B12CoefsSP_t LVCS_ReverbCoefTable[] = {
    338     /* Headphone coefficients */
    339     {CS_REVERB_8000_A0,             /* 8kS/s coefficients */
    340      CS_REVERB_8000_A1,
    341      CS_REVERB_8000_A2,
    342      CS_REVERB_8000_B1,
    343      CS_REVERB_8000_B2,
    344      (LVM_UINT16 )CS_REVERB_8000_SCALE},
    345     {CS_REVERB_11025_A0,            /* 11kS/s coefficients */
    346      CS_REVERB_11025_A1,
    347      CS_REVERB_11025_A2,
    348      CS_REVERB_11025_B1,
    349      CS_REVERB_11025_B2,
    350      (LVM_UINT16 )CS_REVERB_11025_SCALE},
    351     {CS_REVERB_12000_A0,            /* 12kS/s coefficients */
    352      CS_REVERB_12000_A1,
    353      CS_REVERB_12000_A2,
    354      CS_REVERB_12000_B1,
    355      CS_REVERB_12000_B2,
    356      (LVM_UINT16 )CS_REVERB_12000_SCALE},
    357     {CS_REVERB_16000_A0,            /* 16kS/s coefficients */
    358      CS_REVERB_16000_A1,
    359      CS_REVERB_16000_A2,
    360      CS_REVERB_16000_B1,
    361      CS_REVERB_16000_B2,
    362      (LVM_UINT16 )CS_REVERB_16000_SCALE},
    363     {CS_REVERB_22050_A0,            /* 22kS/s coefficients */
    364      CS_REVERB_22050_A1,
    365      CS_REVERB_22050_A2,
    366      CS_REVERB_22050_B1,
    367      CS_REVERB_22050_B2,
    368      (LVM_UINT16 )CS_REVERB_22050_SCALE},
    369     {CS_REVERB_24000_A0,            /* 24kS/s coefficients */
    370      CS_REVERB_24000_A1,
    371      CS_REVERB_24000_A2,
    372      CS_REVERB_24000_B1,
    373      CS_REVERB_24000_B2,
    374      (LVM_UINT16 )CS_REVERB_24000_SCALE},
    375     {CS_REVERB_32000_A0,            /* 32kS/s coefficients */
    376      CS_REVERB_32000_A1,
    377      CS_REVERB_32000_A2,
    378      CS_REVERB_32000_B1,
    379      CS_REVERB_32000_B2,
    380      (LVM_UINT16 )CS_REVERB_32000_SCALE},
    381     {CS_REVERB_44100_A0,            /* 44kS/s coefficients */
    382      CS_REVERB_44100_A1,
    383      CS_REVERB_44100_A2,
    384      CS_REVERB_44100_B1,
    385      CS_REVERB_44100_B2,
    386      (LVM_UINT16 )CS_REVERB_44100_SCALE},
    387     {CS_REVERB_48000_A0,            /* 48kS/s coefficients */
    388      CS_REVERB_48000_A1,
    389      CS_REVERB_48000_A2,
    390      CS_REVERB_48000_B1,
    391      CS_REVERB_48000_B2,
    392      (LVM_UINT16 )CS_REVERB_48000_SCALE}
    393 #ifdef HIGHER_FS
    394     ,
    395     {CS_REVERB_96000_A0,            /* 96kS/s coefficients */
    396      CS_REVERB_96000_A1,
    397      CS_REVERB_96000_A2,
    398      CS_REVERB_96000_B1,
    399      CS_REVERB_96000_B2,
    400      (LVM_UINT16 )CS_REVERB_96000_SCALE},
    401      {CS_REVERB_192000_A0,            /* 192kS/s coefficients */
    402      CS_REVERB_192000_A1,
    403      CS_REVERB_192000_A2,
    404      CS_REVERB_192000_B1,
    405      CS_REVERB_192000_B2,
    406      (LVM_UINT16 )CS_REVERB_192000_SCALE}
    407 #endif
    408 };
    409 
    410 
    411 /************************************************************************************/
    412 /*                                                                                  */
    413 /*  Bypass mixer constant tables                                                    */
    414 /*                                                                                  */
    415 /************************************************************************************/
    416 
    417 const Gain_t LVCS_OutputGainTable[] = {
    418     {LVCS_HEADPHONE_SHIFT,         /* Headphone, stereo mode */
    419      LVCS_HEADPHONE_SHIFTLOSS,
    420      LVCS_HEADPHONE_GAIN},
    421     {LVCS_EX_HEADPHONE_SHIFT,      /* EX Headphone, stereo mode */
    422      LVCS_EX_HEADPHONE_SHIFTLOSS,
    423      LVCS_EX_HEADPHONE_GAIN},
    424     {LVCS_HEADPHONE_SHIFT,         /* Headphone, mono mode */
    425      LVCS_HEADPHONE_SHIFTLOSS,
    426      LVCS_HEADPHONE_GAIN},
    427     {LVCS_EX_HEADPHONE_SHIFT,      /* EX Headphone, mono mode */
    428      LVCS_EX_HEADPHONE_SHIFTLOSS,
    429      LVCS_EX_HEADPHONE_GAIN}
    430 };
    431 
    432 
    433 /************************************************************************************/
    434 /*                                                                                  */
    435 /*  Volume correction table                                                         */
    436 /*                                                                                  */
    437 /*  Coefficient order:                                                              */
    438 /*      Compression 100% effect                                                     */
    439 /*      Compression 0% effect                                                       */
    440 /*      Gain 100% effect                                                            */
    441 /*      Gain 0% effect                                                              */
    442 /*                                                                                  */
    443 /*  The Compression gain is represented by a Q1.15 number to give a range of 0dB    */
    444 /*  to +6dB, E.g.:                                                                  */
    445 /*          0       is 0dB compression (no effect)                                  */
    446 /*          5461    is 1dB compression gain                                         */
    447 /*          10923   is 2dB compression gain                                         */
    448 /*          32767   is 6dB compression gain                                         */
    449 /*                                                                                  */
    450 /*  The Gain is represented as a Q3.13 number to give a range of +8 to -infinity    */
    451 /*  E.g.:                                                                           */
    452 /*          0       is -infinity                                                    */
    453 /*          32767   is +18dB (x8) gain                                              */
    454 /*          4096    is 0dB gain                                                     */
    455 /*          1024    is -12dB gain                                                   */
    456 /*                                                                                  */
    457 /************************************************************************************/
    458 const LVCS_VolCorrect_t LVCS_VolCorrectTable[] = {
    459 #ifdef BUILD_FLOAT
    460     {0.433362f,          /* Headphone, stereo mode */
    461      0.000000f,
    462      1.000024f,
    463      1.412640f},
    464     {0.433362f,          /* EX Headphone, stereo mode */
    465      0.000000f,
    466      1.000024f,
    467      1.412640f},
    468     {1.000000f,         /* Headphone, mono mode */
    469      0.000000f,
    470      1.000024f,
    471      1.412640f},
    472     {1.000000f,         /* EX Headphone, mono mode */
    473      0.000000f,
    474      1.000024f,
    475      1.412640f}
    476 #else
    477     {14200,          /* Headphone, stereo mode */
    478      0,
    479      4096,
    480      5786},
    481     {14200,          /* EX Headphone, stereo mode */
    482      0,
    483      4096,
    484      5786},
    485     {32767,         /* Headphone, mono mode */
    486      0,
    487      4096,
    488      5786},
    489     {32767,         /* EX Headphone, mono mode */
    490      0,
    491      4096,
    492      5786}
    493 #endif
    494 };
    495 
    496 /************************************************************************************/
    497 /*                                                                                  */
    498 /*  Mixer time constants, 100ms                                                     */
    499 /*                                                                                  */
    500 /************************************************************************************/
    501 
    502 #define LVCS_VOL_TC_Fs8000      32580       /* Floating point value 0.994262695 */
    503 #define LVCS_VOL_TC_Fs11025     32632       /* Floating point value 0.995849609 */
    504 #define LVCS_VOL_TC_Fs12000     32643       /* Floating point value 0.996185303 */
    505 #define LVCS_VOL_TC_Fs16000     32674       /* Floating point value 0.997131348 */
    506 #define LVCS_VOL_TC_Fs22050     32700       /* Floating point value 0.997924805 */
    507 #define LVCS_VOL_TC_Fs24000     32705       /* Floating point value 0.998077393 */
    508 #define LVCS_VOL_TC_Fs32000     32721       /* Floating point value 0.998565674 */
    509 #define LVCS_VOL_TC_Fs44100     32734       /* Floating point value 0.998962402 */
    510 #define LVCS_VOL_TC_Fs48000     32737       /* Floating point value 0.999053955 */
    511 #if defined(BUILD_FLOAT) && defined(HIGHER_FS)
    512 #define LVCS_VOL_TC_Fs96000     32751       /* Floating point value 0.999511703 */   /* Todo @ need to re check this value*/
    513 #define LVCS_VOL_TC_Fs192000    32763       /* Floating point value 0.999877925 */  /* Todo @ need to re check this value*/
    514 #endif
    515 
    516 #if defined(BUILD_FLOAT) && defined(HIGHER_FS)
    517 const LVM_INT16 LVCS_VolumeTCTable[11] = {LVCS_VOL_TC_Fs8000,
    518 		                                  LVCS_VOL_TC_Fs11025,
    519 										  LVCS_VOL_TC_Fs12000,
    520 										  LVCS_VOL_TC_Fs16000,
    521 										  LVCS_VOL_TC_Fs22050,
    522 										  LVCS_VOL_TC_Fs24000,
    523 										  LVCS_VOL_TC_Fs32000,
    524 										  LVCS_VOL_TC_Fs44100,
    525 										  LVCS_VOL_TC_Fs48000,
    526 										  LVCS_VOL_TC_Fs96000,
    527 										  LVCS_VOL_TC_Fs192000
    528 };
    529 #else
    530 const LVM_INT16 LVCS_VolumeTCTable[9] = {LVCS_VOL_TC_Fs8000,
    531                                         LVCS_VOL_TC_Fs11025,
    532                                         LVCS_VOL_TC_Fs12000,
    533                                         LVCS_VOL_TC_Fs16000,
    534                                         LVCS_VOL_TC_Fs22050,
    535                                         LVCS_VOL_TC_Fs24000,
    536                                         LVCS_VOL_TC_Fs32000,
    537                                         LVCS_VOL_TC_Fs44100,
    538                                         LVCS_VOL_TC_Fs48000
    539 };
    540 #endif
    541 
    542 /************************************************************************************/
    543 /*                                                                                  */
    544 /*  Sample rate table                                                               */
    545 /*                                                                                  */
    546 /************************************************************************************/
    547 #if defined(BUILD_FLOAT) && defined(HIGHER_FS)
    548 const LVM_INT32   LVCS_SampleRateTable[11] = {8000,
    549 		                                      11025,
    550 											  12000,
    551 											  16000,
    552 											  22050,
    553 											  24000,
    554 											  32000,
    555 											  44100,
    556 											  48000,
    557 											  96000,
    558 											  192000
    559 };
    560 #else
    561 const LVM_INT16   LVCS_SampleRateTable[9] = {8000,
    562                                             11025,
    563                                             12000,
    564                                             16000,
    565                                             22050,
    566                                             24000,
    567                                             32000,
    568                                             44100,
    569                                             48000
    570 };
    571 #endif
    572