1 /* 2 * Copyright (C) 2004-2010 NXP Software 3 * Copyright (C) 2010 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 #ifndef _BIQUAD_H_ 19 #define _BIQUAD_H_ 20 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif /* __cplusplus */ 25 26 #include "LVM_Types.h" 27 /********************************************************************************** 28 INSTANCE MEMORY TYPE DEFINITION 29 ***********************************************************************************/ 30 #ifdef BUILD_FLOAT 31 typedef struct 32 { 33 #ifdef SUPPORT_MC 34 /* The memory region created by this structure instance is typecast 35 * into another structure containing a pointer and an array of filter 36 * coefficients. In one case this memory region is used for storing 37 * DC component of channels 38 */ 39 LVM_FLOAT *pStorage; 40 LVM_FLOAT Storage[LVM_MAX_CHANNELS]; 41 #else 42 LVM_FLOAT Storage[6]; 43 #endif 44 } Biquad_FLOAT_Instance_t; 45 #else 46 typedef struct 47 { 48 LVM_INT32 Storage[6]; 49 50 } Biquad_Instance_t; 51 #endif 52 /********************************************************************************** 53 COEFFICIENT TYPE DEFINITIONS 54 ***********************************************************************************/ 55 56 /*** Biquad coefficients **********************************************************/ 57 #ifdef BUILD_FLOAT 58 typedef struct 59 { 60 LVM_FLOAT A2; /* a2 */ 61 LVM_FLOAT A1; /* a1 */ 62 LVM_FLOAT A0; /* a0 */ 63 LVM_FLOAT B2; /* -b2! */ 64 LVM_FLOAT B1; /* -b1! */ 65 } BQ_FLOAT_Coefs_t; 66 #else 67 typedef struct 68 { 69 LVM_INT16 A2; /* a2 */ 70 LVM_INT16 A1; /* a1 */ 71 LVM_INT16 A0; /* a0 */ 72 LVM_INT16 B2; /* -b2! */ 73 LVM_INT16 B1; /* -b1! */ 74 } BQ_C16_Coefs_t; 75 76 typedef struct 77 { 78 LVM_INT32 A2; /* a2 */ 79 LVM_INT32 A1; /* a1 */ 80 LVM_INT32 A0; /* a0 */ 81 LVM_INT32 B2; /* -b2! */ 82 LVM_INT32 B1; /* -b1! */ 83 } BQ_C32_Coefs_t; 84 #endif 85 86 /*** First order coefficients *****************************************************/ 87 #ifdef BUILD_FLOAT 88 typedef struct 89 { 90 LVM_FLOAT A1; /* a1 */ 91 LVM_FLOAT A0; /* a0 */ 92 LVM_FLOAT B1; /* -b1! */ 93 } FO_FLOAT_Coefs_t; 94 #else 95 typedef struct 96 { 97 LVM_INT16 A1; /* a1 */ 98 LVM_INT16 A0; /* a0 */ 99 LVM_INT16 B1; /* -b1! */ 100 } FO_C16_Coefs_t; 101 102 typedef struct 103 { 104 LVM_INT32 A1; /* a1 */ 105 LVM_INT32 A0; /* a0 */ 106 LVM_INT32 B1; /* -b1! */ 107 } FO_C32_Coefs_t; 108 #endif 109 110 /*** First order coefficients with Shift*****************************************************/ 111 #ifdef BUILD_FLOAT 112 typedef struct 113 { 114 LVM_FLOAT A1; /* a1 */ 115 LVM_FLOAT A0; /* a0 */ 116 LVM_FLOAT B1; /* -b1! */ 117 } FO_FLOAT_LShx_Coefs_t; 118 #else 119 typedef struct 120 { 121 LVM_INT16 A1; /* a1 */ 122 LVM_INT16 A0; /* a0 */ 123 LVM_INT16 B1; /* -b1! */ 124 LVM_INT16 Shift; /* Shift */ 125 } FO_C16_LShx_Coefs_t; 126 #endif 127 /*** Band pass coefficients *******************************************************/ 128 #ifdef BUILD_FLOAT 129 typedef struct 130 { 131 LVM_FLOAT A0; /* a0 */ 132 LVM_FLOAT B2; /* -b2! */ 133 LVM_FLOAT B1; /* -b1! */ 134 } BP_FLOAT_Coefs_t; 135 #else 136 typedef struct 137 { 138 LVM_INT16 A0; /* a0 */ 139 LVM_INT16 B2; /* -b2! */ 140 LVM_INT16 B1; /* -b1! */ 141 } BP_C16_Coefs_t; 142 143 typedef struct 144 { 145 LVM_INT32 A0; /* a0 */ 146 LVM_INT32 B2; /* -b2! */ 147 LVM_INT32 B1; /* -b1! */ 148 } BP_C32_Coefs_t; 149 #endif 150 151 /*** Peaking coefficients *********************************************************/ 152 #ifdef BUILD_FLOAT 153 typedef struct 154 { 155 LVM_FLOAT A0; /* a0 */ 156 LVM_FLOAT B2; /* -b2! */ 157 LVM_FLOAT B1; /* -b1! */ 158 LVM_FLOAT G; /* Gain */ 159 } PK_FLOAT_Coefs_t; 160 #else 161 typedef struct 162 { 163 LVM_INT16 A0; /* a0 */ 164 LVM_INT16 B2; /* -b2! */ 165 LVM_INT16 B1; /* -b1! */ 166 LVM_INT16 G; /* Gain */ 167 } PK_C16_Coefs_t; 168 169 typedef struct 170 { 171 LVM_INT32 A0; /* a0 */ 172 LVM_INT32 B2; /* -b2! */ 173 LVM_INT32 B1; /* -b1! */ 174 LVM_INT16 G; /* Gain */ 175 } PK_C32_Coefs_t; 176 #endif 177 178 /********************************************************************************** 179 TAPS TYPE DEFINITIONS 180 ***********************************************************************************/ 181 182 /*** Types used for first order and shelving filter *******************************/ 183 #ifdef BUILD_FLOAT 184 typedef struct 185 { 186 LVM_FLOAT Storage[ (1 * 2) ]; /* One channel, two taps of size LVM_INT32 */ 187 } Biquad_1I_Order1_FLOAT_Taps_t; 188 189 typedef struct 190 { 191 #ifdef SUPPORT_MC 192 /* LVM_MAX_CHANNELS channels, two taps of size LVM_FLOAT */ 193 LVM_FLOAT Storage[ (LVM_MAX_CHANNELS * 2) ]; 194 #else 195 LVM_FLOAT Storage[ (2 * 2) ]; /* Two channels, two taps of size LVM_FLOAT */ 196 #endif 197 } Biquad_2I_Order1_FLOAT_Taps_t; 198 #else 199 typedef struct 200 { 201 LVM_INT32 Storage[ (1*2) ]; /* One channel, two taps of size LVM_INT32 */ 202 } Biquad_1I_Order1_Taps_t; 203 204 typedef struct 205 { 206 LVM_INT32 Storage[ (2*2) ]; /* Two channels, two taps of size LVM_INT32 */ 207 } Biquad_2I_Order1_Taps_t; 208 #endif 209 210 /*** Types used for biquad, band pass and peaking filter **************************/ 211 #ifdef BUILD_FLOAT 212 typedef struct 213 { 214 LVM_FLOAT Storage[ (1 * 4) ]; /* One channel, four taps of size LVM_FLOAT */ 215 } Biquad_1I_Order2_FLOAT_Taps_t; 216 217 typedef struct 218 { 219 #ifdef SUPPORT_MC 220 /* LVM_MAX_CHANNELS, four taps of size LVM_FLOAT */ 221 LVM_FLOAT Storage[ (LVM_MAX_CHANNELS * 4) ]; 222 #else 223 LVM_FLOAT Storage[ (2 * 4) ]; /* Two channels, four taps of size LVM_FLOAT */ 224 #endif 225 } Biquad_2I_Order2_FLOAT_Taps_t; 226 #else 227 typedef struct 228 { 229 LVM_INT32 Storage[ (1*4) ]; /* One channel, four taps of size LVM_INT32 */ 230 } Biquad_1I_Order2_Taps_t; 231 232 typedef struct 233 { 234 LVM_INT32 Storage[ (2*4) ]; /* Two channels, four taps of size LVM_INT32 */ 235 } Biquad_2I_Order2_Taps_t; 236 #endif 237 /* The names of the functions are changed to satisfy QAC rules: Name should be Unique withing 16 characters*/ 238 #define BQ_2I_D32F32Cll_TRC_WRA_01_Init Init_BQ_2I_D32F32Cll_TRC_WRA_01 239 #define BP_1I_D32F32C30_TRC_WRA_02 TWO_BP_1I_D32F32C30_TRC_WRA_02 240 241 /********************************************************************************** 242 FUNCTION PROTOTYPES: BIQUAD FILTERS 243 ***********************************************************************************/ 244 245 /*** 16 bit data path *************************************************************/ 246 247 248 #ifdef BUILD_FLOAT 249 void BQ_2I_D16F32Css_TRC_WRA_01_Init ( Biquad_FLOAT_Instance_t *pInstance, 250 Biquad_2I_Order2_FLOAT_Taps_t *pTaps, 251 BQ_FLOAT_Coefs_t *pCoef); 252 #else 253 void BQ_2I_D16F32Css_TRC_WRA_01_Init ( Biquad_Instance_t *pInstance, 254 Biquad_2I_Order2_Taps_t *pTaps, 255 BQ_C16_Coefs_t *pCoef); 256 #endif 257 258 #ifdef BUILD_FLOAT 259 void BQ_2I_D16F32C15_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 260 LVM_FLOAT *pDataIn, 261 LVM_FLOAT *pDataOut, 262 LVM_INT16 NrSamples); 263 #else 264 void BQ_2I_D16F32C15_TRC_WRA_01 ( Biquad_Instance_t *pInstance, 265 LVM_INT16 *pDataIn, 266 LVM_INT16 *pDataOut, 267 LVM_INT16 NrSamples); 268 #endif 269 270 #ifdef BUILD_FLOAT 271 void BQ_2I_D16F32C14_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 272 LVM_FLOAT *pDataIn, 273 LVM_FLOAT *pDataOut, 274 LVM_INT16 NrSamples); 275 #else 276 void BQ_2I_D16F32C14_TRC_WRA_01 ( Biquad_Instance_t *pInstance, 277 LVM_INT16 *pDataIn, 278 LVM_INT16 *pDataOut, 279 LVM_INT16 NrSamples); 280 281 #endif 282 283 #ifdef BUILD_FLOAT 284 void BQ_2I_D16F32C13_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 285 LVM_FLOAT *pDataIn, 286 LVM_FLOAT *pDataOut, 287 LVM_INT16 NrSamples); 288 #else 289 void BQ_2I_D16F32C13_TRC_WRA_01 ( Biquad_Instance_t *pInstance, 290 LVM_INT16 *pDataIn, 291 LVM_INT16 *pDataOut, 292 LVM_INT16 NrSamples); 293 294 #endif 295 296 #ifdef BUILD_FLOAT 297 void BQ_2I_D16F16Css_TRC_WRA_01_Init ( Biquad_FLOAT_Instance_t *pInstance, 298 Biquad_2I_Order2_FLOAT_Taps_t *pTaps, 299 BQ_FLOAT_Coefs_t *pCoef); 300 #else 301 void BQ_2I_D16F16Css_TRC_WRA_01_Init ( Biquad_Instance_t *pInstance, 302 Biquad_2I_Order2_Taps_t *pTaps, 303 BQ_C16_Coefs_t *pCoef); 304 305 #endif 306 307 #ifdef BUILD_FLOAT 308 void BQ_2I_D16F16C15_TRC_WRA_01( Biquad_FLOAT_Instance_t *pInstance, 309 LVM_FLOAT *pDataIn, 310 LVM_FLOAT *pDataOut, 311 LVM_INT16 NrSamples); 312 #else 313 void BQ_2I_D16F16C15_TRC_WRA_01( Biquad_Instance_t *pInstance, 314 LVM_INT16 *pDataIn, 315 LVM_INT16 *pDataOut, 316 LVM_INT16 NrSamples); 317 318 #endif 319 320 #ifdef BUILD_FLOAT 321 void BQ_2I_D16F16C14_TRC_WRA_01( Biquad_FLOAT_Instance_t *pInstance, 322 LVM_FLOAT *pDataIn, 323 LVM_FLOAT *pDataOut, 324 LVM_INT16 NrSamples); 325 #else 326 void BQ_2I_D16F16C14_TRC_WRA_01( Biquad_Instance_t *pInstance, 327 LVM_INT16 *pDataIn, 328 LVM_INT16 *pDataOut, 329 LVM_INT16 NrSamples); 330 #endif 331 332 #ifdef BUILD_FLOAT 333 void BQ_1I_D16F16Css_TRC_WRA_01_Init ( Biquad_FLOAT_Instance_t *pInstance, 334 Biquad_1I_Order2_FLOAT_Taps_t *pTaps, 335 BQ_FLOAT_Coefs_t *pCoef); 336 #else 337 void BQ_1I_D16F16Css_TRC_WRA_01_Init ( Biquad_Instance_t *pInstance, 338 Biquad_1I_Order2_Taps_t *pTaps, 339 BQ_C16_Coefs_t *pCoef); 340 341 #endif 342 343 #ifdef BUILD_FLOAT 344 void BQ_1I_D16F16C15_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 345 LVM_FLOAT *pDataIn, 346 LVM_FLOAT *pDataOut, 347 LVM_INT16 NrSamples); 348 #else 349 void BQ_1I_D16F16C15_TRC_WRA_01( Biquad_Instance_t *pInstance, 350 LVM_INT16 *pDataIn, 351 LVM_INT16 *pDataOut, 352 LVM_INT16 NrSamples); 353 354 #endif 355 356 #ifdef BUILD_FLOAT 357 void BQ_1I_D16F32Css_TRC_WRA_01_Init ( Biquad_FLOAT_Instance_t *pInstance, 358 Biquad_1I_Order2_FLOAT_Taps_t *pTaps, 359 BQ_FLOAT_Coefs_t *pCoef); 360 #else 361 void BQ_1I_D16F32Css_TRC_WRA_01_Init ( Biquad_Instance_t *pInstance, 362 Biquad_1I_Order2_Taps_t *pTaps, 363 BQ_C16_Coefs_t *pCoef); 364 365 #endif 366 367 #ifdef BUILD_FLOAT 368 void BQ_1I_D16F32C14_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 369 LVM_FLOAT *pDataIn, 370 LVM_FLOAT *pDataOut, 371 LVM_INT16 NrSamples); 372 #else 373 void BQ_1I_D16F32C14_TRC_WRA_01 ( Biquad_Instance_t *pInstance, 374 LVM_INT16 *pDataIn, 375 LVM_INT16 *pDataOut, 376 LVM_INT16 NrSamples); 377 378 #endif 379 /*** 32 bit data path *************************************************************/ 380 #ifdef BUILD_FLOAT 381 void BQ_2I_D32F32Cll_TRC_WRA_01_Init ( Biquad_FLOAT_Instance_t *pInstance, 382 Biquad_2I_Order2_FLOAT_Taps_t *pTaps, 383 BQ_FLOAT_Coefs_t *pCoef); 384 void BQ_2I_D32F32C30_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 385 LVM_FLOAT *pDataIn, 386 LVM_FLOAT *pDataOut, 387 LVM_INT16 NrSamples); 388 #ifdef SUPPORT_MC 389 void BQ_MC_D32F32C30_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 390 LVM_FLOAT *pDataIn, 391 LVM_FLOAT *pDataOut, 392 LVM_INT16 NrFrames, 393 LVM_INT16 NrChannels); 394 #endif 395 #else 396 void BQ_2I_D32F32Cll_TRC_WRA_01_Init ( Biquad_Instance_t *pInstance, 397 Biquad_2I_Order2_Taps_t *pTaps, 398 BQ_C32_Coefs_t *pCoef); 399 400 void BQ_2I_D32F32C30_TRC_WRA_01 ( Biquad_Instance_t *pInstance, 401 LVM_INT32 *pDataIn, 402 LVM_INT32 *pDataOut, 403 LVM_INT16 NrSamples); 404 #endif 405 406 /********************************************************************************** 407 FUNCTION PROTOTYPES: FIRST ORDER FILTERS 408 ***********************************************************************************/ 409 410 /*** 16 bit data path *************************************************************/ 411 #ifdef BUILD_FLOAT 412 void FO_1I_D16F16Css_TRC_WRA_01_Init( Biquad_FLOAT_Instance_t *pInstance, 413 Biquad_1I_Order1_FLOAT_Taps_t *pTaps, 414 FO_FLOAT_Coefs_t *pCoef); 415 #else 416 void FO_1I_D16F16Css_TRC_WRA_01_Init( Biquad_Instance_t *pInstance, 417 Biquad_1I_Order1_Taps_t *pTaps, 418 FO_C16_Coefs_t *pCoef); 419 #endif 420 421 #ifdef BUILD_FLOAT 422 void FO_1I_D16F16C15_TRC_WRA_01( Biquad_FLOAT_Instance_t *pInstance, 423 LVM_FLOAT *pDataIn, 424 LVM_FLOAT *pDataOut, 425 LVM_INT16 NrSamples); 426 #else 427 void FO_1I_D16F16C15_TRC_WRA_01( Biquad_Instance_t *pInstance, 428 LVM_INT16 *pDataIn, 429 LVM_INT16 *pDataOut, 430 LVM_INT16 NrSamples); 431 #endif 432 433 #ifdef BUILD_FLOAT 434 void FO_2I_D16F32Css_LShx_TRC_WRA_01_Init(Biquad_FLOAT_Instance_t *pInstance, 435 Biquad_2I_Order1_FLOAT_Taps_t *pTaps, 436 FO_FLOAT_LShx_Coefs_t *pCoef); 437 #else 438 void FO_2I_D16F32Css_LShx_TRC_WRA_01_Init(Biquad_Instance_t *pInstance, 439 Biquad_2I_Order1_Taps_t *pTaps, 440 FO_C16_LShx_Coefs_t *pCoef); 441 #endif 442 443 #ifdef BUILD_FLOAT 444 void FO_2I_D16F32C15_LShx_TRC_WRA_01(Biquad_FLOAT_Instance_t *pInstance, 445 LVM_FLOAT *pDataIn, 446 LVM_FLOAT *pDataOut, 447 LVM_INT16 NrSamples); 448 #else 449 void FO_2I_D16F32C15_LShx_TRC_WRA_01(Biquad_Instance_t *pInstance, 450 LVM_INT16 *pDataIn, 451 LVM_INT16 *pDataOut, 452 LVM_INT16 NrSamples); 453 #endif 454 /*** 32 bit data path *************************************************************/ 455 #ifdef BUILD_FLOAT 456 void FO_1I_D32F32Cll_TRC_WRA_01_Init( Biquad_FLOAT_Instance_t *pInstance, 457 Biquad_1I_Order1_FLOAT_Taps_t *pTaps, 458 FO_FLOAT_Coefs_t *pCoef); 459 void FO_1I_D32F32C31_TRC_WRA_01( Biquad_FLOAT_Instance_t *pInstance, 460 LVM_FLOAT *pDataIn, 461 LVM_FLOAT *pDataOut, 462 LVM_INT16 NrSamples); 463 #ifdef SUPPORT_MC 464 void FO_Mc_D16F32C15_LShx_TRC_WRA_01(Biquad_FLOAT_Instance_t *pInstance, 465 LVM_FLOAT *pDataIn, 466 LVM_FLOAT *pDataOut, 467 LVM_INT16 NrFrames, 468 LVM_INT16 NrChannels); 469 #endif 470 #else 471 void FO_1I_D32F32Cll_TRC_WRA_01_Init( Biquad_Instance_t *pInstance, 472 Biquad_1I_Order1_Taps_t *pTaps, 473 FO_C32_Coefs_t *pCoef); 474 475 void FO_1I_D32F32C31_TRC_WRA_01( Biquad_Instance_t *pInstance, 476 LVM_INT32 *pDataIn, 477 LVM_INT32 *pDataOut, 478 LVM_INT16 NrSamples); 479 #endif 480 /********************************************************************************** 481 FUNCTION PROTOTYPES: BAND PASS FILTERS 482 ***********************************************************************************/ 483 484 /*** 16 bit data path *************************************************************/ 485 #ifdef BUILD_FLOAT 486 void BP_1I_D16F16Css_TRC_WRA_01_Init( Biquad_FLOAT_Instance_t *pInstance, 487 Biquad_1I_Order2_FLOAT_Taps_t *pTaps, 488 BP_FLOAT_Coefs_t *pCoef); 489 void BP_1I_D16F16C14_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 490 LVM_FLOAT *pDataIn, 491 LVM_FLOAT *pDataOut, 492 LVM_INT16 NrSamples); 493 void BP_1I_D16F32Cll_TRC_WRA_01_Init (Biquad_FLOAT_Instance_t *pInstance, 494 Biquad_1I_Order2_FLOAT_Taps_t *pTaps, 495 BP_FLOAT_Coefs_t *pCoef); 496 void BP_1I_D16F32C30_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 497 LVM_FLOAT *pDataIn, 498 LVM_FLOAT *pDataOut, 499 LVM_INT16 NrSamples); 500 #else 501 void BP_1I_D16F16Css_TRC_WRA_01_Init ( Biquad_Instance_t *pInstance, 502 Biquad_1I_Order2_Taps_t *pTaps, 503 BP_C16_Coefs_t *pCoef); 504 505 void BP_1I_D16F16C14_TRC_WRA_01 ( Biquad_Instance_t *pInstance, 506 LVM_INT16 *pDataIn, 507 LVM_INT16 *pDataOut, 508 LVM_INT16 NrSamples); 509 510 void BP_1I_D16F32Cll_TRC_WRA_01_Init ( Biquad_Instance_t *pInstance, 511 Biquad_1I_Order2_Taps_t *pTaps, 512 BP_C32_Coefs_t *pCoef); 513 514 void BP_1I_D16F32C30_TRC_WRA_01 ( Biquad_Instance_t *pInstance, 515 LVM_INT16 *pDataIn, 516 LVM_INT16 *pDataOut, 517 LVM_INT16 NrSamples); 518 #endif 519 /*** 32 bit data path *************************************************************/ 520 #ifdef BUILD_FLOAT 521 void BP_1I_D32F32Cll_TRC_WRA_02_Init ( Biquad_FLOAT_Instance_t *pInstance, 522 Biquad_1I_Order2_FLOAT_Taps_t *pTaps, 523 BP_FLOAT_Coefs_t *pCoef); 524 void BP_1I_D32F32C30_TRC_WRA_02( Biquad_FLOAT_Instance_t *pInstance, 525 LVM_FLOAT *pDataIn, 526 LVM_FLOAT *pDataOut, 527 LVM_INT16 NrSamples); 528 #else 529 void BP_1I_D32F32Cll_TRC_WRA_02_Init ( Biquad_Instance_t *pInstance, 530 Biquad_1I_Order2_Taps_t *pTaps, 531 BP_C32_Coefs_t *pCoef); 532 533 void BP_1I_D32F32C30_TRC_WRA_02( Biquad_Instance_t *pInstance, 534 LVM_INT32 *pDataIn, 535 LVM_INT32 *pDataOut, 536 LVM_INT16 NrSamples); 537 #endif 538 539 /*** 32 bit data path STEREO ******************************************************/ 540 #ifndef BUILD_FLOAT 541 void PK_2I_D32F32CllGss_TRC_WRA_01_Init ( Biquad_Instance_t *pInstance, 542 Biquad_2I_Order2_Taps_t *pTaps, 543 PK_C32_Coefs_t *pCoef); 544 void PK_2I_D32F32C30G11_TRC_WRA_01 ( Biquad_Instance_t *pInstance, 545 LVM_INT32 *pDataIn, 546 LVM_INT32 *pDataOut, 547 LVM_INT16 NrSamples); 548 #endif 549 #ifdef BUILD_FLOAT 550 void PK_2I_D32F32CssGss_TRC_WRA_01_Init ( Biquad_FLOAT_Instance_t *pInstance, 551 Biquad_2I_Order2_FLOAT_Taps_t *pTaps, 552 PK_FLOAT_Coefs_t *pCoef); 553 #else 554 void PK_2I_D32F32CssGss_TRC_WRA_01_Init ( Biquad_Instance_t *pInstance, 555 Biquad_2I_Order2_Taps_t *pTaps, 556 PK_C16_Coefs_t *pCoef); 557 #endif 558 #ifdef BUILD_FLOAT 559 void PK_2I_D32F32C14G11_TRC_WRA_01( Biquad_FLOAT_Instance_t *pInstance, 560 LVM_FLOAT *pDataIn, 561 LVM_FLOAT *pDataOut, 562 LVM_INT16 NrSamples); 563 #ifdef SUPPORT_MC 564 void PK_Mc_D32F32C14G11_TRC_WRA_01(Biquad_FLOAT_Instance_t *pInstance, 565 LVM_FLOAT *pDataIn, 566 LVM_FLOAT *pDataOut, 567 LVM_INT16 NrFrames, 568 LVM_INT16 NrChannels); 569 #endif 570 #else 571 void PK_2I_D32F32C14G11_TRC_WRA_01 ( Biquad_Instance_t *pInstance, 572 LVM_INT32 *pDataIn, 573 LVM_INT32 *pDataOut, 574 LVM_INT16 NrSamples); 575 #endif 576 577 /********************************************************************************** 578 FUNCTION PROTOTYPES: DC REMOVAL FILTERS 579 ***********************************************************************************/ 580 581 /*** 16 bit data path STEREO ******************************************************/ 582 #ifdef BUILD_FLOAT 583 #ifdef SUPPORT_MC 584 void DC_Mc_D16_TRC_WRA_01_Init ( Biquad_FLOAT_Instance_t *pInstance); 585 586 void DC_Mc_D16_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 587 LVM_FLOAT *pDataIn, 588 LVM_FLOAT *pDataOut, 589 LVM_INT16 NrFrames, 590 LVM_INT16 NrChannels); 591 #else 592 void DC_2I_D16_TRC_WRA_01_Init ( Biquad_FLOAT_Instance_t *pInstance); 593 594 void DC_2I_D16_TRC_WRA_01 ( Biquad_FLOAT_Instance_t *pInstance, 595 LVM_FLOAT *pDataIn, 596 LVM_FLOAT *pDataOut, 597 LVM_INT16 NrSamples); 598 #endif 599 #else 600 void DC_2I_D16_TRC_WRA_01_Init ( Biquad_Instance_t *pInstance); 601 602 void DC_2I_D16_TRC_WRA_01 ( Biquad_Instance_t *pInstance, 603 LVM_INT16 *pDataIn, 604 LVM_INT16 *pDataOut, 605 LVM_INT16 NrSamples); 606 #endif 607 #ifdef __cplusplus 608 } 609 #endif /* __cplusplus */ 610 611 612 /**********************************************************************************/ 613 614 #endif /** _BIQUAD_H_ **/ 615 616