• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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