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