12c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*
22c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Copyright (C) 2004-2010 NXP Software
32c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Copyright (C) 2010 The Android Open Source Project
42c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent *
52c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Licensed under the Apache License, Version 2.0 (the "License");
62c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * you may not use this file except in compliance with the License.
72c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * You may obtain a copy of the License at
82c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent *
92c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent *      http://www.apache.org/licenses/LICENSE-2.0
102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent *
112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Unless required by applicable law or agreed to in writing, software
122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * distributed under the License is distributed on an "AS IS" BASIS,
132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * See the License for the specific language governing permissions and
152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * limitations under the License.
162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent */
172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifndef _BIQUAD_H_
192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define _BIQUAD_H_
202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus
232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentextern "C" {
242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */
252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM_Types.h"
272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************
282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent   INSTANCE MEMORY TYPE DEFINITION
292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent***********************************************************************************/
302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32 Storage[6];
342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} Biquad_Instance_t;
362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************
392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent   COEFFICIENT TYPE DEFINITIONS
402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent***********************************************************************************/
412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** Biquad coefficients **********************************************************/
432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 A2;   /*  a2  */
462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 A1;   /*  a1  */
472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 A0;   /*  a0  */
482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 B2;   /* -b2! */
492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 B1;   /* -b1! */
502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} BQ_C16_Coefs_t;
512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  A2;   /*  a2  */
552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  A1;   /*  a1  */
562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  A0;   /*  a0  */
572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  B2;   /* -b2! */
582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  B1;   /* -b1! */
592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} BQ_C32_Coefs_t;
602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** First order coefficients *****************************************************/
622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 A1;   /*  a1  */
652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 A0;   /*  a0  */
662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 B1;   /* -b1! */
672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} FO_C16_Coefs_t;
682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  A1;   /*  a1  */
722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  A0;   /*  a0  */
732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  B1;   /* -b1! */
742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} FO_C32_Coefs_t;
752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** First order coefficients with Shift*****************************************************/
772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 A1;    /*  a1  */
802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 A0;    /*  a0  */
812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 B1;    /* -b1! */
822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 Shift; /* Shift */
832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} FO_C16_LShx_Coefs_t;
842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** Band pass coefficients *******************************************************/
862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 A0;   /*  a0  */
892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 B2;   /* -b2! */
902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 B1;   /* -b1! */
912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} BP_C16_Coefs_t;
922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  A0;   /*  a0  */
962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  B2;   /* -b2! */
972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  B1;   /* -b1! */
982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} BP_C32_Coefs_t;
992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** Peaking coefficients *********************************************************/
1012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
1022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 A0;   /*  a0  */
1042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 B2;   /* -b2! */
1052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16 B1;   /* -b1! */
1062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16  G;   /* Gain */
1072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} PK_C16_Coefs_t;
1082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
1102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  A0;   /*  a0  */
1122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  B2;   /* -b2! */
1132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32  B1;   /* -b1! */
1142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16  G;   /* Gain */
1152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} PK_C32_Coefs_t;
1162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************
1192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent   TAPS TYPE DEFINITIONS
1202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent***********************************************************************************/
1212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** Types used for first order and shelving filter *******************************/
1232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
1252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32 Storage[ (1*2) ];  /* One channel, two taps of size LVM_INT32 */
1272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} Biquad_1I_Order1_Taps_t;
1282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
1302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32 Storage[ (2*2) ];  /* Two channels, two taps of size LVM_INT32 */
1322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} Biquad_2I_Order1_Taps_t;
1332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** Types used for biquad, band pass and peaking filter **************************/
1362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
1382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32 Storage[ (1*4) ];  /* One channel, four taps of size LVM_INT32 */
1402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} Biquad_1I_Order2_Taps_t;
1412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
1432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
1442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32 Storage[ (2*4) ];  /* Two channels, four taps of size LVM_INT32 */
1452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} Biquad_2I_Order2_Taps_t;
1462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* The names of the functions are changed to satisfy QAC rules: Name should be Unique withing 16 characters*/
1482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define BQ_2I_D32F32Cll_TRC_WRA_01_Init  Init_BQ_2I_D32F32Cll_TRC_WRA_01
1492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define BP_1I_D32F32C30_TRC_WRA_02       TWO_BP_1I_D32F32C30_TRC_WRA_02
1502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************
1522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent   FUNCTION PROTOTYPES: BIQUAD FILTERS
1532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent***********************************************************************************/
1542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** 16 bit data path *************************************************************/
1562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_2I_D16F32Css_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
1582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_2I_Order2_Taps_t *pTaps,
1592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            BQ_C16_Coefs_t          *pCoef);
1602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_2I_D16F32C15_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
1622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataIn,
1632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataOut,
1642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    NrSamples);
1652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_2I_D16F32C14_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
1672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataIn,
1682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataOut,
1692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    NrSamples);
1702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_2I_D16F32C13_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
1722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataIn,
1732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataOut,
1742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    NrSamples);
1752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_2I_D16F16Css_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
1772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_2I_Order2_Taps_t *pTaps,
1782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            BQ_C16_Coefs_t          *pCoef);
1792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_2I_D16F16C15_TRC_WRA_01(            Biquad_Instance_t       *pInstance,
1812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   *pDataIn,
1822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   *pDataOut,
1832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   NrSamples);
1842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_2I_D16F16C14_TRC_WRA_01(            Biquad_Instance_t       *pInstance,
1862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   *pDataIn,
1872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   *pDataOut,
1882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   NrSamples);
1892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_1I_D16F16Css_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
1912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_1I_Order2_Taps_t *pTaps,
1922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            BQ_C16_Coefs_t          *pCoef);
1932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_1I_D16F16C15_TRC_WRA_01(            Biquad_Instance_t       *pInstance,
1952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   *pDataIn,
1962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   *pDataOut,
1972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   NrSamples);
1982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_1I_D16F32Css_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
2002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_1I_Order2_Taps_t *pTaps,
2012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            BQ_C16_Coefs_t          *pCoef);
2022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_1I_D16F32C14_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
2042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataIn,
2052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataOut,
2062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    NrSamples);
2072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** 32 bit data path *************************************************************/
2092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_2I_D32F32Cll_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
2112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_2I_Order2_Taps_t *pTaps,
2122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            BQ_C32_Coefs_t          *pCoef);
2132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BQ_2I_D32F32C30_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
2152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT32                    *pDataIn,
2162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT32                    *pDataOut,
2172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    NrSamples);
2182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************
2202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent   FUNCTION PROTOTYPES: FIRST ORDER FILTERS
2212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent***********************************************************************************/
2222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** 16 bit data path *************************************************************/
2242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid FO_1I_D16F16Css_TRC_WRA_01_Init(       Biquad_Instance_t       *pInstance,
2262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_1I_Order1_Taps_t *pTaps,
2272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            FO_C16_Coefs_t          *pCoef);
2282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid FO_1I_D16F16C15_TRC_WRA_01(            Biquad_Instance_t       *pInstance,
2302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   *pDataIn,
2312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   *pDataOut,
2322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                   NrSamples);
2332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid FO_2I_D16F32Css_LShx_TRC_WRA_01_Init(Biquad_Instance_t       *pInstance,
2352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                          Biquad_2I_Order1_Taps_t *pTaps,
2362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                          FO_C16_LShx_Coefs_t     *pCoef);
2372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid FO_2I_D16F32C15_LShx_TRC_WRA_01(Biquad_Instance_t       *pInstance,
2392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                     LVM_INT16               *pDataIn,
2402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                     LVM_INT16               *pDataOut,
2412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                     LVM_INT16               NrSamples);
2422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** 32 bit data path *************************************************************/
2442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid FO_1I_D32F32Cll_TRC_WRA_01_Init(       Biquad_Instance_t       *pInstance,
2462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_1I_Order1_Taps_t *pTaps,
2472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            FO_C32_Coefs_t          *pCoef);
2482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid FO_1I_D32F32C31_TRC_WRA_01(            Biquad_Instance_t       *pInstance,
2502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT32               *pDataIn,
2512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT32               *pDataOut,
2522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16               NrSamples);
2532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************
2552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent   FUNCTION PROTOTYPES: BAND PASS FILTERS
2562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent***********************************************************************************/
2572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** 16 bit data path *************************************************************/
2592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BP_1I_D16F16Css_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
2612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_1I_Order2_Taps_t *pTaps,
2622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            BP_C16_Coefs_t          *pCoef);
2632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BP_1I_D16F16C14_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
2652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataIn,
2662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataOut,
2672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    NrSamples);
2682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BP_1I_D16F32Cll_TRC_WRA_01_Init (      Biquad_Instance_t       *pInstance,
2702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_1I_Order2_Taps_t *pTaps,
2712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            BP_C32_Coefs_t          *pCoef);
2722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BP_1I_D16F32C30_TRC_WRA_01 (           Biquad_Instance_t       *pInstance,
2742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataIn,
2752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    *pDataOut,
2762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    NrSamples);
2772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** 32 bit data path *************************************************************/
2802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BP_1I_D32F32Cll_TRC_WRA_02_Init (      Biquad_Instance_t       *pInstance,
2822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_1I_Order2_Taps_t *pTaps,
2832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            BP_C32_Coefs_t          *pCoef);
2842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid BP_1I_D32F32C30_TRC_WRA_02(            Biquad_Instance_t       *pInstance,
2862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT32                    *pDataIn,
2872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT32                    *pDataOut,
2882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    NrSamples);
2892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** 32 bit data path STEREO ******************************************************/
2922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid PK_2I_D32F32CllGss_TRC_WRA_01_Init (   Biquad_Instance_t       *pInstance,
2942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_2I_Order2_Taps_t *pTaps,
2952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            PK_C32_Coefs_t          *pCoef);
2962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid PK_2I_D32F32C30G11_TRC_WRA_01 (        Biquad_Instance_t       *pInstance,
2982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT32                    *pDataIn,
2992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT32                    *pDataOut,
3002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    NrSamples);
3012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid PK_2I_D32F32CssGss_TRC_WRA_01_Init (   Biquad_Instance_t       *pInstance,
3032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            Biquad_2I_Order2_Taps_t *pTaps,
3042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            PK_C16_Coefs_t          *pCoef);
3052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid PK_2I_D32F32C14G11_TRC_WRA_01 (        Biquad_Instance_t       *pInstance,
3072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT32                    *pDataIn,
3082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT32                    *pDataOut,
3092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16                    NrSamples);
3102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************
3132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent   FUNCTION PROTOTYPES: DC REMOVAL FILTERS
3142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent***********************************************************************************/
3152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** 16 bit data path STEREO ******************************************************/
3172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid DC_2I_D16_TRC_WRA_01_Init     (        Biquad_Instance_t       *pInstance);
3192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid DC_2I_D16_TRC_WRA_01          (        Biquad_Instance_t       *pInstance,
3212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16               *pDataIn,
3222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16               *pDataOut,
3232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                            LVM_INT16               NrSamples);
3242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus
3262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent}
3272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */
3282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************/
3312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
3322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif  /** _BIQUAD_H_ **/
3332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
334