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