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 "LVDBE.h"
     26 #include "LVDBE_Coeffs.h"               /* Filter coefficients */
     27 #include "BIQUAD.h"
     28 
     29 
     30 /************************************************************************************/
     31 /*                                                                                  */
     32 /*    Coefficients constant table                                                   */
     33 /*                                                                                  */
     34 /************************************************************************************/
     35 
     36 /*
     37  * High Pass Filter Coefficient table
     38  */
     39 #ifndef BUILD_FLOAT
     40 const BQ_C32_Coefs_t LVDBE_HPF_Table[] = {
     41 #else /*BUILD_FLOAT*/
     42 const BQ_FLOAT_Coefs_t LVDBE_HPF_Table[] = {
     43 #endif /*BUILD_FLOAT*/
     44     /* Coefficients for 55Hz centre frequency */
     45     {HPF_Fs8000_Fc55_A2,                /* 8kS/s coefficients */
     46      HPF_Fs8000_Fc55_A1,
     47      HPF_Fs8000_Fc55_A0,
     48      -HPF_Fs8000_Fc55_B2,
     49      -HPF_Fs8000_Fc55_B1},
     50     {HPF_Fs11025_Fc55_A2,                /* 11kS/s coefficients */
     51      HPF_Fs11025_Fc55_A1,
     52      HPF_Fs11025_Fc55_A0,
     53      -HPF_Fs11025_Fc55_B2,
     54      -HPF_Fs11025_Fc55_B1},
     55     {HPF_Fs12000_Fc55_A2,                /* 12kS/s coefficients */
     56      HPF_Fs12000_Fc55_A1,
     57      HPF_Fs12000_Fc55_A0,
     58      -HPF_Fs12000_Fc55_B2,
     59      -HPF_Fs12000_Fc55_B1},
     60     {HPF_Fs16000_Fc55_A2,                /* 16kS/s coefficients */
     61      HPF_Fs16000_Fc55_A1,
     62      HPF_Fs16000_Fc55_A0,
     63      -HPF_Fs16000_Fc55_B2,
     64      -HPF_Fs16000_Fc55_B1},
     65     {HPF_Fs22050_Fc55_A2,                /* 22kS/s coefficients */
     66      HPF_Fs22050_Fc55_A1,
     67      HPF_Fs22050_Fc55_A0,
     68      -HPF_Fs22050_Fc55_B2,
     69      -HPF_Fs22050_Fc55_B1},
     70     {HPF_Fs24000_Fc55_A2,                /* 24kS/s coefficients */
     71      HPF_Fs24000_Fc55_A1,
     72      HPF_Fs24000_Fc55_A0,
     73      -HPF_Fs24000_Fc55_B2,
     74      -HPF_Fs24000_Fc55_B1},
     75     {HPF_Fs32000_Fc55_A2,                /* 32kS/s coefficients */
     76      HPF_Fs32000_Fc55_A1,
     77      HPF_Fs32000_Fc55_A0,
     78      -HPF_Fs32000_Fc55_B2,
     79      -HPF_Fs32000_Fc55_B1},
     80     {HPF_Fs44100_Fc55_A2,                /* 44kS/s coefficients */
     81      HPF_Fs44100_Fc55_A1,
     82      HPF_Fs44100_Fc55_A0,
     83      -HPF_Fs44100_Fc55_B2,
     84      -HPF_Fs44100_Fc55_B1},
     85     {HPF_Fs48000_Fc55_A2,                /* 48kS/s coefficients */
     86      HPF_Fs48000_Fc55_A1,
     87      HPF_Fs48000_Fc55_A0,
     88      -HPF_Fs48000_Fc55_B2,
     89      -HPF_Fs48000_Fc55_B1},
     90 #ifdef HIGHER_FS
     91     {HPF_Fs96000_Fc55_A2,                /* 96kS/s coefficients */
     92      HPF_Fs96000_Fc55_A1,
     93      HPF_Fs96000_Fc55_A0,
     94      -HPF_Fs96000_Fc55_B2,
     95      -HPF_Fs96000_Fc55_B1},
     96     {HPF_Fs192000_Fc55_A2,                /* 192kS/s coefficients */
     97      HPF_Fs192000_Fc55_A1,
     98      HPF_Fs192000_Fc55_A0,
     99      -HPF_Fs192000_Fc55_B2,
    100      -HPF_Fs192000_Fc55_B1},
    101 #endif
    102 
    103     /* Coefficients for 66Hz centre frequency */
    104     {HPF_Fs8000_Fc66_A2,                /* 8kS/s coefficients */
    105      HPF_Fs8000_Fc66_A1,
    106      HPF_Fs8000_Fc66_A0,
    107      -HPF_Fs8000_Fc66_B2,
    108      -HPF_Fs8000_Fc66_B1},
    109     {HPF_Fs11025_Fc66_A2,                /* 11kS/s coefficients */
    110      HPF_Fs11025_Fc66_A1,
    111      HPF_Fs11025_Fc66_A0,
    112      -HPF_Fs11025_Fc66_B2,
    113      -HPF_Fs11025_Fc66_B1},
    114     {HPF_Fs12000_Fc66_A2,                /* 12kS/s coefficients */
    115      HPF_Fs12000_Fc66_A1,
    116      HPF_Fs12000_Fc66_A0,
    117      -HPF_Fs12000_Fc66_B2,
    118      -HPF_Fs12000_Fc66_B1},
    119     {HPF_Fs16000_Fc66_A2,                /* 16kS/s coefficients */
    120      HPF_Fs16000_Fc66_A1,
    121      HPF_Fs16000_Fc66_A0,
    122      -HPF_Fs16000_Fc66_B2,
    123      -HPF_Fs16000_Fc66_B1},
    124     {HPF_Fs22050_Fc66_A2,                /* 22kS/s coefficients */
    125      HPF_Fs22050_Fc66_A1,
    126      HPF_Fs22050_Fc66_A0,
    127      -HPF_Fs22050_Fc66_B2,
    128      -HPF_Fs22050_Fc66_B1},
    129     {HPF_Fs24000_Fc66_A2,                /* 24kS/s coefficients */
    130      HPF_Fs24000_Fc66_A1,
    131      HPF_Fs24000_Fc66_A0,
    132      -HPF_Fs24000_Fc66_B2,
    133      -HPF_Fs24000_Fc66_B1},
    134     {HPF_Fs32000_Fc66_A2,                /* 32kS/s coefficients */
    135      HPF_Fs32000_Fc66_A1,
    136      HPF_Fs32000_Fc66_A0,
    137      -HPF_Fs32000_Fc66_B2,
    138      -HPF_Fs32000_Fc66_B1},
    139     {HPF_Fs44100_Fc66_A2,                /* 44kS/s coefficients */
    140      HPF_Fs44100_Fc66_A1,
    141      HPF_Fs44100_Fc66_A0,
    142      -HPF_Fs44100_Fc66_B2,
    143      -HPF_Fs44100_Fc66_B1},
    144     {HPF_Fs48000_Fc66_A2,                /* 48kS/s coefficients */
    145      HPF_Fs48000_Fc66_A1,
    146      HPF_Fs48000_Fc66_A0,
    147      -HPF_Fs48000_Fc66_B2,
    148      -HPF_Fs48000_Fc66_B1},
    149 #ifdef HIGHER_FS
    150     {HPF_Fs96000_Fc66_A2,                /* 96kS/s coefficients */
    151      HPF_Fs96000_Fc66_A1,
    152      HPF_Fs96000_Fc66_A0,
    153      -HPF_Fs96000_Fc66_B2,
    154      -HPF_Fs96000_Fc66_B1},
    155     {HPF_Fs192000_Fc66_A2,                /* 192kS/s coefficients */
    156      HPF_Fs192000_Fc66_A1,
    157      HPF_Fs192000_Fc66_A0,
    158      -HPF_Fs192000_Fc66_B2,
    159      -HPF_Fs192000_Fc66_B1},
    160 #endif
    161 
    162 
    163     /* Coefficients for 78Hz centre frequency */
    164     {HPF_Fs8000_Fc78_A2,                /* 8kS/s coefficients */
    165      HPF_Fs8000_Fc78_A1,
    166      HPF_Fs8000_Fc78_A0,
    167      -HPF_Fs8000_Fc78_B2,
    168      -HPF_Fs8000_Fc78_B1},
    169     {HPF_Fs11025_Fc78_A2,                /* 11kS/s coefficients */
    170      HPF_Fs11025_Fc78_A1,
    171      HPF_Fs11025_Fc78_A0,
    172      -HPF_Fs11025_Fc78_B2,
    173      -HPF_Fs11025_Fc78_B1},
    174     {HPF_Fs12000_Fc78_A2,                /* 12kS/s coefficients */
    175      HPF_Fs12000_Fc78_A1,
    176      HPF_Fs12000_Fc78_A0,
    177      -HPF_Fs12000_Fc78_B2,
    178      -HPF_Fs12000_Fc78_B1},
    179     {HPF_Fs16000_Fc78_A2,                /* 16kS/s coefficients */
    180      HPF_Fs16000_Fc78_A1,
    181      HPF_Fs16000_Fc78_A0,
    182      -HPF_Fs16000_Fc78_B2,
    183      -HPF_Fs16000_Fc78_B1},
    184     {HPF_Fs22050_Fc78_A2,                /* 22kS/s coefficients */
    185      HPF_Fs22050_Fc78_A1,
    186      HPF_Fs22050_Fc78_A0,
    187      -HPF_Fs22050_Fc78_B2,
    188      -HPF_Fs22050_Fc78_B1},
    189     {HPF_Fs24000_Fc78_A2,                /* 24kS/s coefficients */
    190      HPF_Fs24000_Fc78_A1,
    191      HPF_Fs24000_Fc78_A0,
    192      -HPF_Fs24000_Fc78_B2,
    193      -HPF_Fs24000_Fc78_B1},
    194     {HPF_Fs32000_Fc78_A2,                /* 32kS/s coefficients */
    195      HPF_Fs32000_Fc78_A1,
    196      HPF_Fs32000_Fc78_A0,
    197      -HPF_Fs32000_Fc78_B2,
    198      -HPF_Fs32000_Fc78_B1},
    199     {HPF_Fs44100_Fc78_A2,                /* 44kS/s coefficients */
    200      HPF_Fs44100_Fc78_A1,
    201      HPF_Fs44100_Fc78_A0,
    202      -HPF_Fs44100_Fc78_B2,
    203      -HPF_Fs44100_Fc78_B1},
    204     {HPF_Fs48000_Fc78_A2,                /* 48kS/s coefficients */
    205      HPF_Fs48000_Fc78_A1,
    206      HPF_Fs48000_Fc78_A0,
    207      -HPF_Fs48000_Fc78_B2,
    208      -HPF_Fs48000_Fc78_B1},
    209 #ifdef HIGHER_FS
    210     {HPF_Fs96000_Fc78_A2,                /* 96kS/s coefficients */
    211      HPF_Fs96000_Fc78_A1,
    212      HPF_Fs96000_Fc78_A0,
    213      -HPF_Fs96000_Fc78_B2,
    214      -HPF_Fs96000_Fc78_B1},
    215     {HPF_Fs192000_Fc78_A2,                /* 192kS/s coefficients */
    216      HPF_Fs192000_Fc78_A1,
    217      HPF_Fs192000_Fc78_A0,
    218      -HPF_Fs192000_Fc78_B2,
    219      -HPF_Fs192000_Fc78_B1},
    220 #endif
    221 
    222 
    223     /* Coefficients for 90Hz centre frequency */
    224     {HPF_Fs8000_Fc90_A2,                /* 8kS/s coefficients */
    225      HPF_Fs8000_Fc90_A1,
    226      HPF_Fs8000_Fc90_A0,
    227      -HPF_Fs8000_Fc90_B2,
    228      -HPF_Fs8000_Fc90_B1},
    229     {HPF_Fs11025_Fc90_A2,                /* 11kS/s coefficients */
    230      HPF_Fs11025_Fc90_A1,
    231      HPF_Fs11025_Fc90_A0,
    232      -HPF_Fs11025_Fc90_B2,
    233      -HPF_Fs11025_Fc90_B1},
    234     {HPF_Fs12000_Fc90_A2,                /* 12kS/s coefficients */
    235      HPF_Fs12000_Fc90_A1,
    236      HPF_Fs12000_Fc90_A0,
    237      -HPF_Fs12000_Fc90_B2,
    238      -HPF_Fs12000_Fc90_B1},
    239     {HPF_Fs16000_Fc90_A2,                /* 16kS/s coefficients */
    240      HPF_Fs16000_Fc90_A1,
    241      HPF_Fs16000_Fc90_A0,
    242      -HPF_Fs16000_Fc90_B2,
    243      -HPF_Fs16000_Fc90_B1},
    244     {HPF_Fs22050_Fc90_A2,                /* 22kS/s coefficients */
    245      HPF_Fs22050_Fc90_A1,
    246      HPF_Fs22050_Fc90_A0,
    247      -HPF_Fs22050_Fc90_B2,
    248      -HPF_Fs22050_Fc90_B1},
    249     {HPF_Fs24000_Fc90_A2,                /* 24kS/s coefficients */
    250      HPF_Fs24000_Fc90_A1,
    251      HPF_Fs24000_Fc90_A0,
    252      -HPF_Fs24000_Fc90_B2,
    253      -HPF_Fs24000_Fc90_B1},
    254     {HPF_Fs32000_Fc90_A2,                /* 32kS/s coefficients */
    255      HPF_Fs32000_Fc90_A1,
    256      HPF_Fs32000_Fc90_A0,
    257      -HPF_Fs32000_Fc90_B2,
    258      -HPF_Fs32000_Fc90_B1},
    259     {HPF_Fs44100_Fc90_A2,                /* 44kS/s coefficients */
    260      HPF_Fs44100_Fc90_A1,
    261      HPF_Fs44100_Fc90_A0,
    262      -HPF_Fs44100_Fc90_B2,
    263      -HPF_Fs44100_Fc90_B1},
    264     {HPF_Fs48000_Fc90_A2,                /* 48kS/s coefficients */
    265      HPF_Fs48000_Fc90_A1,
    266      HPF_Fs48000_Fc90_A0,
    267      -HPF_Fs48000_Fc90_B2,
    268      -HPF_Fs48000_Fc90_B1}
    269 
    270 #ifdef HIGHER_FS
    271     ,
    272     {HPF_Fs96000_Fc90_A2,                /* 96kS/s coefficients */
    273      HPF_Fs96000_Fc90_A1,
    274      HPF_Fs96000_Fc90_A0,
    275      -HPF_Fs96000_Fc90_B2,
    276      -HPF_Fs96000_Fc90_B1},
    277     {HPF_Fs192000_Fc90_A2,                /* 192kS/s coefficients */
    278      HPF_Fs192000_Fc90_A1,
    279      HPF_Fs192000_Fc90_A0,
    280      -HPF_Fs192000_Fc90_B2,
    281      -HPF_Fs192000_Fc90_B1}
    282 #endif
    283 
    284 };
    285 
    286 /*
    287  * Band Pass Filter coefficient table
    288  */
    289 #ifndef BUILD_FLOAT
    290 const BP_C32_Coefs_t LVDBE_BPF_Table[] = {
    291 #else /*BUILD_FLOAT*/
    292 const BP_FLOAT_Coefs_t LVDBE_BPF_Table[] = {
    293 #endif /*BUILD_FLOAT*/
    294     /* Coefficients for 55Hz centre frequency */
    295     {BPF_Fs8000_Fc55_A0,                /* 8kS/s coefficients */
    296      -BPF_Fs8000_Fc55_B2,
    297      -BPF_Fs8000_Fc55_B1},
    298     {BPF_Fs11025_Fc55_A0,                /* 11kS/s coefficients */
    299      -BPF_Fs11025_Fc55_B2,
    300      -BPF_Fs11025_Fc55_B1},
    301     {BPF_Fs12000_Fc55_A0,                /* 12kS/s coefficients */
    302      -BPF_Fs12000_Fc55_B2,
    303      -BPF_Fs12000_Fc55_B1},
    304     {BPF_Fs16000_Fc55_A0,                /* 16kS/s coefficients */
    305      -BPF_Fs16000_Fc55_B2,
    306      -BPF_Fs16000_Fc55_B1},
    307     {BPF_Fs22050_Fc55_A0,                /* 22kS/s coefficients */
    308      -BPF_Fs22050_Fc55_B2,
    309      -BPF_Fs22050_Fc55_B1},
    310     {BPF_Fs24000_Fc55_A0,                /* 24kS/s coefficients */
    311      -BPF_Fs24000_Fc55_B2,
    312      -BPF_Fs24000_Fc55_B1},
    313     {BPF_Fs32000_Fc55_A0,                /* 32kS/s coefficients */
    314      -BPF_Fs32000_Fc55_B2,
    315      -BPF_Fs32000_Fc55_B1},
    316     {BPF_Fs44100_Fc55_A0,                /* 44kS/s coefficients */
    317      -BPF_Fs44100_Fc55_B2,
    318      -BPF_Fs44100_Fc55_B1},
    319     {BPF_Fs48000_Fc55_A0,                /* 48kS/s coefficients */
    320      -BPF_Fs48000_Fc55_B2,
    321      -BPF_Fs48000_Fc55_B1},
    322 #ifdef HIGHER_FS
    323      {BPF_Fs96000_Fc55_A0,                /* 96kS/s coefficients */
    324      -BPF_Fs96000_Fc55_B2,
    325      -BPF_Fs96000_Fc55_B1},
    326      {BPF_Fs192000_Fc55_A0,                /* 192kS/s coefficients */
    327      -BPF_Fs192000_Fc55_B2,
    328      -BPF_Fs192000_Fc55_B1},
    329 #endif
    330 
    331     /* Coefficients for 66Hz centre frequency */
    332     {BPF_Fs8000_Fc66_A0,                /* 8kS/s coefficients */
    333      -BPF_Fs8000_Fc66_B2,
    334      -BPF_Fs8000_Fc66_B1},
    335     {BPF_Fs11025_Fc66_A0,                /* 11kS/s coefficients */
    336      -BPF_Fs11025_Fc66_B2,
    337      -BPF_Fs11025_Fc66_B1},
    338     {BPF_Fs12000_Fc66_A0,                /* 12kS/s coefficients */
    339      -BPF_Fs12000_Fc66_B2,
    340      -BPF_Fs12000_Fc66_B1},
    341     {BPF_Fs16000_Fc66_A0,                /* 16kS/s coefficients */
    342      -BPF_Fs16000_Fc66_B2,
    343      -BPF_Fs16000_Fc66_B1},
    344     {BPF_Fs22050_Fc66_A0,                /* 22kS/s coefficients */
    345      -BPF_Fs22050_Fc66_B2,
    346      -BPF_Fs22050_Fc66_B1},
    347     {BPF_Fs24000_Fc66_A0,                /* 24kS/s coefficients */
    348      -BPF_Fs24000_Fc66_B2,
    349      -BPF_Fs24000_Fc66_B1},
    350     {BPF_Fs32000_Fc66_A0,                /* 32kS/s coefficients */
    351      -BPF_Fs32000_Fc66_B2,
    352      -BPF_Fs32000_Fc66_B1},
    353     {BPF_Fs44100_Fc66_A0,                /* 44kS/s coefficients */
    354      -BPF_Fs44100_Fc66_B2,
    355      -BPF_Fs44100_Fc66_B1},
    356     {BPF_Fs48000_Fc66_A0,                /* 48kS/s coefficients */
    357      -BPF_Fs48000_Fc66_B2,
    358      -BPF_Fs48000_Fc66_B1},
    359 #ifdef HIGHER_FS
    360     {BPF_Fs96000_Fc66_A0,                /* 96kS/s coefficients */
    361      -BPF_Fs96000_Fc66_B2,
    362      -BPF_Fs96000_Fc66_B1},
    363     {BPF_Fs192000_Fc66_A0,                /* 192kS/s coefficients */
    364      -BPF_Fs192000_Fc66_B2,
    365      -BPF_Fs192000_Fc66_B1},
    366 #endif
    367 
    368     /* Coefficients for 78Hz centre frequency */
    369     {BPF_Fs8000_Fc78_A0,                /* 8kS/s coefficients */
    370      -BPF_Fs8000_Fc78_B2,
    371      -BPF_Fs8000_Fc78_B1},
    372     {BPF_Fs11025_Fc78_A0,                /* 11kS/s coefficients */
    373      -BPF_Fs11025_Fc78_B2,
    374      -BPF_Fs11025_Fc78_B1},
    375     {BPF_Fs12000_Fc78_A0,                /* 12kS/s coefficients */
    376      -BPF_Fs12000_Fc78_B2,
    377      -BPF_Fs12000_Fc78_B1},
    378     {BPF_Fs16000_Fc78_A0,                /* 16kS/s coefficients */
    379      -BPF_Fs16000_Fc78_B2,
    380      -BPF_Fs16000_Fc78_B1},
    381     {BPF_Fs22050_Fc78_A0,                /* 22kS/s coefficients */
    382      -BPF_Fs22050_Fc78_B2,
    383      -BPF_Fs22050_Fc78_B1},
    384     {BPF_Fs24000_Fc78_A0,                /* 24kS/s coefficients */
    385      -BPF_Fs24000_Fc78_B2,
    386      -BPF_Fs24000_Fc78_B1},
    387     {BPF_Fs32000_Fc78_A0,                /* 32kS/s coefficients */
    388      -BPF_Fs32000_Fc78_B2,
    389      -BPF_Fs32000_Fc78_B1},
    390     {BPF_Fs44100_Fc78_A0,                /* 44kS/s coefficients */
    391      -BPF_Fs44100_Fc78_B2,
    392      -BPF_Fs44100_Fc78_B1},
    393     {BPF_Fs48000_Fc78_A0,                /* 48kS/s coefficients */
    394      -BPF_Fs48000_Fc78_B2,
    395      -BPF_Fs48000_Fc78_B1},
    396 #ifdef HIGHER_FS
    397     {BPF_Fs96000_Fc78_A0,                /* 96kS/s coefficients */
    398      -BPF_Fs96000_Fc78_B2,
    399      -BPF_Fs96000_Fc78_B1},
    400     {BPF_Fs192000_Fc78_A0,                /* 192kS/s coefficients */
    401      -BPF_Fs192000_Fc78_B2,
    402      -BPF_Fs192000_Fc78_B1},
    403 #endif
    404 
    405     /* Coefficients for 90Hz centre frequency */
    406     {BPF_Fs8000_Fc90_A0,                /* 8kS/s coefficients */
    407      -BPF_Fs8000_Fc90_B2,
    408      -BPF_Fs8000_Fc90_B1},
    409     {BPF_Fs11025_Fc90_A0,                /* 11kS/s coefficients */
    410      -BPF_Fs11025_Fc90_B2,
    411      -BPF_Fs11025_Fc90_B1},
    412     {BPF_Fs12000_Fc90_A0,                /* 12kS/s coefficients */
    413      -BPF_Fs12000_Fc90_B2,
    414      -BPF_Fs12000_Fc90_B1},
    415     {BPF_Fs16000_Fc90_A0,                /* 16kS/s coefficients */
    416      -BPF_Fs16000_Fc90_B2,
    417      -BPF_Fs16000_Fc90_B1},
    418     {BPF_Fs22050_Fc90_A0,                /* 22kS/s coefficients */
    419      -BPF_Fs22050_Fc90_B2,
    420      -BPF_Fs22050_Fc90_B1},
    421     {BPF_Fs24000_Fc90_A0,                /* 24kS/s coefficients */
    422      -BPF_Fs24000_Fc90_B2,
    423      -BPF_Fs24000_Fc90_B1},
    424     {BPF_Fs32000_Fc90_A0,                /* 32kS/s coefficients */
    425      -BPF_Fs32000_Fc90_B2,
    426      -BPF_Fs32000_Fc90_B1},
    427     {BPF_Fs44100_Fc90_A0,                /* 44kS/s coefficients */
    428      -BPF_Fs44100_Fc90_B2,
    429      -BPF_Fs44100_Fc90_B1},
    430     {BPF_Fs48000_Fc90_A0,                /* 48kS/s coefficients */
    431      -BPF_Fs48000_Fc90_B2,
    432      -BPF_Fs48000_Fc90_B1}
    433 #ifdef HIGHER_FS
    434     ,
    435     {BPF_Fs96000_Fc90_A0,                /* 96kS/s coefficients */
    436      -BPF_Fs96000_Fc90_B2,
    437      -BPF_Fs96000_Fc90_B1},
    438     {BPF_Fs192000_Fc90_A0,                /* 192kS/s coefficients */
    439      -BPF_Fs192000_Fc90_B2,
    440      -BPF_Fs192000_Fc90_B1}
    441 #endif
    442 
    443 
    444 };
    445 
    446 
    447 /************************************************************************************/
    448 /*                                                                                  */
    449 /*    AGC constant tables                                                           */
    450 /*                                                                                  */
    451 /************************************************************************************/
    452 
    453 /* Attack time (signal too large) */
    454 #ifndef BUILD_FLOAT
    455 const LVM_INT16 LVDBE_AGC_ATTACK_Table[] = {
    456 #else /*BUILD_FLOAT*/
    457 const LVM_FLOAT LVDBE_AGC_ATTACK_Table[] = {
    458 #endif /*BUILD_FLOAT*/
    459     AGC_ATTACK_Fs8000,
    460     AGC_ATTACK_Fs11025,
    461     AGC_ATTACK_Fs12000,
    462     AGC_ATTACK_Fs16000,
    463     AGC_ATTACK_Fs22050,
    464     AGC_ATTACK_Fs24000,
    465     AGC_ATTACK_Fs32000,
    466     AGC_ATTACK_Fs44100,
    467     AGC_ATTACK_Fs48000
    468 #ifdef HIGHER_FS
    469     ,AGC_ATTACK_Fs96000
    470     ,AGC_ATTACK_Fs192000
    471 #endif
    472 
    473 };
    474 
    475 /* Decay time (signal too small) */
    476 #ifndef BUILD_FLOAT
    477 const LVM_INT16 LVDBE_AGC_DECAY_Table[] = {
    478 #else /*BUILD_FLOAT*/
    479 const LVM_FLOAT LVDBE_AGC_DECAY_Table[] = {
    480 #endif /*BUILD_FLOAT*/
    481     AGC_DECAY_Fs8000,
    482     AGC_DECAY_Fs11025,
    483     AGC_DECAY_Fs12000,
    484     AGC_DECAY_Fs16000,
    485     AGC_DECAY_Fs22050,
    486     AGC_DECAY_Fs24000,
    487     AGC_DECAY_Fs32000,
    488     AGC_DECAY_Fs44100,
    489     AGC_DECAY_Fs48000
    490 #ifdef HIGHER_FS
    491     ,AGC_DECAY_FS96000
    492     ,AGC_DECAY_FS192000
    493 #endif
    494 
    495 };
    496 
    497 /* Gain for use without the high pass filter */
    498 #ifndef BUILD_FLOAT
    499 const LVM_INT32 LVDBE_AGC_GAIN_Table[] = {
    500 #else /*BUILD_FLOAT*/
    501 const LVM_FLOAT LVDBE_AGC_GAIN_Table[] = {
    502 #endif /*BUILD_FLOAT*/
    503     AGC_GAIN_0dB,
    504     AGC_GAIN_1dB,
    505     AGC_GAIN_2dB,
    506     AGC_GAIN_3dB,
    507     AGC_GAIN_4dB,
    508     AGC_GAIN_5dB,
    509     AGC_GAIN_6dB,
    510     AGC_GAIN_7dB,
    511     AGC_GAIN_8dB,
    512     AGC_GAIN_9dB,
    513     AGC_GAIN_10dB,
    514     AGC_GAIN_11dB,
    515     AGC_GAIN_12dB,
    516     AGC_GAIN_13dB,
    517     AGC_GAIN_14dB,
    518     AGC_GAIN_15dB};
    519 
    520 /* Gain for use with the high pass filter */
    521 #ifndef BUILD_FLOAT
    522 const LVM_INT32 LVDBE_AGC_HPFGAIN_Table[] = {
    523 #else /*BUILD_FLOAT*/
    524 const LVM_FLOAT LVDBE_AGC_HPFGAIN_Table[] = {
    525 #endif /*BUILD_FLOAT*/
    526     AGC_HPFGAIN_0dB,
    527     AGC_HPFGAIN_1dB,
    528     AGC_HPFGAIN_2dB,
    529     AGC_HPFGAIN_3dB,
    530     AGC_HPFGAIN_4dB,
    531     AGC_HPFGAIN_5dB,
    532     AGC_HPFGAIN_6dB,
    533     AGC_HPFGAIN_7dB,
    534     AGC_HPFGAIN_8dB,
    535     AGC_HPFGAIN_9dB,
    536     AGC_HPFGAIN_10dB,
    537     AGC_HPFGAIN_11dB,
    538     AGC_HPFGAIN_12dB,
    539     AGC_HPFGAIN_13dB,
    540     AGC_HPFGAIN_14dB,
    541     AGC_HPFGAIN_15dB};
    542 
    543 
    544 /************************************************************************************/
    545 /*                                                                                  */
    546 /*    Volume control gain and time constant tables                                  */
    547 /*                                                                                  */
    548 /************************************************************************************/
    549 
    550 /* dB to linear conversion table */
    551 #ifndef BUILD_FLOAT
    552 const LVM_INT16 LVDBE_VolumeTable[] = {
    553     0x4000,             /* -6dB */
    554     0x47FB,             /* -5dB */
    555     0x50C3,             /* -4dB */
    556     0x5A9E,             /* -3dB */
    557     0x65AD,             /* -2dB */
    558     0x7215,             /* -1dB */
    559     0x7FFF};            /*  0dB */
    560 #else /*BUILD_FLOAT*/
    561 const LVM_FLOAT LVDBE_VolumeTable[] = {
    562     0.500000f,         /* -6dB */
    563     0.562341f,         /* -5dB */
    564     0.630957f,         /* -4dB */
    565     0.707946f,         /* -3dB */
    566     0.794328f,         /* -2dB */
    567     0.891251f,         /* -1dB */
    568     1.000000f};        /*  0dB */
    569 #endif /*BUILD_FLOAT*/
    570 
    571 #ifndef BUILD_FLOAT
    572 const LVM_INT16 LVDBE_VolumeTCTable[] = {
    573 #else /*BUILD_FLOAT*/
    574 const LVM_FLOAT LVDBE_VolumeTCTable[] = {
    575 #endif /*BUILD_FLOAT*/
    576     VOL_TC_Fs8000,
    577     VOL_TC_Fs11025,
    578     VOL_TC_Fs12000,
    579     VOL_TC_Fs16000,
    580     VOL_TC_Fs22050,
    581     VOL_TC_Fs24000,
    582     VOL_TC_Fs32000,
    583     VOL_TC_Fs44100,
    584     VOL_TC_Fs48000
    585 #ifdef HIGHER_FS
    586     ,VOL_TC_Fs96000
    587     ,VOL_TC_Fs192000
    588 #endif
    589 };
    590 
    591 
    592 
    593 const LVM_INT16 LVDBE_MixerTCTable[] = {
    594 
    595     MIX_TC_Fs8000,
    596     MIX_TC_Fs11025,
    597     MIX_TC_Fs12000,
    598     MIX_TC_Fs16000,
    599     MIX_TC_Fs22050,
    600     MIX_TC_Fs24000,
    601     MIX_TC_Fs32000,
    602     MIX_TC_Fs44100,
    603     MIX_TC_Fs48000
    604 #ifdef HIGHER_FS
    605     ,MIX_TC_Fs96000
    606     ,MIX_TC_Fs192000
    607 #endif
    608 
    609 };
    610