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_Fs96000_Fc55_A2, /* 96kS/s coefficients */ 92 HPF_Fs96000_Fc55_A1, 93 HPF_Fs96000_Fc55_A0, 94 -HPF_Fs96000_Fc55_B2, 95 -HPF_Fs96000_Fc55_B1}, 96 {HPF_Fs192000_Fc55_A2, /* 192kS/s coefficients */ 97 HPF_Fs192000_Fc55_A1, 98 HPF_Fs192000_Fc55_A0, 99 -HPF_Fs192000_Fc55_B2, 100 -HPF_Fs192000_Fc55_B1}, 101 #endif 102 103 /* Coefficients for 66Hz centre frequency */ 104 {HPF_Fs8000_Fc66_A2, /* 8kS/s coefficients */ 105 HPF_Fs8000_Fc66_A1, 106 HPF_Fs8000_Fc66_A0, 107 -HPF_Fs8000_Fc66_B2, 108 -HPF_Fs8000_Fc66_B1}, 109 {HPF_Fs11025_Fc66_A2, /* 11kS/s coefficients */ 110 HPF_Fs11025_Fc66_A1, 111 HPF_Fs11025_Fc66_A0, 112 -HPF_Fs11025_Fc66_B2, 113 -HPF_Fs11025_Fc66_B1}, 114 {HPF_Fs12000_Fc66_A2, /* 12kS/s coefficients */ 115 HPF_Fs12000_Fc66_A1, 116 HPF_Fs12000_Fc66_A0, 117 -HPF_Fs12000_Fc66_B2, 118 -HPF_Fs12000_Fc66_B1}, 119 {HPF_Fs16000_Fc66_A2, /* 16kS/s coefficients */ 120 HPF_Fs16000_Fc66_A1, 121 HPF_Fs16000_Fc66_A0, 122 -HPF_Fs16000_Fc66_B2, 123 -HPF_Fs16000_Fc66_B1}, 124 {HPF_Fs22050_Fc66_A2, /* 22kS/s coefficients */ 125 HPF_Fs22050_Fc66_A1, 126 HPF_Fs22050_Fc66_A0, 127 -HPF_Fs22050_Fc66_B2, 128 -HPF_Fs22050_Fc66_B1}, 129 {HPF_Fs24000_Fc66_A2, /* 24kS/s coefficients */ 130 HPF_Fs24000_Fc66_A1, 131 HPF_Fs24000_Fc66_A0, 132 -HPF_Fs24000_Fc66_B2, 133 -HPF_Fs24000_Fc66_B1}, 134 {HPF_Fs32000_Fc66_A2, /* 32kS/s coefficients */ 135 HPF_Fs32000_Fc66_A1, 136 HPF_Fs32000_Fc66_A0, 137 -HPF_Fs32000_Fc66_B2, 138 -HPF_Fs32000_Fc66_B1}, 139 {HPF_Fs44100_Fc66_A2, /* 44kS/s coefficients */ 140 HPF_Fs44100_Fc66_A1, 141 HPF_Fs44100_Fc66_A0, 142 -HPF_Fs44100_Fc66_B2, 143 -HPF_Fs44100_Fc66_B1}, 144 {HPF_Fs48000_Fc66_A2, /* 48kS/s coefficients */ 145 HPF_Fs48000_Fc66_A1, 146 HPF_Fs48000_Fc66_A0, 147 -HPF_Fs48000_Fc66_B2, 148 -HPF_Fs48000_Fc66_B1}, 149 #ifdef HIGHER_FS 150 {HPF_Fs96000_Fc66_A2, /* 96kS/s coefficients */ 151 HPF_Fs96000_Fc66_A1, 152 HPF_Fs96000_Fc66_A0, 153 -HPF_Fs96000_Fc66_B2, 154 -HPF_Fs96000_Fc66_B1}, 155 {HPF_Fs192000_Fc66_A2, /* 192kS/s coefficients */ 156 HPF_Fs192000_Fc66_A1, 157 HPF_Fs192000_Fc66_A0, 158 -HPF_Fs192000_Fc66_B2, 159 -HPF_Fs192000_Fc66_B1}, 160 #endif 161 162 163 /* Coefficients for 78Hz centre frequency */ 164 {HPF_Fs8000_Fc78_A2, /* 8kS/s coefficients */ 165 HPF_Fs8000_Fc78_A1, 166 HPF_Fs8000_Fc78_A0, 167 -HPF_Fs8000_Fc78_B2, 168 -HPF_Fs8000_Fc78_B1}, 169 {HPF_Fs11025_Fc78_A2, /* 11kS/s coefficients */ 170 HPF_Fs11025_Fc78_A1, 171 HPF_Fs11025_Fc78_A0, 172 -HPF_Fs11025_Fc78_B2, 173 -HPF_Fs11025_Fc78_B1}, 174 {HPF_Fs12000_Fc78_A2, /* 12kS/s coefficients */ 175 HPF_Fs12000_Fc78_A1, 176 HPF_Fs12000_Fc78_A0, 177 -HPF_Fs12000_Fc78_B2, 178 -HPF_Fs12000_Fc78_B1}, 179 {HPF_Fs16000_Fc78_A2, /* 16kS/s coefficients */ 180 HPF_Fs16000_Fc78_A1, 181 HPF_Fs16000_Fc78_A0, 182 -HPF_Fs16000_Fc78_B2, 183 -HPF_Fs16000_Fc78_B1}, 184 {HPF_Fs22050_Fc78_A2, /* 22kS/s coefficients */ 185 HPF_Fs22050_Fc78_A1, 186 HPF_Fs22050_Fc78_A0, 187 -HPF_Fs22050_Fc78_B2, 188 -HPF_Fs22050_Fc78_B1}, 189 {HPF_Fs24000_Fc78_A2, /* 24kS/s coefficients */ 190 HPF_Fs24000_Fc78_A1, 191 HPF_Fs24000_Fc78_A0, 192 -HPF_Fs24000_Fc78_B2, 193 -HPF_Fs24000_Fc78_B1}, 194 {HPF_Fs32000_Fc78_A2, /* 32kS/s coefficients */ 195 HPF_Fs32000_Fc78_A1, 196 HPF_Fs32000_Fc78_A0, 197 -HPF_Fs32000_Fc78_B2, 198 -HPF_Fs32000_Fc78_B1}, 199 {HPF_Fs44100_Fc78_A2, /* 44kS/s coefficients */ 200 HPF_Fs44100_Fc78_A1, 201 HPF_Fs44100_Fc78_A0, 202 -HPF_Fs44100_Fc78_B2, 203 -HPF_Fs44100_Fc78_B1}, 204 {HPF_Fs48000_Fc78_A2, /* 48kS/s coefficients */ 205 HPF_Fs48000_Fc78_A1, 206 HPF_Fs48000_Fc78_A0, 207 -HPF_Fs48000_Fc78_B2, 208 -HPF_Fs48000_Fc78_B1}, 209 #ifdef HIGHER_FS 210 {HPF_Fs96000_Fc78_A2, /* 96kS/s coefficients */ 211 HPF_Fs96000_Fc78_A1, 212 HPF_Fs96000_Fc78_A0, 213 -HPF_Fs96000_Fc78_B2, 214 -HPF_Fs96000_Fc78_B1}, 215 {HPF_Fs192000_Fc78_A2, /* 192kS/s coefficients */ 216 HPF_Fs192000_Fc78_A1, 217 HPF_Fs192000_Fc78_A0, 218 -HPF_Fs192000_Fc78_B2, 219 -HPF_Fs192000_Fc78_B1}, 220 #endif 221 222 223 /* Coefficients for 90Hz centre frequency */ 224 {HPF_Fs8000_Fc90_A2, /* 8kS/s coefficients */ 225 HPF_Fs8000_Fc90_A1, 226 HPF_Fs8000_Fc90_A0, 227 -HPF_Fs8000_Fc90_B2, 228 -HPF_Fs8000_Fc90_B1}, 229 {HPF_Fs11025_Fc90_A2, /* 11kS/s coefficients */ 230 HPF_Fs11025_Fc90_A1, 231 HPF_Fs11025_Fc90_A0, 232 -HPF_Fs11025_Fc90_B2, 233 -HPF_Fs11025_Fc90_B1}, 234 {HPF_Fs12000_Fc90_A2, /* 12kS/s coefficients */ 235 HPF_Fs12000_Fc90_A1, 236 HPF_Fs12000_Fc90_A0, 237 -HPF_Fs12000_Fc90_B2, 238 -HPF_Fs12000_Fc90_B1}, 239 {HPF_Fs16000_Fc90_A2, /* 16kS/s coefficients */ 240 HPF_Fs16000_Fc90_A1, 241 HPF_Fs16000_Fc90_A0, 242 -HPF_Fs16000_Fc90_B2, 243 -HPF_Fs16000_Fc90_B1}, 244 {HPF_Fs22050_Fc90_A2, /* 22kS/s coefficients */ 245 HPF_Fs22050_Fc90_A1, 246 HPF_Fs22050_Fc90_A0, 247 -HPF_Fs22050_Fc90_B2, 248 -HPF_Fs22050_Fc90_B1}, 249 {HPF_Fs24000_Fc90_A2, /* 24kS/s coefficients */ 250 HPF_Fs24000_Fc90_A1, 251 HPF_Fs24000_Fc90_A0, 252 -HPF_Fs24000_Fc90_B2, 253 -HPF_Fs24000_Fc90_B1}, 254 {HPF_Fs32000_Fc90_A2, /* 32kS/s coefficients */ 255 HPF_Fs32000_Fc90_A1, 256 HPF_Fs32000_Fc90_A0, 257 -HPF_Fs32000_Fc90_B2, 258 -HPF_Fs32000_Fc90_B1}, 259 {HPF_Fs44100_Fc90_A2, /* 44kS/s coefficients */ 260 HPF_Fs44100_Fc90_A1, 261 HPF_Fs44100_Fc90_A0, 262 -HPF_Fs44100_Fc90_B2, 263 -HPF_Fs44100_Fc90_B1}, 264 {HPF_Fs48000_Fc90_A2, /* 48kS/s coefficients */ 265 HPF_Fs48000_Fc90_A1, 266 HPF_Fs48000_Fc90_A0, 267 -HPF_Fs48000_Fc90_B2, 268 -HPF_Fs48000_Fc90_B1} 269 270 #ifdef HIGHER_FS 271 , 272 {HPF_Fs96000_Fc90_A2, /* 96kS/s coefficients */ 273 HPF_Fs96000_Fc90_A1, 274 HPF_Fs96000_Fc90_A0, 275 -HPF_Fs96000_Fc90_B2, 276 -HPF_Fs96000_Fc90_B1}, 277 {HPF_Fs192000_Fc90_A2, /* 192kS/s coefficients */ 278 HPF_Fs192000_Fc90_A1, 279 HPF_Fs192000_Fc90_A0, 280 -HPF_Fs192000_Fc90_B2, 281 -HPF_Fs192000_Fc90_B1} 282 #endif 283 284 }; 285 286 /* 287 * Band Pass Filter coefficient table 288 */ 289 #ifndef BUILD_FLOAT 290 const BP_C32_Coefs_t LVDBE_BPF_Table[] = { 291 #else /*BUILD_FLOAT*/ 292 const BP_FLOAT_Coefs_t LVDBE_BPF_Table[] = { 293 #endif /*BUILD_FLOAT*/ 294 /* Coefficients for 55Hz centre frequency */ 295 {BPF_Fs8000_Fc55_A0, /* 8kS/s coefficients */ 296 -BPF_Fs8000_Fc55_B2, 297 -BPF_Fs8000_Fc55_B1}, 298 {BPF_Fs11025_Fc55_A0, /* 11kS/s coefficients */ 299 -BPF_Fs11025_Fc55_B2, 300 -BPF_Fs11025_Fc55_B1}, 301 {BPF_Fs12000_Fc55_A0, /* 12kS/s coefficients */ 302 -BPF_Fs12000_Fc55_B2, 303 -BPF_Fs12000_Fc55_B1}, 304 {BPF_Fs16000_Fc55_A0, /* 16kS/s coefficients */ 305 -BPF_Fs16000_Fc55_B2, 306 -BPF_Fs16000_Fc55_B1}, 307 {BPF_Fs22050_Fc55_A0, /* 22kS/s coefficients */ 308 -BPF_Fs22050_Fc55_B2, 309 -BPF_Fs22050_Fc55_B1}, 310 {BPF_Fs24000_Fc55_A0, /* 24kS/s coefficients */ 311 -BPF_Fs24000_Fc55_B2, 312 -BPF_Fs24000_Fc55_B1}, 313 {BPF_Fs32000_Fc55_A0, /* 32kS/s coefficients */ 314 -BPF_Fs32000_Fc55_B2, 315 -BPF_Fs32000_Fc55_B1}, 316 {BPF_Fs44100_Fc55_A0, /* 44kS/s coefficients */ 317 -BPF_Fs44100_Fc55_B2, 318 -BPF_Fs44100_Fc55_B1}, 319 {BPF_Fs48000_Fc55_A0, /* 48kS/s coefficients */ 320 -BPF_Fs48000_Fc55_B2, 321 -BPF_Fs48000_Fc55_B1}, 322 #ifdef HIGHER_FS 323 {BPF_Fs96000_Fc55_A0, /* 96kS/s coefficients */ 324 -BPF_Fs96000_Fc55_B2, 325 -BPF_Fs96000_Fc55_B1}, 326 {BPF_Fs192000_Fc55_A0, /* 192kS/s coefficients */ 327 -BPF_Fs192000_Fc55_B2, 328 -BPF_Fs192000_Fc55_B1}, 329 #endif 330 331 /* Coefficients for 66Hz centre frequency */ 332 {BPF_Fs8000_Fc66_A0, /* 8kS/s coefficients */ 333 -BPF_Fs8000_Fc66_B2, 334 -BPF_Fs8000_Fc66_B1}, 335 {BPF_Fs11025_Fc66_A0, /* 11kS/s coefficients */ 336 -BPF_Fs11025_Fc66_B2, 337 -BPF_Fs11025_Fc66_B1}, 338 {BPF_Fs12000_Fc66_A0, /* 12kS/s coefficients */ 339 -BPF_Fs12000_Fc66_B2, 340 -BPF_Fs12000_Fc66_B1}, 341 {BPF_Fs16000_Fc66_A0, /* 16kS/s coefficients */ 342 -BPF_Fs16000_Fc66_B2, 343 -BPF_Fs16000_Fc66_B1}, 344 {BPF_Fs22050_Fc66_A0, /* 22kS/s coefficients */ 345 -BPF_Fs22050_Fc66_B2, 346 -BPF_Fs22050_Fc66_B1}, 347 {BPF_Fs24000_Fc66_A0, /* 24kS/s coefficients */ 348 -BPF_Fs24000_Fc66_B2, 349 -BPF_Fs24000_Fc66_B1}, 350 {BPF_Fs32000_Fc66_A0, /* 32kS/s coefficients */ 351 -BPF_Fs32000_Fc66_B2, 352 -BPF_Fs32000_Fc66_B1}, 353 {BPF_Fs44100_Fc66_A0, /* 44kS/s coefficients */ 354 -BPF_Fs44100_Fc66_B2, 355 -BPF_Fs44100_Fc66_B1}, 356 {BPF_Fs48000_Fc66_A0, /* 48kS/s coefficients */ 357 -BPF_Fs48000_Fc66_B2, 358 -BPF_Fs48000_Fc66_B1}, 359 #ifdef HIGHER_FS 360 {BPF_Fs96000_Fc66_A0, /* 96kS/s coefficients */ 361 -BPF_Fs96000_Fc66_B2, 362 -BPF_Fs96000_Fc66_B1}, 363 {BPF_Fs192000_Fc66_A0, /* 192kS/s coefficients */ 364 -BPF_Fs192000_Fc66_B2, 365 -BPF_Fs192000_Fc66_B1}, 366 #endif 367 368 /* Coefficients for 78Hz centre frequency */ 369 {BPF_Fs8000_Fc78_A0, /* 8kS/s coefficients */ 370 -BPF_Fs8000_Fc78_B2, 371 -BPF_Fs8000_Fc78_B1}, 372 {BPF_Fs11025_Fc78_A0, /* 11kS/s coefficients */ 373 -BPF_Fs11025_Fc78_B2, 374 -BPF_Fs11025_Fc78_B1}, 375 {BPF_Fs12000_Fc78_A0, /* 12kS/s coefficients */ 376 -BPF_Fs12000_Fc78_B2, 377 -BPF_Fs12000_Fc78_B1}, 378 {BPF_Fs16000_Fc78_A0, /* 16kS/s coefficients */ 379 -BPF_Fs16000_Fc78_B2, 380 -BPF_Fs16000_Fc78_B1}, 381 {BPF_Fs22050_Fc78_A0, /* 22kS/s coefficients */ 382 -BPF_Fs22050_Fc78_B2, 383 -BPF_Fs22050_Fc78_B1}, 384 {BPF_Fs24000_Fc78_A0, /* 24kS/s coefficients */ 385 -BPF_Fs24000_Fc78_B2, 386 -BPF_Fs24000_Fc78_B1}, 387 {BPF_Fs32000_Fc78_A0, /* 32kS/s coefficients */ 388 -BPF_Fs32000_Fc78_B2, 389 -BPF_Fs32000_Fc78_B1}, 390 {BPF_Fs44100_Fc78_A0, /* 44kS/s coefficients */ 391 -BPF_Fs44100_Fc78_B2, 392 -BPF_Fs44100_Fc78_B1}, 393 {BPF_Fs48000_Fc78_A0, /* 48kS/s coefficients */ 394 -BPF_Fs48000_Fc78_B2, 395 -BPF_Fs48000_Fc78_B1}, 396 #ifdef HIGHER_FS 397 {BPF_Fs96000_Fc78_A0, /* 96kS/s coefficients */ 398 -BPF_Fs96000_Fc78_B2, 399 -BPF_Fs96000_Fc78_B1}, 400 {BPF_Fs192000_Fc78_A0, /* 192kS/s coefficients */ 401 -BPF_Fs192000_Fc78_B2, 402 -BPF_Fs192000_Fc78_B1}, 403 #endif 404 405 /* Coefficients for 90Hz centre frequency */ 406 {BPF_Fs8000_Fc90_A0, /* 8kS/s coefficients */ 407 -BPF_Fs8000_Fc90_B2, 408 -BPF_Fs8000_Fc90_B1}, 409 {BPF_Fs11025_Fc90_A0, /* 11kS/s coefficients */ 410 -BPF_Fs11025_Fc90_B2, 411 -BPF_Fs11025_Fc90_B1}, 412 {BPF_Fs12000_Fc90_A0, /* 12kS/s coefficients */ 413 -BPF_Fs12000_Fc90_B2, 414 -BPF_Fs12000_Fc90_B1}, 415 {BPF_Fs16000_Fc90_A0, /* 16kS/s coefficients */ 416 -BPF_Fs16000_Fc90_B2, 417 -BPF_Fs16000_Fc90_B1}, 418 {BPF_Fs22050_Fc90_A0, /* 22kS/s coefficients */ 419 -BPF_Fs22050_Fc90_B2, 420 -BPF_Fs22050_Fc90_B1}, 421 {BPF_Fs24000_Fc90_A0, /* 24kS/s coefficients */ 422 -BPF_Fs24000_Fc90_B2, 423 -BPF_Fs24000_Fc90_B1}, 424 {BPF_Fs32000_Fc90_A0, /* 32kS/s coefficients */ 425 -BPF_Fs32000_Fc90_B2, 426 -BPF_Fs32000_Fc90_B1}, 427 {BPF_Fs44100_Fc90_A0, /* 44kS/s coefficients */ 428 -BPF_Fs44100_Fc90_B2, 429 -BPF_Fs44100_Fc90_B1}, 430 {BPF_Fs48000_Fc90_A0, /* 48kS/s coefficients */ 431 -BPF_Fs48000_Fc90_B2, 432 -BPF_Fs48000_Fc90_B1} 433 #ifdef HIGHER_FS 434 , 435 {BPF_Fs96000_Fc90_A0, /* 96kS/s coefficients */ 436 -BPF_Fs96000_Fc90_B2, 437 -BPF_Fs96000_Fc90_B1}, 438 {BPF_Fs192000_Fc90_A0, /* 192kS/s coefficients */ 439 -BPF_Fs192000_Fc90_B2, 440 -BPF_Fs192000_Fc90_B1} 441 #endif 442 443 444 }; 445 446 447 /************************************************************************************/ 448 /* */ 449 /* AGC constant tables */ 450 /* */ 451 /************************************************************************************/ 452 453 /* Attack time (signal too large) */ 454 #ifndef BUILD_FLOAT 455 const LVM_INT16 LVDBE_AGC_ATTACK_Table[] = { 456 #else /*BUILD_FLOAT*/ 457 const LVM_FLOAT LVDBE_AGC_ATTACK_Table[] = { 458 #endif /*BUILD_FLOAT*/ 459 AGC_ATTACK_Fs8000, 460 AGC_ATTACK_Fs11025, 461 AGC_ATTACK_Fs12000, 462 AGC_ATTACK_Fs16000, 463 AGC_ATTACK_Fs22050, 464 AGC_ATTACK_Fs24000, 465 AGC_ATTACK_Fs32000, 466 AGC_ATTACK_Fs44100, 467 AGC_ATTACK_Fs48000 468 #ifdef HIGHER_FS 469 ,AGC_ATTACK_Fs96000 470 ,AGC_ATTACK_Fs192000 471 #endif 472 473 }; 474 475 /* Decay time (signal too small) */ 476 #ifndef BUILD_FLOAT 477 const LVM_INT16 LVDBE_AGC_DECAY_Table[] = { 478 #else /*BUILD_FLOAT*/ 479 const LVM_FLOAT LVDBE_AGC_DECAY_Table[] = { 480 #endif /*BUILD_FLOAT*/ 481 AGC_DECAY_Fs8000, 482 AGC_DECAY_Fs11025, 483 AGC_DECAY_Fs12000, 484 AGC_DECAY_Fs16000, 485 AGC_DECAY_Fs22050, 486 AGC_DECAY_Fs24000, 487 AGC_DECAY_Fs32000, 488 AGC_DECAY_Fs44100, 489 AGC_DECAY_Fs48000 490 #ifdef HIGHER_FS 491 ,AGC_DECAY_FS96000 492 ,AGC_DECAY_FS192000 493 #endif 494 495 }; 496 497 /* Gain for use without the high pass filter */ 498 #ifndef BUILD_FLOAT 499 const LVM_INT32 LVDBE_AGC_GAIN_Table[] = { 500 #else /*BUILD_FLOAT*/ 501 const LVM_FLOAT LVDBE_AGC_GAIN_Table[] = { 502 #endif /*BUILD_FLOAT*/ 503 AGC_GAIN_0dB, 504 AGC_GAIN_1dB, 505 AGC_GAIN_2dB, 506 AGC_GAIN_3dB, 507 AGC_GAIN_4dB, 508 AGC_GAIN_5dB, 509 AGC_GAIN_6dB, 510 AGC_GAIN_7dB, 511 AGC_GAIN_8dB, 512 AGC_GAIN_9dB, 513 AGC_GAIN_10dB, 514 AGC_GAIN_11dB, 515 AGC_GAIN_12dB, 516 AGC_GAIN_13dB, 517 AGC_GAIN_14dB, 518 AGC_GAIN_15dB}; 519 520 /* Gain for use with the high pass filter */ 521 #ifndef BUILD_FLOAT 522 const LVM_INT32 LVDBE_AGC_HPFGAIN_Table[] = { 523 #else /*BUILD_FLOAT*/ 524 const LVM_FLOAT LVDBE_AGC_HPFGAIN_Table[] = { 525 #endif /*BUILD_FLOAT*/ 526 AGC_HPFGAIN_0dB, 527 AGC_HPFGAIN_1dB, 528 AGC_HPFGAIN_2dB, 529 AGC_HPFGAIN_3dB, 530 AGC_HPFGAIN_4dB, 531 AGC_HPFGAIN_5dB, 532 AGC_HPFGAIN_6dB, 533 AGC_HPFGAIN_7dB, 534 AGC_HPFGAIN_8dB, 535 AGC_HPFGAIN_9dB, 536 AGC_HPFGAIN_10dB, 537 AGC_HPFGAIN_11dB, 538 AGC_HPFGAIN_12dB, 539 AGC_HPFGAIN_13dB, 540 AGC_HPFGAIN_14dB, 541 AGC_HPFGAIN_15dB}; 542 543 544 /************************************************************************************/ 545 /* */ 546 /* Volume control gain and time constant tables */ 547 /* */ 548 /************************************************************************************/ 549 550 /* dB to linear conversion table */ 551 #ifndef BUILD_FLOAT 552 const LVM_INT16 LVDBE_VolumeTable[] = { 553 0x4000, /* -6dB */ 554 0x47FB, /* -5dB */ 555 0x50C3, /* -4dB */ 556 0x5A9E, /* -3dB */ 557 0x65AD, /* -2dB */ 558 0x7215, /* -1dB */ 559 0x7FFF}; /* 0dB */ 560 #else /*BUILD_FLOAT*/ 561 const LVM_FLOAT LVDBE_VolumeTable[] = { 562 0.500000f, /* -6dB */ 563 0.562341f, /* -5dB */ 564 0.630957f, /* -4dB */ 565 0.707946f, /* -3dB */ 566 0.794328f, /* -2dB */ 567 0.891251f, /* -1dB */ 568 1.000000f}; /* 0dB */ 569 #endif /*BUILD_FLOAT*/ 570 571 #ifndef BUILD_FLOAT 572 const LVM_INT16 LVDBE_VolumeTCTable[] = { 573 #else /*BUILD_FLOAT*/ 574 const LVM_FLOAT LVDBE_VolumeTCTable[] = { 575 #endif /*BUILD_FLOAT*/ 576 VOL_TC_Fs8000, 577 VOL_TC_Fs11025, 578 VOL_TC_Fs12000, 579 VOL_TC_Fs16000, 580 VOL_TC_Fs22050, 581 VOL_TC_Fs24000, 582 VOL_TC_Fs32000, 583 VOL_TC_Fs44100, 584 VOL_TC_Fs48000 585 #ifdef HIGHER_FS 586 ,VOL_TC_Fs96000 587 ,VOL_TC_Fs192000 588 #endif 589 }; 590 591 592 593 const LVM_INT16 LVDBE_MixerTCTable[] = { 594 595 MIX_TC_Fs8000, 596 MIX_TC_Fs11025, 597 MIX_TC_Fs12000, 598 MIX_TC_Fs16000, 599 MIX_TC_Fs22050, 600 MIX_TC_Fs24000, 601 MIX_TC_Fs32000, 602 MIX_TC_Fs44100, 603 MIX_TC_Fs48000 604 #ifdef HIGHER_FS 605 ,MIX_TC_Fs96000 606 ,MIX_TC_Fs192000 607 #endif 608 609 }; 610