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 19 /************************************************************************************/ 20 /* */ 21 /* Includes */ 22 /* */ 23 /************************************************************************************/ 24 25 #include "LVDBE.h" 26 #include "LVDBE_Coeffs.h" /* Filter coefficients */ 27 #include "BIQUAD.h" 28 29 30 /************************************************************************************/ 31 /* */ 32 /* Coefficients constant table */ 33 /* */ 34 /************************************************************************************/ 35 36 /* 37 * High Pass Filter Coefficient table 38 */ 39 #ifndef BUILD_FLOAT 40 const BQ_C32_Coefs_t LVDBE_HPF_Table[] = { 41 #else /*BUILD_FLOAT*/ 42 const BQ_FLOAT_Coefs_t LVDBE_HPF_Table[] = { 43 #endif /*BUILD_FLOAT*/ 44 /* Coefficients for 55Hz centre frequency */ 45 {HPF_Fs8000_Fc55_A2, /* 8kS/s coefficients */ 46 HPF_Fs8000_Fc55_A1, 47 HPF_Fs8000_Fc55_A0, 48 -HPF_Fs8000_Fc55_B2, 49 -HPF_Fs8000_Fc55_B1}, 50 {HPF_Fs11025_Fc55_A2, /* 11kS/s coefficients */ 51 HPF_Fs11025_Fc55_A1, 52 HPF_Fs11025_Fc55_A0, 53 -HPF_Fs11025_Fc55_B2, 54 -HPF_Fs11025_Fc55_B1}, 55 {HPF_Fs12000_Fc55_A2, /* 12kS/s coefficients */ 56 HPF_Fs12000_Fc55_A1, 57 HPF_Fs12000_Fc55_A0, 58 -HPF_Fs12000_Fc55_B2, 59 -HPF_Fs12000_Fc55_B1}, 60 {HPF_Fs16000_Fc55_A2, /* 16kS/s coefficients */ 61 HPF_Fs16000_Fc55_A1, 62 HPF_Fs16000_Fc55_A0, 63 -HPF_Fs16000_Fc55_B2, 64 -HPF_Fs16000_Fc55_B1}, 65 {HPF_Fs22050_Fc55_A2, /* 22kS/s coefficients */ 66 HPF_Fs22050_Fc55_A1, 67 HPF_Fs22050_Fc55_A0, 68 -HPF_Fs22050_Fc55_B2, 69 -HPF_Fs22050_Fc55_B1}, 70 {HPF_Fs24000_Fc55_A2, /* 24kS/s coefficients */ 71 HPF_Fs24000_Fc55_A1, 72 HPF_Fs24000_Fc55_A0, 73 -HPF_Fs24000_Fc55_B2, 74 -HPF_Fs24000_Fc55_B1}, 75 {HPF_Fs32000_Fc55_A2, /* 32kS/s coefficients */ 76 HPF_Fs32000_Fc55_A1, 77 HPF_Fs32000_Fc55_A0, 78 -HPF_Fs32000_Fc55_B2, 79 -HPF_Fs32000_Fc55_B1}, 80 {HPF_Fs44100_Fc55_A2, /* 44kS/s coefficients */ 81 HPF_Fs44100_Fc55_A1, 82 HPF_Fs44100_Fc55_A0, 83 -HPF_Fs44100_Fc55_B2, 84 -HPF_Fs44100_Fc55_B1}, 85 {HPF_Fs48000_Fc55_A2, /* 48kS/s coefficients */ 86 HPF_Fs48000_Fc55_A1, 87 HPF_Fs48000_Fc55_A0, 88 -HPF_Fs48000_Fc55_B2, 89 -HPF_Fs48000_Fc55_B1}, 90 #ifdef HIGHER_FS 91 {HPF_Fs88200_Fc55_A2, /* 88kS/s coefficients */ 92 HPF_Fs88200_Fc55_A1, 93 HPF_Fs88200_Fc55_A0, 94 -HPF_Fs88200_Fc55_B2, 95 -HPF_Fs88200_Fc55_B1}, 96 {HPF_Fs96000_Fc55_A2, /* 96kS/s coefficients */ 97 HPF_Fs96000_Fc55_A1, 98 HPF_Fs96000_Fc55_A0, 99 -HPF_Fs96000_Fc55_B2, 100 -HPF_Fs96000_Fc55_B1}, 101 {HPF_Fs176400_Fc55_A2, /* 176kS/s coefficients */ 102 HPF_Fs176400_Fc55_A1, 103 HPF_Fs176400_Fc55_A0, 104 -HPF_Fs176400_Fc55_B2, 105 -HPF_Fs176400_Fc55_B1}, 106 {HPF_Fs192000_Fc55_A2, /* 192kS/s coefficients */ 107 HPF_Fs192000_Fc55_A1, 108 HPF_Fs192000_Fc55_A0, 109 -HPF_Fs192000_Fc55_B2, 110 -HPF_Fs192000_Fc55_B1}, 111 #endif 112 113 /* Coefficients for 66Hz centre frequency */ 114 {HPF_Fs8000_Fc66_A2, /* 8kS/s coefficients */ 115 HPF_Fs8000_Fc66_A1, 116 HPF_Fs8000_Fc66_A0, 117 -HPF_Fs8000_Fc66_B2, 118 -HPF_Fs8000_Fc66_B1}, 119 {HPF_Fs11025_Fc66_A2, /* 11kS/s coefficients */ 120 HPF_Fs11025_Fc66_A1, 121 HPF_Fs11025_Fc66_A0, 122 -HPF_Fs11025_Fc66_B2, 123 -HPF_Fs11025_Fc66_B1}, 124 {HPF_Fs12000_Fc66_A2, /* 12kS/s coefficients */ 125 HPF_Fs12000_Fc66_A1, 126 HPF_Fs12000_Fc66_A0, 127 -HPF_Fs12000_Fc66_B2, 128 -HPF_Fs12000_Fc66_B1}, 129 {HPF_Fs16000_Fc66_A2, /* 16kS/s coefficients */ 130 HPF_Fs16000_Fc66_A1, 131 HPF_Fs16000_Fc66_A0, 132 -HPF_Fs16000_Fc66_B2, 133 -HPF_Fs16000_Fc66_B1}, 134 {HPF_Fs22050_Fc66_A2, /* 22kS/s coefficients */ 135 HPF_Fs22050_Fc66_A1, 136 HPF_Fs22050_Fc66_A0, 137 -HPF_Fs22050_Fc66_B2, 138 -HPF_Fs22050_Fc66_B1}, 139 {HPF_Fs24000_Fc66_A2, /* 24kS/s coefficients */ 140 HPF_Fs24000_Fc66_A1, 141 HPF_Fs24000_Fc66_A0, 142 -HPF_Fs24000_Fc66_B2, 143 -HPF_Fs24000_Fc66_B1}, 144 {HPF_Fs32000_Fc66_A2, /* 32kS/s coefficients */ 145 HPF_Fs32000_Fc66_A1, 146 HPF_Fs32000_Fc66_A0, 147 -HPF_Fs32000_Fc66_B2, 148 -HPF_Fs32000_Fc66_B1}, 149 {HPF_Fs44100_Fc66_A2, /* 44kS/s coefficients */ 150 HPF_Fs44100_Fc66_A1, 151 HPF_Fs44100_Fc66_A0, 152 -HPF_Fs44100_Fc66_B2, 153 -HPF_Fs44100_Fc66_B1}, 154 {HPF_Fs48000_Fc66_A2, /* 48kS/s coefficients */ 155 HPF_Fs48000_Fc66_A1, 156 HPF_Fs48000_Fc66_A0, 157 -HPF_Fs48000_Fc66_B2, 158 -HPF_Fs48000_Fc66_B1}, 159 #ifdef HIGHER_FS 160 {HPF_Fs88200_Fc66_A2, /* 88kS/s coefficients */ 161 HPF_Fs88200_Fc66_A1, 162 HPF_Fs88200_Fc66_A0, 163 -HPF_Fs88200_Fc66_B2, 164 -HPF_Fs88200_Fc66_B1}, 165 {HPF_Fs96000_Fc66_A2, /* 96kS/s coefficients */ 166 HPF_Fs96000_Fc66_A1, 167 HPF_Fs96000_Fc66_A0, 168 -HPF_Fs96000_Fc66_B2, 169 -HPF_Fs96000_Fc66_B1}, 170 {HPF_Fs176400_Fc66_A2, /* 176kS/s coefficients */ 171 HPF_Fs176400_Fc66_A1, 172 HPF_Fs176400_Fc66_A0, 173 -HPF_Fs176400_Fc66_B2, 174 -HPF_Fs176400_Fc66_B1}, 175 {HPF_Fs192000_Fc66_A2, /* 192kS/s coefficients */ 176 HPF_Fs192000_Fc66_A1, 177 HPF_Fs192000_Fc66_A0, 178 -HPF_Fs192000_Fc66_B2, 179 -HPF_Fs192000_Fc66_B1}, 180 #endif 181 182 183 /* Coefficients for 78Hz centre frequency */ 184 {HPF_Fs8000_Fc78_A2, /* 8kS/s coefficients */ 185 HPF_Fs8000_Fc78_A1, 186 HPF_Fs8000_Fc78_A0, 187 -HPF_Fs8000_Fc78_B2, 188 -HPF_Fs8000_Fc78_B1}, 189 {HPF_Fs11025_Fc78_A2, /* 11kS/s coefficients */ 190 HPF_Fs11025_Fc78_A1, 191 HPF_Fs11025_Fc78_A0, 192 -HPF_Fs11025_Fc78_B2, 193 -HPF_Fs11025_Fc78_B1}, 194 {HPF_Fs12000_Fc78_A2, /* 12kS/s coefficients */ 195 HPF_Fs12000_Fc78_A1, 196 HPF_Fs12000_Fc78_A0, 197 -HPF_Fs12000_Fc78_B2, 198 -HPF_Fs12000_Fc78_B1}, 199 {HPF_Fs16000_Fc78_A2, /* 16kS/s coefficients */ 200 HPF_Fs16000_Fc78_A1, 201 HPF_Fs16000_Fc78_A0, 202 -HPF_Fs16000_Fc78_B2, 203 -HPF_Fs16000_Fc78_B1}, 204 {HPF_Fs22050_Fc78_A2, /* 22kS/s coefficients */ 205 HPF_Fs22050_Fc78_A1, 206 HPF_Fs22050_Fc78_A0, 207 -HPF_Fs22050_Fc78_B2, 208 -HPF_Fs22050_Fc78_B1}, 209 {HPF_Fs24000_Fc78_A2, /* 24kS/s coefficients */ 210 HPF_Fs24000_Fc78_A1, 211 HPF_Fs24000_Fc78_A0, 212 -HPF_Fs24000_Fc78_B2, 213 -HPF_Fs24000_Fc78_B1}, 214 {HPF_Fs32000_Fc78_A2, /* 32kS/s coefficients */ 215 HPF_Fs32000_Fc78_A1, 216 HPF_Fs32000_Fc78_A0, 217 -HPF_Fs32000_Fc78_B2, 218 -HPF_Fs32000_Fc78_B1}, 219 {HPF_Fs44100_Fc78_A2, /* 44kS/s coefficients */ 220 HPF_Fs44100_Fc78_A1, 221 HPF_Fs44100_Fc78_A0, 222 -HPF_Fs44100_Fc78_B2, 223 -HPF_Fs44100_Fc78_B1}, 224 {HPF_Fs48000_Fc78_A2, /* 48kS/s coefficients */ 225 HPF_Fs48000_Fc78_A1, 226 HPF_Fs48000_Fc78_A0, 227 -HPF_Fs48000_Fc78_B2, 228 -HPF_Fs48000_Fc78_B1}, 229 #ifdef HIGHER_FS 230 {HPF_Fs88200_Fc78_A2, /* 88kS/s coefficients */ 231 HPF_Fs88200_Fc78_A1, 232 HPF_Fs88200_Fc78_A0, 233 -HPF_Fs88200_Fc78_B2, 234 -HPF_Fs88200_Fc78_B1}, 235 {HPF_Fs96000_Fc78_A2, /* 96kS/s coefficients */ 236 HPF_Fs96000_Fc78_A1, 237 HPF_Fs96000_Fc78_A0, 238 -HPF_Fs96000_Fc78_B2, 239 -HPF_Fs96000_Fc78_B1}, 240 {HPF_Fs176400_Fc78_A2, /* 176kS/s coefficients */ 241 HPF_Fs176400_Fc78_A1, 242 HPF_Fs176400_Fc78_A0, 243 -HPF_Fs176400_Fc78_B2, 244 -HPF_Fs176400_Fc78_B1}, 245 {HPF_Fs192000_Fc78_A2, /* 192kS/s coefficients */ 246 HPF_Fs192000_Fc78_A1, 247 HPF_Fs192000_Fc78_A0, 248 -HPF_Fs192000_Fc78_B2, 249 -HPF_Fs192000_Fc78_B1}, 250 #endif 251 252 253 /* Coefficients for 90Hz centre frequency */ 254 {HPF_Fs8000_Fc90_A2, /* 8kS/s coefficients */ 255 HPF_Fs8000_Fc90_A1, 256 HPF_Fs8000_Fc90_A0, 257 -HPF_Fs8000_Fc90_B2, 258 -HPF_Fs8000_Fc90_B1}, 259 {HPF_Fs11025_Fc90_A2, /* 11kS/s coefficients */ 260 HPF_Fs11025_Fc90_A1, 261 HPF_Fs11025_Fc90_A0, 262 -HPF_Fs11025_Fc90_B2, 263 -HPF_Fs11025_Fc90_B1}, 264 {HPF_Fs12000_Fc90_A2, /* 12kS/s coefficients */ 265 HPF_Fs12000_Fc90_A1, 266 HPF_Fs12000_Fc90_A0, 267 -HPF_Fs12000_Fc90_B2, 268 -HPF_Fs12000_Fc90_B1}, 269 {HPF_Fs16000_Fc90_A2, /* 16kS/s coefficients */ 270 HPF_Fs16000_Fc90_A1, 271 HPF_Fs16000_Fc90_A0, 272 -HPF_Fs16000_Fc90_B2, 273 -HPF_Fs16000_Fc90_B1}, 274 {HPF_Fs22050_Fc90_A2, /* 22kS/s coefficients */ 275 HPF_Fs22050_Fc90_A1, 276 HPF_Fs22050_Fc90_A0, 277 -HPF_Fs22050_Fc90_B2, 278 -HPF_Fs22050_Fc90_B1}, 279 {HPF_Fs24000_Fc90_A2, /* 24kS/s coefficients */ 280 HPF_Fs24000_Fc90_A1, 281 HPF_Fs24000_Fc90_A0, 282 -HPF_Fs24000_Fc90_B2, 283 -HPF_Fs24000_Fc90_B1}, 284 {HPF_Fs32000_Fc90_A2, /* 32kS/s coefficients */ 285 HPF_Fs32000_Fc90_A1, 286 HPF_Fs32000_Fc90_A0, 287 -HPF_Fs32000_Fc90_B2, 288 -HPF_Fs32000_Fc90_B1}, 289 {HPF_Fs44100_Fc90_A2, /* 44kS/s coefficients */ 290 HPF_Fs44100_Fc90_A1, 291 HPF_Fs44100_Fc90_A0, 292 -HPF_Fs44100_Fc90_B2, 293 -HPF_Fs44100_Fc90_B1}, 294 {HPF_Fs48000_Fc90_A2, /* 48kS/s coefficients */ 295 HPF_Fs48000_Fc90_A1, 296 HPF_Fs48000_Fc90_A0, 297 -HPF_Fs48000_Fc90_B2, 298 -HPF_Fs48000_Fc90_B1} 299 300 #ifdef HIGHER_FS 301 , 302 {HPF_Fs88200_Fc90_A2, /* 88kS/s coefficients */ 303 HPF_Fs88200_Fc90_A1, 304 HPF_Fs88200_Fc90_A0, 305 -HPF_Fs88200_Fc90_B2, 306 -HPF_Fs88200_Fc90_B1}, 307 {HPF_Fs96000_Fc90_A2, /* 96kS/s coefficients */ 308 HPF_Fs96000_Fc90_A1, 309 HPF_Fs96000_Fc90_A0, 310 -HPF_Fs96000_Fc90_B2, 311 -HPF_Fs96000_Fc90_B1}, 312 {HPF_Fs176400_Fc90_A2, /* 176kS/s coefficients */ 313 HPF_Fs176400_Fc90_A1, 314 HPF_Fs176400_Fc90_A0, 315 -HPF_Fs176400_Fc90_B2, 316 -HPF_Fs176400_Fc90_B1}, 317 {HPF_Fs192000_Fc90_A2, /* 192kS/s coefficients */ 318 HPF_Fs192000_Fc90_A1, 319 HPF_Fs192000_Fc90_A0, 320 -HPF_Fs192000_Fc90_B2, 321 -HPF_Fs192000_Fc90_B1} 322 #endif 323 324 }; 325 326 /* 327 * Band Pass Filter coefficient table 328 */ 329 #ifndef BUILD_FLOAT 330 const BP_C32_Coefs_t LVDBE_BPF_Table[] = { 331 #else /*BUILD_FLOAT*/ 332 const BP_FLOAT_Coefs_t LVDBE_BPF_Table[] = { 333 #endif /*BUILD_FLOAT*/ 334 /* Coefficients for 55Hz centre frequency */ 335 {BPF_Fs8000_Fc55_A0, /* 8kS/s coefficients */ 336 -BPF_Fs8000_Fc55_B2, 337 -BPF_Fs8000_Fc55_B1}, 338 {BPF_Fs11025_Fc55_A0, /* 11kS/s coefficients */ 339 -BPF_Fs11025_Fc55_B2, 340 -BPF_Fs11025_Fc55_B1}, 341 {BPF_Fs12000_Fc55_A0, /* 12kS/s coefficients */ 342 -BPF_Fs12000_Fc55_B2, 343 -BPF_Fs12000_Fc55_B1}, 344 {BPF_Fs16000_Fc55_A0, /* 16kS/s coefficients */ 345 -BPF_Fs16000_Fc55_B2, 346 -BPF_Fs16000_Fc55_B1}, 347 {BPF_Fs22050_Fc55_A0, /* 22kS/s coefficients */ 348 -BPF_Fs22050_Fc55_B2, 349 -BPF_Fs22050_Fc55_B1}, 350 {BPF_Fs24000_Fc55_A0, /* 24kS/s coefficients */ 351 -BPF_Fs24000_Fc55_B2, 352 -BPF_Fs24000_Fc55_B1}, 353 {BPF_Fs32000_Fc55_A0, /* 32kS/s coefficients */ 354 -BPF_Fs32000_Fc55_B2, 355 -BPF_Fs32000_Fc55_B1}, 356 {BPF_Fs44100_Fc55_A0, /* 44kS/s coefficients */ 357 -BPF_Fs44100_Fc55_B2, 358 -BPF_Fs44100_Fc55_B1}, 359 {BPF_Fs48000_Fc55_A0, /* 48kS/s coefficients */ 360 -BPF_Fs48000_Fc55_B2, 361 -BPF_Fs48000_Fc55_B1}, 362 #ifdef HIGHER_FS 363 {BPF_Fs88200_Fc55_A0, /* 88kS/s coefficients */ 364 -BPF_Fs88200_Fc55_B2, 365 -BPF_Fs88200_Fc55_B1}, 366 {BPF_Fs96000_Fc55_A0, /* 96kS/s coefficients */ 367 -BPF_Fs96000_Fc55_B2, 368 -BPF_Fs96000_Fc55_B1}, 369 {BPF_Fs176400_Fc55_A0, /* 176kS/s coefficients */ 370 -BPF_Fs176400_Fc55_B2, 371 -BPF_Fs176400_Fc55_B1}, 372 {BPF_Fs192000_Fc55_A0, /* 192kS/s coefficients */ 373 -BPF_Fs192000_Fc55_B2, 374 -BPF_Fs192000_Fc55_B1}, 375 #endif 376 377 /* Coefficients for 66Hz centre frequency */ 378 {BPF_Fs8000_Fc66_A0, /* 8kS/s coefficients */ 379 -BPF_Fs8000_Fc66_B2, 380 -BPF_Fs8000_Fc66_B1}, 381 {BPF_Fs11025_Fc66_A0, /* 11kS/s coefficients */ 382 -BPF_Fs11025_Fc66_B2, 383 -BPF_Fs11025_Fc66_B1}, 384 {BPF_Fs12000_Fc66_A0, /* 12kS/s coefficients */ 385 -BPF_Fs12000_Fc66_B2, 386 -BPF_Fs12000_Fc66_B1}, 387 {BPF_Fs16000_Fc66_A0, /* 16kS/s coefficients */ 388 -BPF_Fs16000_Fc66_B2, 389 -BPF_Fs16000_Fc66_B1}, 390 {BPF_Fs22050_Fc66_A0, /* 22kS/s coefficients */ 391 -BPF_Fs22050_Fc66_B2, 392 -BPF_Fs22050_Fc66_B1}, 393 {BPF_Fs24000_Fc66_A0, /* 24kS/s coefficients */ 394 -BPF_Fs24000_Fc66_B2, 395 -BPF_Fs24000_Fc66_B1}, 396 {BPF_Fs32000_Fc66_A0, /* 32kS/s coefficients */ 397 -BPF_Fs32000_Fc66_B2, 398 -BPF_Fs32000_Fc66_B1}, 399 {BPF_Fs44100_Fc66_A0, /* 44kS/s coefficients */ 400 -BPF_Fs44100_Fc66_B2, 401 -BPF_Fs44100_Fc66_B1}, 402 {BPF_Fs48000_Fc66_A0, /* 48kS/s coefficients */ 403 -BPF_Fs48000_Fc66_B2, 404 -BPF_Fs48000_Fc66_B1}, 405 #ifdef HIGHER_FS 406 {BPF_Fs88200_Fc66_A0, /* 88kS/s coefficients */ 407 -BPF_Fs88200_Fc66_B2, 408 -BPF_Fs88200_Fc66_B1}, 409 {BPF_Fs96000_Fc66_A0, /* 96kS/s coefficients */ 410 -BPF_Fs96000_Fc66_B2, 411 -BPF_Fs96000_Fc66_B1}, 412 {BPF_Fs176400_Fc66_A0, /* 176kS/s coefficients */ 413 -BPF_Fs176400_Fc66_B2, 414 -BPF_Fs176400_Fc66_B1}, 415 {BPF_Fs192000_Fc66_A0, /* 192kS/s coefficients */ 416 -BPF_Fs192000_Fc66_B2, 417 -BPF_Fs192000_Fc66_B1}, 418 #endif 419 420 /* Coefficients for 78Hz centre frequency */ 421 {BPF_Fs8000_Fc78_A0, /* 8kS/s coefficients */ 422 -BPF_Fs8000_Fc78_B2, 423 -BPF_Fs8000_Fc78_B1}, 424 {BPF_Fs11025_Fc78_A0, /* 11kS/s coefficients */ 425 -BPF_Fs11025_Fc78_B2, 426 -BPF_Fs11025_Fc78_B1}, 427 {BPF_Fs12000_Fc78_A0, /* 12kS/s coefficients */ 428 -BPF_Fs12000_Fc78_B2, 429 -BPF_Fs12000_Fc78_B1}, 430 {BPF_Fs16000_Fc78_A0, /* 16kS/s coefficients */ 431 -BPF_Fs16000_Fc78_B2, 432 -BPF_Fs16000_Fc78_B1}, 433 {BPF_Fs22050_Fc78_A0, /* 22kS/s coefficients */ 434 -BPF_Fs22050_Fc78_B2, 435 -BPF_Fs22050_Fc78_B1}, 436 {BPF_Fs24000_Fc78_A0, /* 24kS/s coefficients */ 437 -BPF_Fs24000_Fc78_B2, 438 -BPF_Fs24000_Fc78_B1}, 439 {BPF_Fs32000_Fc78_A0, /* 32kS/s coefficients */ 440 -BPF_Fs32000_Fc78_B2, 441 -BPF_Fs32000_Fc78_B1}, 442 {BPF_Fs44100_Fc78_A0, /* 44kS/s coefficients */ 443 -BPF_Fs44100_Fc78_B2, 444 -BPF_Fs44100_Fc78_B1}, 445 {BPF_Fs48000_Fc78_A0, /* 48kS/s coefficients */ 446 -BPF_Fs48000_Fc78_B2, 447 -BPF_Fs48000_Fc78_B1}, 448 #ifdef HIGHER_FS 449 {BPF_Fs88200_Fc66_A0, /* 88kS/s coefficients */ 450 -BPF_Fs88200_Fc66_B2, 451 -BPF_Fs88200_Fc66_B1}, 452 {BPF_Fs96000_Fc78_A0, /* 96kS/s coefficients */ 453 -BPF_Fs96000_Fc78_B2, 454 -BPF_Fs96000_Fc78_B1}, 455 {BPF_Fs176400_Fc66_A0, /* 176kS/s coefficients */ 456 -BPF_Fs176400_Fc66_B2, 457 -BPF_Fs176400_Fc66_B1}, 458 {BPF_Fs192000_Fc78_A0, /* 192kS/s coefficients */ 459 -BPF_Fs192000_Fc78_B2, 460 -BPF_Fs192000_Fc78_B1}, 461 #endif 462 463 /* Coefficients for 90Hz centre frequency */ 464 {BPF_Fs8000_Fc90_A0, /* 8kS/s coefficients */ 465 -BPF_Fs8000_Fc90_B2, 466 -BPF_Fs8000_Fc90_B1}, 467 {BPF_Fs11025_Fc90_A0, /* 11kS/s coefficients */ 468 -BPF_Fs11025_Fc90_B2, 469 -BPF_Fs11025_Fc90_B1}, 470 {BPF_Fs12000_Fc90_A0, /* 12kS/s coefficients */ 471 -BPF_Fs12000_Fc90_B2, 472 -BPF_Fs12000_Fc90_B1}, 473 {BPF_Fs16000_Fc90_A0, /* 16kS/s coefficients */ 474 -BPF_Fs16000_Fc90_B2, 475 -BPF_Fs16000_Fc90_B1}, 476 {BPF_Fs22050_Fc90_A0, /* 22kS/s coefficients */ 477 -BPF_Fs22050_Fc90_B2, 478 -BPF_Fs22050_Fc90_B1}, 479 {BPF_Fs24000_Fc90_A0, /* 24kS/s coefficients */ 480 -BPF_Fs24000_Fc90_B2, 481 -BPF_Fs24000_Fc90_B1}, 482 {BPF_Fs32000_Fc90_A0, /* 32kS/s coefficients */ 483 -BPF_Fs32000_Fc90_B2, 484 -BPF_Fs32000_Fc90_B1}, 485 {BPF_Fs44100_Fc90_A0, /* 44kS/s coefficients */ 486 -BPF_Fs44100_Fc90_B2, 487 -BPF_Fs44100_Fc90_B1}, 488 {BPF_Fs48000_Fc90_A0, /* 48kS/s coefficients */ 489 -BPF_Fs48000_Fc90_B2, 490 -BPF_Fs48000_Fc90_B1} 491 #ifdef HIGHER_FS 492 , 493 {BPF_Fs88200_Fc90_A0, /* 88kS/s coefficients */ 494 -BPF_Fs88200_Fc90_B2, 495 -BPF_Fs88200_Fc90_B1}, 496 {BPF_Fs96000_Fc90_A0, /* 96kS/s coefficients */ 497 -BPF_Fs96000_Fc90_B2, 498 -BPF_Fs96000_Fc90_B1}, 499 {BPF_Fs176400_Fc90_A0, /* 176kS/s coefficients */ 500 -BPF_Fs176400_Fc90_B2, 501 -BPF_Fs176400_Fc90_B1}, 502 {BPF_Fs192000_Fc90_A0, /* 192kS/s coefficients */ 503 -BPF_Fs192000_Fc90_B2, 504 -BPF_Fs192000_Fc90_B1} 505 #endif 506 507 508 }; 509 510 511 /************************************************************************************/ 512 /* */ 513 /* AGC constant tables */ 514 /* */ 515 /************************************************************************************/ 516 517 /* Attack time (signal too large) */ 518 #ifndef BUILD_FLOAT 519 const LVM_INT16 LVDBE_AGC_ATTACK_Table[] = { 520 #else /*BUILD_FLOAT*/ 521 const LVM_FLOAT LVDBE_AGC_ATTACK_Table[] = { 522 #endif /*BUILD_FLOAT*/ 523 AGC_ATTACK_Fs8000, 524 AGC_ATTACK_Fs11025, 525 AGC_ATTACK_Fs12000, 526 AGC_ATTACK_Fs16000, 527 AGC_ATTACK_Fs22050, 528 AGC_ATTACK_Fs24000, 529 AGC_ATTACK_Fs32000, 530 AGC_ATTACK_Fs44100, 531 AGC_ATTACK_Fs48000 532 #ifdef HIGHER_FS 533 ,AGC_ATTACK_Fs88200 534 ,AGC_ATTACK_Fs96000 535 ,AGC_ATTACK_Fs176400 536 ,AGC_ATTACK_Fs192000 537 #endif 538 539 }; 540 541 /* Decay time (signal too small) */ 542 #ifndef BUILD_FLOAT 543 const LVM_INT16 LVDBE_AGC_DECAY_Table[] = { 544 #else /*BUILD_FLOAT*/ 545 const LVM_FLOAT LVDBE_AGC_DECAY_Table[] = { 546 #endif /*BUILD_FLOAT*/ 547 AGC_DECAY_Fs8000, 548 AGC_DECAY_Fs11025, 549 AGC_DECAY_Fs12000, 550 AGC_DECAY_Fs16000, 551 AGC_DECAY_Fs22050, 552 AGC_DECAY_Fs24000, 553 AGC_DECAY_Fs32000, 554 AGC_DECAY_Fs44100, 555 AGC_DECAY_Fs48000 556 #ifdef HIGHER_FS 557 ,AGC_DECAY_Fs88200 558 ,AGC_DECAY_FS96000 559 ,AGC_DECAY_Fs176400 560 ,AGC_DECAY_FS192000 561 #endif 562 563 }; 564 565 /* Gain for use without the high pass filter */ 566 #ifndef BUILD_FLOAT 567 const LVM_INT32 LVDBE_AGC_GAIN_Table[] = { 568 #else /*BUILD_FLOAT*/ 569 const LVM_FLOAT LVDBE_AGC_GAIN_Table[] = { 570 #endif /*BUILD_FLOAT*/ 571 AGC_GAIN_0dB, 572 AGC_GAIN_1dB, 573 AGC_GAIN_2dB, 574 AGC_GAIN_3dB, 575 AGC_GAIN_4dB, 576 AGC_GAIN_5dB, 577 AGC_GAIN_6dB, 578 AGC_GAIN_7dB, 579 AGC_GAIN_8dB, 580 AGC_GAIN_9dB, 581 AGC_GAIN_10dB, 582 AGC_GAIN_11dB, 583 AGC_GAIN_12dB, 584 AGC_GAIN_13dB, 585 AGC_GAIN_14dB, 586 AGC_GAIN_15dB}; 587 588 /* Gain for use with the high pass filter */ 589 #ifndef BUILD_FLOAT 590 const LVM_INT32 LVDBE_AGC_HPFGAIN_Table[] = { 591 #else /*BUILD_FLOAT*/ 592 const LVM_FLOAT LVDBE_AGC_HPFGAIN_Table[] = { 593 #endif /*BUILD_FLOAT*/ 594 AGC_HPFGAIN_0dB, 595 AGC_HPFGAIN_1dB, 596 AGC_HPFGAIN_2dB, 597 AGC_HPFGAIN_3dB, 598 AGC_HPFGAIN_4dB, 599 AGC_HPFGAIN_5dB, 600 AGC_HPFGAIN_6dB, 601 AGC_HPFGAIN_7dB, 602 AGC_HPFGAIN_8dB, 603 AGC_HPFGAIN_9dB, 604 AGC_HPFGAIN_10dB, 605 AGC_HPFGAIN_11dB, 606 AGC_HPFGAIN_12dB, 607 AGC_HPFGAIN_13dB, 608 AGC_HPFGAIN_14dB, 609 AGC_HPFGAIN_15dB}; 610 611 612 /************************************************************************************/ 613 /* */ 614 /* Volume control gain and time constant tables */ 615 /* */ 616 /************************************************************************************/ 617 618 /* dB to linear conversion table */ 619 #ifndef BUILD_FLOAT 620 const LVM_INT16 LVDBE_VolumeTable[] = { 621 0x4000, /* -6dB */ 622 0x47FB, /* -5dB */ 623 0x50C3, /* -4dB */ 624 0x5A9E, /* -3dB */ 625 0x65AD, /* -2dB */ 626 0x7215, /* -1dB */ 627 0x7FFF}; /* 0dB */ 628 #else /*BUILD_FLOAT*/ 629 const LVM_FLOAT LVDBE_VolumeTable[] = { 630 0.500000f, /* -6dB */ 631 0.562341f, /* -5dB */ 632 0.630957f, /* -4dB */ 633 0.707946f, /* -3dB */ 634 0.794328f, /* -2dB */ 635 0.891251f, /* -1dB */ 636 1.000000f}; /* 0dB */ 637 #endif /*BUILD_FLOAT*/ 638 639 #ifndef BUILD_FLOAT 640 const LVM_INT16 LVDBE_VolumeTCTable[] = { 641 #else /*BUILD_FLOAT*/ 642 const LVM_FLOAT LVDBE_VolumeTCTable[] = { 643 #endif /*BUILD_FLOAT*/ 644 VOL_TC_Fs8000, 645 VOL_TC_Fs11025, 646 VOL_TC_Fs12000, 647 VOL_TC_Fs16000, 648 VOL_TC_Fs22050, 649 VOL_TC_Fs24000, 650 VOL_TC_Fs32000, 651 VOL_TC_Fs44100, 652 VOL_TC_Fs48000 653 #ifdef HIGHER_FS 654 ,VOL_TC_Fs88200 655 ,VOL_TC_Fs96000 656 ,VOL_TC_Fs176400 657 ,VOL_TC_Fs192000 658 #endif 659 }; 660 661 662 663 const LVM_INT16 LVDBE_MixerTCTable[] = { 664 665 MIX_TC_Fs8000, 666 MIX_TC_Fs11025, 667 MIX_TC_Fs12000, 668 MIX_TC_Fs16000, 669 MIX_TC_Fs22050, 670 MIX_TC_Fs24000, 671 MIX_TC_Fs32000, 672 MIX_TC_Fs44100, 673 MIX_TC_Fs48000 674 #ifdef HIGHER_FS 675 ,MIX_TC_Fs88200 676 ,MIX_TC_Fs96000 677 ,MIX_TC_Fs176400 678 ,MIX_TC_Fs192000 679 #endif 680 681 }; 682