Home | History | Annotate | Download | only in lib
      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 #ifndef _BIQUAD_H_
     19 #define _BIQUAD_H_
     20 
     21 
     22 #ifdef __cplusplus
     23 extern "C" {
     24 #endif /* __cplusplus */
     25 
     26 #include "LVM_Types.h"
     27 /**********************************************************************************
     28    INSTANCE MEMORY TYPE DEFINITION
     29 ***********************************************************************************/
     30 #ifdef BUILD_FLOAT
     31 typedef struct
     32 {
     33 #ifdef SUPPORT_MC
     34     /* The memory region created by this structure instance is typecast
     35      * into another structure containing a pointer and an array of filter
     36      * coefficients. In one case this memory region is used for storing
     37      * DC component of channels
     38      */
     39     LVM_FLOAT *pStorage;
     40     LVM_FLOAT Storage[LVM_MAX_CHANNELS];
     41 #else
     42     LVM_FLOAT Storage[6];
     43 #endif
     44 } Biquad_FLOAT_Instance_t;
     45 #else
     46 typedef struct
     47 {
     48     LVM_INT32 Storage[6];
     49 
     50 } Biquad_Instance_t;
     51 #endif
     52 /**********************************************************************************
     53    COEFFICIENT TYPE DEFINITIONS
     54 ***********************************************************************************/
     55 
     56 /*** Biquad coefficients **********************************************************/
     57 #ifdef BUILD_FLOAT
     58 typedef struct
     59 {
     60     LVM_FLOAT  A2;   /*  a2  */
     61     LVM_FLOAT  A1;   /*  a1  */
     62     LVM_FLOAT  A0;   /*  a0  */
     63     LVM_FLOAT  B2;   /* -b2! */
     64     LVM_FLOAT  B1;   /* -b1! */
     65 } BQ_FLOAT_Coefs_t;
     66 #else
     67 typedef struct
     68 {
     69     LVM_INT16 A2;   /*  a2  */
     70     LVM_INT16 A1;   /*  a1  */
     71     LVM_INT16 A0;   /*  a0  */
     72     LVM_INT16 B2;   /* -b2! */
     73     LVM_INT16 B1;   /* -b1! */
     74 } BQ_C16_Coefs_t;
     75 
     76 typedef struct
     77 {
     78     LVM_INT32  A2;   /*  a2  */
     79     LVM_INT32  A1;   /*  a1  */
     80     LVM_INT32  A0;   /*  a0  */
     81     LVM_INT32  B2;   /* -b2! */
     82     LVM_INT32  B1;   /* -b1! */
     83 } BQ_C32_Coefs_t;
     84 #endif
     85 
     86 /*** First order coefficients *****************************************************/
     87 #ifdef BUILD_FLOAT
     88 typedef struct
     89 {
     90     LVM_FLOAT A1;   /*  a1  */
     91     LVM_FLOAT A0;   /*  a0  */
     92     LVM_FLOAT B1;   /* -b1! */
     93 } FO_FLOAT_Coefs_t;
     94 #else
     95 typedef struct
     96 {
     97     LVM_INT16 A1;   /*  a1  */
     98     LVM_INT16 A0;   /*  a0  */
     99     LVM_INT16 B1;   /* -b1! */
    100 } FO_C16_Coefs_t;
    101 
    102 typedef struct
    103 {
    104     LVM_INT32  A1;   /*  a1  */
    105     LVM_INT32  A0;   /*  a0  */
    106     LVM_INT32  B1;   /* -b1! */
    107 } FO_C32_Coefs_t;
    108 #endif
    109 
    110 /*** First order coefficients with Shift*****************************************************/
    111 #ifdef BUILD_FLOAT
    112 typedef struct
    113 {
    114     LVM_FLOAT A1;    /*  a1  */
    115     LVM_FLOAT A0;    /*  a0  */
    116     LVM_FLOAT B1;    /* -b1! */
    117 } FO_FLOAT_LShx_Coefs_t;
    118 #else
    119 typedef struct
    120 {
    121     LVM_INT16 A1;    /*  a1  */
    122     LVM_INT16 A0;    /*  a0  */
    123     LVM_INT16 B1;    /* -b1! */
    124     LVM_INT16 Shift; /* Shift */
    125 } FO_C16_LShx_Coefs_t;
    126 #endif
    127 /*** Band pass coefficients *******************************************************/
    128 #ifdef BUILD_FLOAT
    129 typedef struct
    130 {
    131     LVM_FLOAT  A0;   /*  a0  */
    132     LVM_FLOAT  B2;   /* -b2! */
    133     LVM_FLOAT  B1;   /* -b1! */
    134 } BP_FLOAT_Coefs_t;
    135 #else
    136 typedef struct
    137 {
    138     LVM_INT16 A0;   /*  a0  */
    139     LVM_INT16 B2;   /* -b2! */
    140     LVM_INT16 B1;   /* -b1! */
    141 } BP_C16_Coefs_t;
    142 
    143 typedef struct
    144 {
    145     LVM_INT32  A0;   /*  a0  */
    146     LVM_INT32  B2;   /* -b2! */
    147     LVM_INT32  B1;   /* -b1! */
    148 } BP_C32_Coefs_t;
    149 #endif
    150 
    151 /*** Peaking coefficients *********************************************************/
    152 #ifdef BUILD_FLOAT
    153 typedef struct
    154 {
    155     LVM_FLOAT A0;   /*  a0  */
    156     LVM_FLOAT B2;   /* -b2! */
    157     LVM_FLOAT B1;   /* -b1! */
    158     LVM_FLOAT  G;   /* Gain */
    159 } PK_FLOAT_Coefs_t;
    160 #else
    161 typedef struct
    162 {
    163     LVM_INT16 A0;   /*  a0  */
    164     LVM_INT16 B2;   /* -b2! */
    165     LVM_INT16 B1;   /* -b1! */
    166     LVM_INT16  G;   /* Gain */
    167 } PK_C16_Coefs_t;
    168 
    169 typedef struct
    170 {
    171     LVM_INT32  A0;   /*  a0  */
    172     LVM_INT32  B2;   /* -b2! */
    173     LVM_INT32  B1;   /* -b1! */
    174     LVM_INT16  G;   /* Gain */
    175 } PK_C32_Coefs_t;
    176 #endif
    177 
    178 /**********************************************************************************
    179    TAPS TYPE DEFINITIONS
    180 ***********************************************************************************/
    181 
    182 /*** Types used for first order and shelving filter *******************************/
    183 #ifdef BUILD_FLOAT
    184 typedef struct
    185 {
    186     LVM_FLOAT Storage[ (1 * 2) ];  /* One channel, two taps of size LVM_INT32 */
    187 } Biquad_1I_Order1_FLOAT_Taps_t;
    188 
    189 typedef struct
    190 {
    191 #ifdef SUPPORT_MC
    192     /* LVM_MAX_CHANNELS channels, two taps of size LVM_FLOAT */
    193     LVM_FLOAT Storage[ (LVM_MAX_CHANNELS * 2) ];
    194 #else
    195     LVM_FLOAT Storage[ (2 * 2) ];  /* Two channels, two taps of size LVM_FLOAT */
    196 #endif
    197 } Biquad_2I_Order1_FLOAT_Taps_t;
    198 #else
    199 typedef struct
    200 {
    201     LVM_INT32 Storage[ (1*2) ];  /* One channel, two taps of size LVM_INT32 */
    202 } Biquad_1I_Order1_Taps_t;
    203 
    204 typedef struct
    205 {
    206     LVM_INT32 Storage[ (2*2) ];  /* Two channels, two taps of size LVM_INT32 */
    207 } Biquad_2I_Order1_Taps_t;
    208 #endif
    209 
    210 /*** Types used for biquad, band pass and peaking filter **************************/
    211 #ifdef BUILD_FLOAT
    212 typedef struct
    213 {
    214     LVM_FLOAT Storage[ (1 * 4) ];  /* One channel, four taps of size LVM_FLOAT */
    215 } Biquad_1I_Order2_FLOAT_Taps_t;
    216 
    217 typedef struct
    218 {
    219 #ifdef SUPPORT_MC
    220     /* LVM_MAX_CHANNELS, four taps of size LVM_FLOAT */
    221     LVM_FLOAT Storage[ (LVM_MAX_CHANNELS * 4) ];
    222 #else
    223     LVM_FLOAT Storage[ (2 * 4) ];  /* Two channels, four taps of size LVM_FLOAT */
    224 #endif
    225 } Biquad_2I_Order2_FLOAT_Taps_t;
    226 #else
    227 typedef struct
    228 {
    229     LVM_INT32 Storage[ (1*4) ];  /* One channel, four taps of size LVM_INT32 */
    230 } Biquad_1I_Order2_Taps_t;
    231 
    232 typedef struct
    233 {
    234     LVM_INT32 Storage[ (2*4) ];  /* Two channels, four taps of size LVM_INT32 */
    235 } Biquad_2I_Order2_Taps_t;
    236 #endif
    237 /* The names of the functions are changed to satisfy QAC rules: Name should be Unique withing 16 characters*/
    238 #define BQ_2I_D32F32Cll_TRC_WRA_01_Init  Init_BQ_2I_D32F32Cll_TRC_WRA_01
    239 #define BP_1I_D32F32C30_TRC_WRA_02       TWO_BP_1I_D32F32C30_TRC_WRA_02
    240 
    241 /**********************************************************************************
    242    FUNCTION PROTOTYPES: BIQUAD FILTERS
    243 ***********************************************************************************/
    244 
    245 /*** 16 bit data path *************************************************************/
    246 
    247 
    248 #ifdef BUILD_FLOAT
    249 void BQ_2I_D16F32Css_TRC_WRA_01_Init (   Biquad_FLOAT_Instance_t         *pInstance,
    250                                          Biquad_2I_Order2_FLOAT_Taps_t   *pTaps,
    251                                          BQ_FLOAT_Coefs_t            *pCoef);
    252 #else
    253 void BQ_2I_D16F32Css_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
    254                                             Biquad_2I_Order2_Taps_t *pTaps,
    255                                             BQ_C16_Coefs_t          *pCoef);
    256 #endif
    257 
    258 #ifdef BUILD_FLOAT
    259 void BQ_2I_D16F32C15_TRC_WRA_01 (           Biquad_FLOAT_Instance_t       *pInstance,
    260                                             LVM_FLOAT                    *pDataIn,
    261                                             LVM_FLOAT                    *pDataOut,
    262                                             LVM_INT16                    NrSamples);
    263 #else
    264 void BQ_2I_D16F32C15_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
    265                                             LVM_INT16                    *pDataIn,
    266                                             LVM_INT16                    *pDataOut,
    267                                             LVM_INT16                    NrSamples);
    268 #endif
    269 
    270 #ifdef BUILD_FLOAT
    271 void BQ_2I_D16F32C14_TRC_WRA_01 (           Biquad_FLOAT_Instance_t       *pInstance,
    272                                             LVM_FLOAT                    *pDataIn,
    273                                             LVM_FLOAT                    *pDataOut,
    274                                             LVM_INT16                    NrSamples);
    275 #else
    276 void BQ_2I_D16F32C14_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
    277                                             LVM_INT16                    *pDataIn,
    278                                             LVM_INT16                    *pDataOut,
    279                                             LVM_INT16                    NrSamples);
    280 
    281 #endif
    282 
    283 #ifdef BUILD_FLOAT
    284 void BQ_2I_D16F32C13_TRC_WRA_01 (           Biquad_FLOAT_Instance_t       *pInstance,
    285                                             LVM_FLOAT                    *pDataIn,
    286                                             LVM_FLOAT                    *pDataOut,
    287                                             LVM_INT16                    NrSamples);
    288 #else
    289 void BQ_2I_D16F32C13_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
    290                                             LVM_INT16                    *pDataIn,
    291                                             LVM_INT16                    *pDataOut,
    292                                             LVM_INT16                    NrSamples);
    293 
    294 #endif
    295 
    296 #ifdef BUILD_FLOAT
    297 void BQ_2I_D16F16Css_TRC_WRA_01_Init (   Biquad_FLOAT_Instance_t         *pInstance,
    298                                          Biquad_2I_Order2_FLOAT_Taps_t   *pTaps,
    299                                          BQ_FLOAT_Coefs_t            *pCoef);
    300 #else
    301 void BQ_2I_D16F16Css_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
    302                                             Biquad_2I_Order2_Taps_t *pTaps,
    303                                             BQ_C16_Coefs_t          *pCoef);
    304 
    305 #endif
    306 
    307 #ifdef BUILD_FLOAT
    308 void BQ_2I_D16F16C15_TRC_WRA_01( Biquad_FLOAT_Instance_t       *pInstance,
    309                                  LVM_FLOAT               *pDataIn,
    310                                  LVM_FLOAT               *pDataOut,
    311                                  LVM_INT16               NrSamples);
    312 #else
    313 void BQ_2I_D16F16C15_TRC_WRA_01(            Biquad_Instance_t       *pInstance,
    314                                             LVM_INT16                   *pDataIn,
    315                                             LVM_INT16                   *pDataOut,
    316                                             LVM_INT16                   NrSamples);
    317 
    318 #endif
    319 
    320 #ifdef BUILD_FLOAT
    321 void BQ_2I_D16F16C14_TRC_WRA_01( Biquad_FLOAT_Instance_t       *pInstance,
    322                                  LVM_FLOAT               *pDataIn,
    323                                  LVM_FLOAT               *pDataOut,
    324                                  LVM_INT16               NrSamples);
    325 #else
    326 void BQ_2I_D16F16C14_TRC_WRA_01(            Biquad_Instance_t       *pInstance,
    327                                             LVM_INT16                   *pDataIn,
    328                                             LVM_INT16                   *pDataOut,
    329                                             LVM_INT16                   NrSamples);
    330 #endif
    331 
    332 #ifdef BUILD_FLOAT
    333 void BQ_1I_D16F16Css_TRC_WRA_01_Init (   Biquad_FLOAT_Instance_t         *pInstance,
    334                                          Biquad_1I_Order2_FLOAT_Taps_t   *pTaps,
    335                                          BQ_FLOAT_Coefs_t            *pCoef);
    336 #else
    337 void BQ_1I_D16F16Css_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
    338                                             Biquad_1I_Order2_Taps_t *pTaps,
    339                                             BQ_C16_Coefs_t          *pCoef);
    340 
    341 #endif
    342 
    343 #ifdef BUILD_FLOAT
    344 void BQ_1I_D16F16C15_TRC_WRA_01 ( Biquad_FLOAT_Instance_t       *pInstance,
    345                                   LVM_FLOAT               *pDataIn,
    346                                   LVM_FLOAT               *pDataOut,
    347                                   LVM_INT16               NrSamples);
    348 #else
    349 void BQ_1I_D16F16C15_TRC_WRA_01(            Biquad_Instance_t       *pInstance,
    350                                             LVM_INT16                   *pDataIn,
    351                                             LVM_INT16                   *pDataOut,
    352                                             LVM_INT16                   NrSamples);
    353 
    354 #endif
    355 
    356 #ifdef BUILD_FLOAT
    357 void BQ_1I_D16F32Css_TRC_WRA_01_Init (   Biquad_FLOAT_Instance_t         *pInstance,
    358                                          Biquad_1I_Order2_FLOAT_Taps_t   *pTaps,
    359                                          BQ_FLOAT_Coefs_t            *pCoef);
    360 #else
    361 void BQ_1I_D16F32Css_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
    362                                             Biquad_1I_Order2_Taps_t *pTaps,
    363                                             BQ_C16_Coefs_t          *pCoef);
    364 
    365 #endif
    366 
    367 #ifdef BUILD_FLOAT
    368 void BQ_1I_D16F32C14_TRC_WRA_01 ( Biquad_FLOAT_Instance_t       *pInstance,
    369                                   LVM_FLOAT              *pDataIn,
    370                                   LVM_FLOAT               *pDataOut,
    371                                   LVM_INT16               NrSamples);
    372 #else
    373 void BQ_1I_D16F32C14_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
    374                                             LVM_INT16                    *pDataIn,
    375                                             LVM_INT16                    *pDataOut,
    376                                             LVM_INT16                    NrSamples);
    377 
    378 #endif
    379 /*** 32 bit data path *************************************************************/
    380 #ifdef BUILD_FLOAT
    381 void BQ_2I_D32F32Cll_TRC_WRA_01_Init (      Biquad_FLOAT_Instance_t       *pInstance,
    382                                             Biquad_2I_Order2_FLOAT_Taps_t *pTaps,
    383                                             BQ_FLOAT_Coefs_t          *pCoef);
    384 void BQ_2I_D32F32C30_TRC_WRA_01 (           Biquad_FLOAT_Instance_t  *pInstance,
    385                                             LVM_FLOAT                    *pDataIn,
    386                                             LVM_FLOAT                    *pDataOut,
    387                                             LVM_INT16                 NrSamples);
    388 #ifdef SUPPORT_MC
    389 void BQ_MC_D32F32C30_TRC_WRA_01 (           Biquad_FLOAT_Instance_t      *pInstance,
    390                                             LVM_FLOAT                    *pDataIn,
    391                                             LVM_FLOAT                    *pDataOut,
    392                                             LVM_INT16                    NrFrames,
    393                                             LVM_INT16                    NrChannels);
    394 #endif
    395 #else
    396 void BQ_2I_D32F32Cll_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
    397                                             Biquad_2I_Order2_Taps_t *pTaps,
    398                                             BQ_C32_Coefs_t          *pCoef);
    399 
    400 void BQ_2I_D32F32C30_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
    401                                             LVM_INT32                    *pDataIn,
    402                                             LVM_INT32                    *pDataOut,
    403                                             LVM_INT16                    NrSamples);
    404 #endif
    405 
    406 /**********************************************************************************
    407    FUNCTION PROTOTYPES: FIRST ORDER FILTERS
    408 ***********************************************************************************/
    409 
    410 /*** 16 bit data path *************************************************************/
    411 #ifdef BUILD_FLOAT
    412 void FO_1I_D16F16Css_TRC_WRA_01_Init(    Biquad_FLOAT_Instance_t         *pInstance,
    413                                          Biquad_1I_Order1_FLOAT_Taps_t   *pTaps,
    414                                          FO_FLOAT_Coefs_t            *pCoef);
    415 #else
    416 void FO_1I_D16F16Css_TRC_WRA_01_Init(       Biquad_Instance_t       *pInstance,
    417                                             Biquad_1I_Order1_Taps_t *pTaps,
    418                                             FO_C16_Coefs_t          *pCoef);
    419 #endif
    420 
    421 #ifdef BUILD_FLOAT
    422 void FO_1I_D16F16C15_TRC_WRA_01( Biquad_FLOAT_Instance_t       *pInstance,
    423                                  LVM_FLOAT               *pDataIn,
    424                                  LVM_FLOAT               *pDataOut,
    425                                  LVM_INT16               NrSamples);
    426 #else
    427 void FO_1I_D16F16C15_TRC_WRA_01(            Biquad_Instance_t       *pInstance,
    428                                             LVM_INT16                   *pDataIn,
    429                                             LVM_INT16                   *pDataOut,
    430                                             LVM_INT16                   NrSamples);
    431 #endif
    432 
    433 #ifdef BUILD_FLOAT
    434 void FO_2I_D16F32Css_LShx_TRC_WRA_01_Init(Biquad_FLOAT_Instance_t       *pInstance,
    435                                           Biquad_2I_Order1_FLOAT_Taps_t *pTaps,
    436                                           FO_FLOAT_LShx_Coefs_t     *pCoef);
    437 #else
    438 void FO_2I_D16F32Css_LShx_TRC_WRA_01_Init(Biquad_Instance_t       *pInstance,
    439                                           Biquad_2I_Order1_Taps_t *pTaps,
    440                                           FO_C16_LShx_Coefs_t     *pCoef);
    441 #endif
    442 
    443 #ifdef BUILD_FLOAT
    444 void FO_2I_D16F32C15_LShx_TRC_WRA_01(Biquad_FLOAT_Instance_t       *pInstance,
    445                                      LVM_FLOAT               *pDataIn,
    446                                      LVM_FLOAT               *pDataOut,
    447                                      LVM_INT16               NrSamples);
    448 #else
    449 void FO_2I_D16F32C15_LShx_TRC_WRA_01(Biquad_Instance_t       *pInstance,
    450                                      LVM_INT16               *pDataIn,
    451                                      LVM_INT16               *pDataOut,
    452                                      LVM_INT16               NrSamples);
    453 #endif
    454 /*** 32 bit data path *************************************************************/
    455 #ifdef BUILD_FLOAT
    456 void FO_1I_D32F32Cll_TRC_WRA_01_Init( Biquad_FLOAT_Instance_t       *pInstance,
    457                                       Biquad_1I_Order1_FLOAT_Taps_t *pTaps,
    458                                       FO_FLOAT_Coefs_t          *pCoef);
    459 void FO_1I_D32F32C31_TRC_WRA_01( Biquad_FLOAT_Instance_t       *pInstance,
    460                                  LVM_FLOAT                     *pDataIn,
    461                                  LVM_FLOAT                     *pDataOut,
    462                                  LVM_INT16                     NrSamples);
    463 #ifdef SUPPORT_MC
    464 void FO_Mc_D16F32C15_LShx_TRC_WRA_01(Biquad_FLOAT_Instance_t  *pInstance,
    465                                      LVM_FLOAT                *pDataIn,
    466                                      LVM_FLOAT                *pDataOut,
    467                                      LVM_INT16                NrFrames,
    468                                      LVM_INT16                NrChannels);
    469 #endif
    470 #else
    471 void FO_1I_D32F32Cll_TRC_WRA_01_Init(       Biquad_Instance_t       *pInstance,
    472                                             Biquad_1I_Order1_Taps_t *pTaps,
    473                                             FO_C32_Coefs_t          *pCoef);
    474 
    475 void FO_1I_D32F32C31_TRC_WRA_01(            Biquad_Instance_t       *pInstance,
    476                                             LVM_INT32               *pDataIn,
    477                                             LVM_INT32               *pDataOut,
    478                                             LVM_INT16               NrSamples);
    479 #endif
    480 /**********************************************************************************
    481    FUNCTION PROTOTYPES: BAND PASS FILTERS
    482 ***********************************************************************************/
    483 
    484 /*** 16 bit data path *************************************************************/
    485 #ifdef BUILD_FLOAT
    486 void BP_1I_D16F16Css_TRC_WRA_01_Init( Biquad_FLOAT_Instance_t       *pInstance,
    487                                       Biquad_1I_Order2_FLOAT_Taps_t *pTaps,
    488                                       BP_FLOAT_Coefs_t              *pCoef);
    489 void BP_1I_D16F16C14_TRC_WRA_01 (     Biquad_FLOAT_Instance_t       *pInstance,
    490                                       LVM_FLOAT                     *pDataIn,
    491                                       LVM_FLOAT                     *pDataOut,
    492                                       LVM_INT16                     NrSamples);
    493 void BP_1I_D16F32Cll_TRC_WRA_01_Init (Biquad_FLOAT_Instance_t       *pInstance,
    494                                       Biquad_1I_Order2_FLOAT_Taps_t *pTaps,
    495                                       BP_FLOAT_Coefs_t              *pCoef);
    496 void BP_1I_D16F32C30_TRC_WRA_01 (           Biquad_FLOAT_Instance_t       *pInstance,
    497                                             LVM_FLOAT                    *pDataIn,
    498                                             LVM_FLOAT                    *pDataOut,
    499                                             LVM_INT16                    NrSamples);
    500 #else
    501 void BP_1I_D16F16Css_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
    502                                             Biquad_1I_Order2_Taps_t *pTaps,
    503                                             BP_C16_Coefs_t          *pCoef);
    504 
    505 void BP_1I_D16F16C14_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
    506                                             LVM_INT16                    *pDataIn,
    507                                             LVM_INT16                    *pDataOut,
    508                                             LVM_INT16                    NrSamples);
    509 
    510 void BP_1I_D16F32Cll_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
    511                                             Biquad_1I_Order2_Taps_t *pTaps,
    512                                             BP_C32_Coefs_t          *pCoef);
    513 
    514 void BP_1I_D16F32C30_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
    515                                             LVM_INT16                    *pDataIn,
    516                                             LVM_INT16                    *pDataOut,
    517                                             LVM_INT16                    NrSamples);
    518 #endif
    519 /*** 32 bit data path *************************************************************/
    520 #ifdef BUILD_FLOAT
    521 void BP_1I_D32F32Cll_TRC_WRA_02_Init (      Biquad_FLOAT_Instance_t       *pInstance,
    522                                             Biquad_1I_Order2_FLOAT_Taps_t *pTaps,
    523                                             BP_FLOAT_Coefs_t          *pCoef);
    524 void BP_1I_D32F32C30_TRC_WRA_02(            Biquad_FLOAT_Instance_t       *pInstance,
    525                                             LVM_FLOAT                    *pDataIn,
    526                                             LVM_FLOAT                    *pDataOut,
    527                                             LVM_INT16                    NrSamples);
    528 #else
    529 void BP_1I_D32F32Cll_TRC_WRA_02_Init (      Biquad_Instance_t       *pInstance,
    530                                             Biquad_1I_Order2_Taps_t *pTaps,
    531                                             BP_C32_Coefs_t          *pCoef);
    532 
    533 void BP_1I_D32F32C30_TRC_WRA_02(            Biquad_Instance_t       *pInstance,
    534                                             LVM_INT32                    *pDataIn,
    535                                             LVM_INT32                    *pDataOut,
    536                                             LVM_INT16                    NrSamples);
    537 #endif
    538 
    539 /*** 32 bit data path STEREO ******************************************************/
    540 #ifndef BUILD_FLOAT
    541 void PK_2I_D32F32CllGss_TRC_WRA_01_Init (   Biquad_Instance_t       *pInstance,
    542                                             Biquad_2I_Order2_Taps_t *pTaps,
    543                                             PK_C32_Coefs_t          *pCoef);
    544 void PK_2I_D32F32C30G11_TRC_WRA_01 (        Biquad_Instance_t       *pInstance,
    545                                             LVM_INT32                    *pDataIn,
    546                                             LVM_INT32                    *pDataOut,
    547                                             LVM_INT16                    NrSamples);
    548 #endif
    549 #ifdef BUILD_FLOAT
    550 void PK_2I_D32F32CssGss_TRC_WRA_01_Init (   Biquad_FLOAT_Instance_t       *pInstance,
    551                                             Biquad_2I_Order2_FLOAT_Taps_t *pTaps,
    552                                             PK_FLOAT_Coefs_t          *pCoef);
    553 #else
    554 void PK_2I_D32F32CssGss_TRC_WRA_01_Init (   Biquad_Instance_t       *pInstance,
    555                                             Biquad_2I_Order2_Taps_t *pTaps,
    556                                             PK_C16_Coefs_t          *pCoef);
    557 #endif
    558 #ifdef BUILD_FLOAT
    559 void PK_2I_D32F32C14G11_TRC_WRA_01( Biquad_FLOAT_Instance_t       *pInstance,
    560                                     LVM_FLOAT               *pDataIn,
    561                                     LVM_FLOAT               *pDataOut,
    562                                     LVM_INT16               NrSamples);
    563 #ifdef SUPPORT_MC
    564 void PK_Mc_D32F32C14G11_TRC_WRA_01(Biquad_FLOAT_Instance_t       *pInstance,
    565                                    LVM_FLOAT               *pDataIn,
    566                                    LVM_FLOAT               *pDataOut,
    567                                    LVM_INT16               NrFrames,
    568                                    LVM_INT16               NrChannels);
    569 #endif
    570 #else
    571 void PK_2I_D32F32C14G11_TRC_WRA_01 (        Biquad_Instance_t       *pInstance,
    572                                             LVM_INT32                    *pDataIn,
    573                                             LVM_INT32                    *pDataOut,
    574                                             LVM_INT16                    NrSamples);
    575 #endif
    576 
    577 /**********************************************************************************
    578    FUNCTION PROTOTYPES: DC REMOVAL FILTERS
    579 ***********************************************************************************/
    580 
    581 /*** 16 bit data path STEREO ******************************************************/
    582 #ifdef BUILD_FLOAT
    583 #ifdef SUPPORT_MC
    584 void DC_Mc_D16_TRC_WRA_01_Init     (        Biquad_FLOAT_Instance_t       *pInstance);
    585 
    586 void DC_Mc_D16_TRC_WRA_01          (        Biquad_FLOAT_Instance_t       *pInstance,
    587                                             LVM_FLOAT               *pDataIn,
    588                                             LVM_FLOAT               *pDataOut,
    589                                             LVM_INT16               NrFrames,
    590                                             LVM_INT16               NrChannels);
    591 #else
    592 void DC_2I_D16_TRC_WRA_01_Init     (        Biquad_FLOAT_Instance_t       *pInstance);
    593 
    594 void DC_2I_D16_TRC_WRA_01          (        Biquad_FLOAT_Instance_t       *pInstance,
    595                                             LVM_FLOAT               *pDataIn,
    596                                             LVM_FLOAT               *pDataOut,
    597                                             LVM_INT16               NrSamples);
    598 #endif
    599 #else
    600 void DC_2I_D16_TRC_WRA_01_Init     (        Biquad_Instance_t       *pInstance);
    601 
    602 void DC_2I_D16_TRC_WRA_01          (        Biquad_Instance_t       *pInstance,
    603                                             LVM_INT16               *pDataIn,
    604                                             LVM_INT16               *pDataOut,
    605                                             LVM_INT16               NrSamples);
    606 #endif
    607 #ifdef __cplusplus
    608 }
    609 #endif /* __cplusplus */
    610 
    611 
    612 /**********************************************************************************/
    613 
    614 #endif  /** _BIQUAD_H_ **/
    615 
    616