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