BIQUAD.h revision d7d013446a64c6de9f0f2dfe098a721b140e0b48
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
23extern "C" {
24#endif /* __cplusplus */
25
26#include "LVM_Types.h"
27/**********************************************************************************
28   INSTANCE MEMORY TYPE DEFINITION
29***********************************************************************************/
30#ifdef BUILD_FLOAT
31typedef struct
32{
33    LVM_FLOAT Storage[6];
34
35} Biquad_FLOAT_Instance_t;
36#else
37typedef 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
49typedef 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
58typedef 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
67typedef 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
79typedef struct
80{
81    LVM_FLOAT A1;   /*  a1  */
82    LVM_FLOAT A0;   /*  a0  */
83    LVM_FLOAT B1;   /* -b1! */
84} FO_FLOAT_Coefs_t;
85#else
86typedef struct
87{
88    LVM_INT16 A1;   /*  a1  */
89    LVM_INT16 A0;   /*  a0  */
90    LVM_INT16 B1;   /* -b1! */
91} FO_C16_Coefs_t;
92
93typedef 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
103typedef 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
110typedef 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
120typedef struct
121{
122    LVM_FLOAT  A0;   /*  a0  */
123    LVM_FLOAT  B2;   /* -b2! */
124    LVM_FLOAT  B1;   /* -b1! */
125} BP_FLOAT_Coefs_t;
126#else
127typedef struct
128{
129    LVM_INT16 A0;   /*  a0  */
130    LVM_INT16 B2;   /* -b2! */
131    LVM_INT16 B1;   /* -b1! */
132} BP_C16_Coefs_t;
133
134typedef 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
144typedef 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
152typedef 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
160typedef 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
175typedef struct
176{
177    LVM_FLOAT Storage[ (1 * 2) ];  /* One channel, two taps of size LVM_INT32 */
178} Biquad_1I_Order1_FLOAT_Taps_t;
179
180typedef 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
185typedef struct
186{
187    LVM_INT32 Storage[ (1*2) ];  /* One channel, two taps of size LVM_INT32 */
188} Biquad_1I_Order1_Taps_t;
189
190typedef 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
198typedef struct
199{
200    LVM_FLOAT Storage[ (1 * 4) ];  /* One channel, four taps of size LVM_INT32 */
201} Biquad_1I_Order2_FLOAT_Taps_t;
202
203typedef 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
208typedef struct
209{
210    LVM_INT32 Storage[ (1*4) ];  /* One channel, four taps of size LVM_INT32 */
211} Biquad_1I_Order2_Taps_t;
212
213typedef 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
230void 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
234void 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
240void 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
245void 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
252void 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
257void 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
265void 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
270void 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
278void 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
282void 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
289void 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
294void 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
302void 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
307void 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
314void 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
318void 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
325void 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
330void 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
338void 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
342void 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
349void 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
354void 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
362void 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);
365void 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
370void 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
374void 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
386void 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
390void 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
396void 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
401void 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
408void 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
412void 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
418void 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
423void 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
430void 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);
433void 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
438void 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
442void 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
453void 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);
456void BP_1I_D16F16C14_TRC_WRA_01 (     Biquad_FLOAT_Instance_t       *pInstance,
457                                      LVM_FLOAT                     *pDataIn,
458                                      LVM_FLOAT                     *pDataOut,
459                                      LVM_INT16                     NrSamples);
460void 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);
463void 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
468void 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
472void BP_1I_D16F16C14_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
473                                            LVM_INT16                    *pDataIn,
474                                            LVM_INT16                    *pDataOut,
475                                            LVM_INT16                    NrSamples);
476
477void 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
481void 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
488void 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);
491void 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
496void 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
500void 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
508void PK_2I_D32F32CllGss_TRC_WRA_01_Init (   Biquad_Instance_t       *pInstance,
509                                            Biquad_2I_Order2_Taps_t *pTaps,
510                                            PK_C32_Coefs_t          *pCoef);
511void 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
517void 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
521void 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
526void 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
531void 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
543void DC_2I_D16_TRC_WRA_01_Init     (        Biquad_FLOAT_Instance_t       *pInstance);
544
545void 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
550void DC_2I_D16_TRC_WRA_01_Init     (        Biquad_Instance_t       *pInstance);
551
552void 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