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