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