Initial branch merge toward rc3
[platform/upstream/libvorbis.git] / lib / modes / psych_44.h
1 /********************************************************************
2  *                                                                  *
3  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
4  * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
5  * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
6  * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
7  *                                                                  *
8  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
9  * by the XIPHOPHORUS Company http://www.xiph.org/                  *
10  *                                                                  *
11  ********************************************************************
12
13  function: key psychoacoustic settings for 44.1/48kHz
14  last mod: $Id: psych_44.h,v 1.2 2001/12/12 09:45:55 xiphmont Exp $
15
16  ********************************************************************/
17
18
19 /* preecho trigger settings *****************************************/
20
21 static vorbis_info_psy_global _psy_global_44[3]={
22
23   {8,   /* lines per eighth octave */
24    //{990.f,990.f,990.f,990.f}, {-990.f,-990.f,-990.f,-990.f}, -90.f,
25    //{0.f,0.f,0.f,0.f}, {-0.f,-0.f,-0.f,-0.f}, -90.f,
26    {30.f,30.f,30.f,34.f}, {-990.f,-990.f,-990.f,-990.f}, -90.f,
27    -6.f, 0,
28   },
29   {8,   /* lines per eighth octave */
30    // {990.f,990.f,990.f,990.f}, {-990.f,-990.f,-990.f,-990.f}, -90.f,
31    {26.f,26.f,26.f,30.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f,
32    -6.f, 0,
33   },
34   {8,   /* lines per eighth octave */
35    {26.f,26.f,26.f,30.f}, {-26.f,-26.f,-26.f,-30.f}, -90.f,
36    -6.f, 0,
37   }
38 };
39
40 /* noise compander lookups * low, mid, high quality ****************/
41
42 static float _psy_compand_44_short[3][NOISE_COMPAND_LEVELS]={
43   /* sub-mode Z */
44   {
45     0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  7.f,     /* 7dB */
46     8.f, 9.f,10.f,11.f,12.f,13.f,14.f, 15.f,     /* 15dB */
47     16.f,17.f,18.f,19.f,20.f,21.f,22.f, 23.f,     /* 23dB */
48     24.f,25.f,26.f,27.f,28.f,29.f,30.f, 31.f,     /* 31dB */
49     32.f,33.f,34.f,35.f,36.f,37.f,38.f, 39.f,     /* 39dB */
50   },
51   /* mode_Z nominal */
52   {
53      0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  6.f,     /* 7dB */
54      7.f, 7.f, 7.f, 7.f, 6.f, 6.f, 6.f,  7.f,     /* 15dB */
55      7.f, 8.f, 9.f,10.f,11.f,12.f,13.f, 14.f,     /* 23dB */
56     15.f,16.f,17.f,17.f,17.f,18.f,18.f, 19.f,     /* 31dB */
57     19.f,19.f,20.f,21.f,22.f,23.f,24.f, 25.f,     /* 39dB */
58   },
59   /* mode A */
60   {
61     0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 5.f,  5.f,     /* 7dB */
62     6.f, 6.f, 6.f, 5.f, 4.f, 4.f, 4.f,  4.f,     /* 15dB */
63     4.f, 4.f, 5.f, 5.f, 5.f, 6.f, 6.f,  6.f,     /* 23dB */
64     7.f, 7.f, 7.f, 8.f, 8.f, 8.f, 9.f, 10.f,     /* 31dB */
65     11.f,12.f,13.f,14.f,15.f,16.f,17.f, 18.f,     /* 39dB */
66   }
67 };
68
69 static float _psy_compand_44[3][NOISE_COMPAND_LEVELS]={
70   /* sub-mode Z */
71   {
72      0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  7.f,     /* 7dB */
73      8.f, 9.f,10.f,11.f,12.f,13.f,14.f, 15.f,     /* 15dB */
74     16.f,17.f,18.f,19.f,20.f,21.f,22.f, 23.f,     /* 23dB */
75     24.f,25.f,26.f,27.f,28.f,29.f,30.f, 31.f,     /* 31dB */
76     32.f,33.f,34.f,35.f,36.f,37.f,38.f, 39.f,     /* 39dB */
77   },
78   /* mode_Z nominal */
79   {
80     0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  7.f,     /* 7dB */
81     8.f, 9.f,10.f,11.f,12.f,12.f,13.f, 13.f,     /* 15dB */
82     13.f,14.f,14.f,14.f,15.f,15.f,15.f, 15.f,     /* 23dB */
83     16.f,16.f,17.f,17.f,17.f,18.f,18.f, 19.f,     /* 31dB */
84     19.f,19.f,20.f,21.f,22.f,23.f,24.f, 25.f,     /* 39dB */
85   },
86   /* mode A */
87   {
88     0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f,  7.f,     /* 7dB */
89     8.f, 8.f, 7.f, 6.f, 5.f, 4.f, 4.f,  4.f,     /* 15dB */
90     4.f, 4.f, 5.f, 5.f, 5.f, 6.f, 6.f,  6.f,     /* 23dB */
91     7.f, 7.f, 7.f, 8.f, 8.f, 8.f, 9.f, 10.f,     /* 31dB */
92     11.f,12.f,13.f,14.f,15.f,16.f,17.f, 18.f,     /* 39dB */
93   }
94 };
95
96 /* tonal masking curve level adjustments *************************/
97 static vp_adjblock _vp_tonemask_adj_longblock[6]={
98   /* adjust for mode zero */
99   {{
100     { 10, 10,  5,                               }, /*63*/
101     { 10, 10,  5,                               }, 
102     { 10, 10,  5,                               }, /* 125 */
103     { 10, 10,  5,                               }, 
104     { 10, 10,  5,                               }, /* 250 */
105     { 10, 10,  5,                               }, 
106     { 10, 10,  5,                               }, /* 500 */
107     { 10, 10,  5,                               }, 
108     { 10, 10,  5,                               }, /* 1000 */
109     { 10, 10,  5,                               }, 
110
111     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 2000 */
112     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
113     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 4000 */
114     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
115     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 8000 */
116     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, 
117     { 16, 16, 14, 12, 12, 15, 15, 15, 15, 15, 10}, /* 16000 */
118   }},
119
120   /* adjust for mode two */
121   {{
122     { 10, 10,  5,                               }, /*63*/
123     { 10, 10,  5,                               }, 
124     { 10, 10,  5,                               }, /* 125 */
125     { 10, 10,  5,                               }, 
126     { 10, 10,  5,                               }, /* 250 */
127     { 10, 10,  5,                               }, 
128     { 10, 10,  5,                               }, /* 500 */
129     { 10, 10,  5,                               }, 
130     { 10, 10,  5,                               }, /* 1000 */
131     { 10, 10,  5,                               }, 
132
133     {  0,                                       }, /* 2000 */
134     {  0,                                       },
135     { 10,  5,  5,                               }, /* 4000 */
136     { 10, 10,  5,                               },
137     { 10, 10,  7,  5,                           }, /* 8000 */
138     { 10, 10,  7,  7,  5,  5, 10, 10, 10,  5,   }, 
139     { 16, 16, 14,  8,  8,  8, 10, 10, 10,  5,   }, /* 16000 */
140   }},
141
142   /* adjust for mode four */
143   {{
144     { 10,  5,  5,                               }, /*63*/
145     { 10,  5,  5,                               }, 
146     { 10,  5,  5,                               }, /* 125 */
147     { 10,  5,  5,                               }, 
148     { 10,  5,  5,                               }, /* 250 */
149     { 10,  5,  5,                               }, 
150     { 10,  5,  5,                               }, /* 500 */
151     { 10,  5,  5,                               }, 
152     { 10,  5,  5,                               }, /* 1000 */
153     { 10,  5,  5,                               }, 
154
155     {  0,                                       }, /* 2000 */
156     {  0,                                       },
157     {  0,                                       }, /* 4000 */
158     { 10,  5,  5,                               },
159     { 10, 10,  7,  5,                           }, /* 8000 */
160     { 10, 10,  7,  5,  5,  5, 10, 10, 10,  5,   }, 
161     { 16, 16, 14,  8,  8,  8, 10, 10, 10,  5,   }, /* 16000 */
162   }},
163
164   /* adjust for mode six */
165   {{
166     { 10,  5,  5,                               }, /*63*/
167     { 10,  5,  5,                               }, 
168     { 10,  5,  5,                               }, /* 125 */
169     { 10,  5,  5,                               }, 
170     { 10,  5,  5,                               }, /* 250 */
171     { 10,  5,  5,                               }, 
172     { 10,  5,  5,                               }, /* 500 */
173     { 10,  5,  5,                               }, 
174     { 10,  5,  5,                               }, /* 1000 */
175     { 10,  5,  5,                               }, 
176
177     {  0,                                       }, /* 2000 */
178     {  0,                                       },
179     {  0,                                       }, /* 4000 */
180     { 10,  5,  5,                               },
181     { 10, 10,  7,  5,                           }, /* 8000 */
182     { 10, 10,  7,  5,  5,  5,  5,  5,  5,       }, 
183     { 12, 10, 10,  5,  5,  5,  5,  5,  5,       }, /* 16000 */
184   }},
185
186   /* adjust for mode eight */
187   {{
188     {  0,                                       }, /*63*/
189     {  0,                                       }, 
190     {  0,                                       }, /* 125 */
191     {  0,                                       }, 
192     {  0,                                       }, /* 250 */
193     {  0,                                       }, 
194     {  0,                                       }, /* 500 */
195     {  0,                                       }, 
196     {  0,                                       }, /* 1000 */
197     {  0,                                       }, 
198
199     {  0,                                       }, /* 2000 */
200     {  0,                                       },
201     {  0,                                       }, /* 4000 */
202     {  0,                                       },
203     {  0,                                       }, /* 8000 */
204     {  0,                                       }, 
205     {  5,  5,  5,  5,  5,  5,  5,               }, /* 16000 */
206   }},
207
208   /* adjust for mode ten */
209   {{
210     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
211     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
212     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
213     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
214     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
215     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15},
216     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
217     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
218     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*1000*/
219     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
220     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*2000*/
221     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
222     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*4000*/
223     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
224     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*8000*/
225     {  0,  0,  0, -5,-10,-10,-10,-15,-15,-15,-15}, 
226     {  0,  0,  0,  0,  0, -5, -5,-10,-15,-15,-15}, /*16000*/
227   }},
228 };
229
230 static vp_adjblock _vp_tonemask_adj_otherblock[6]={
231   /* adjust for mode zero */
232   {{
233     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*63*/
234     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
235     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*125*/
236     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
237     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*250*/
238     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
239     {  5,  5,  5,  0, -5, -5, -5, -5, -5, -5, -5}, /*500*/
240     {  5,  5,  5,  0, -5, -5, -5, -5, -5, -5, -5},
241
242     {  5,  5,  5,                               }, /*1000*/
243     {  5,  5,  5,                               }, 
244
245     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*2000*/
246     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, 
247     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*4000*/
248     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, 
249     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*8000*/
250     { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, 
251     { 16, 16, 14, 12, 12, 15, 15, 15, 15, 15, 10}, /*16000*/
252   }},
253
254   /* adjust for mode two */
255   {{
256     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*63*/
257     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
258     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*125*/
259     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
260     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, /*250*/
261     {  0,  0,  0,  0,-10,-10,-10,-10,-10,-10,-10}, 
262     {  5,  5,  5,  0, -5, -5, -5, -5, -5, -5, -5}, /*500*/
263     {  5,  5,  5,  0, -5, -5, -5, -5, -5, -5, -5},
264
265     { 10, 10,  5,                               }, /* 1000 */
266     { 10, 10,  5,                               }, 
267
268     {  0,                                       }, /* 2000 */
269     {  0,                                       },
270     {  0,                                       }, /* 4000 */
271     { 10,  5,  5,                               },
272     { 10, 10,  7,  5,                           }, /* 8000 */
273     { 10, 10,  7,  7,  5,  5, 10, 10, 10,  5,   }, 
274     { 16, 16, 14,  8,  8,  8, 10, 10, 10,  5,   }, /* 16000 */
275   }},
276
277   /* adjust for mode four */
278   {{
279     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
280     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
281     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
282     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
283     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
284     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
285     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
286     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
287
288     {  5,  5,  5,                               }, /* 1000 */
289     {  5,  5,  5,                               }, 
290
291     {  0,                                       }, /* 2000 */
292     {  0,                                       },
293     {  0,                                       }, /* 4000 */
294     { 10,  5,  5,                               },
295     { 10, 10,  7,  5,                           }, /* 8000 */
296     { 10, 10,  7,  5,  5,  5, 10, 10, 10,  5,   }, 
297     { 16, 16, 14,  8,  8,  8, 10, 10, 10,  5,   }, /* 16000 */
298   }},
299
300   /* adjust for mode six */
301   {{
302     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
303     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
304     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
305     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
306     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
307     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
308     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
309     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
310
311     {  5,  5,  5,                               }, /* 1000 */
312     {  5,  5,  5,                               }, 
313
314     {  0,                                       }, /* 2000 */
315     {  0,                                       },
316     {  0,                                       }, /* 4000 */
317     { 10,  5,  5,                               },
318     { 10, 10,  7,  5,                           }, /* 8000 */
319     { 10, 10,  7,  5,  5,  5,  5,  5,  5,       }, 
320     { 12, 10, 10,  5,  5,  5,  5,  5,  5,       }, /* 16000 */
321   }},
322
323   /* adjust for mode eight */
324   {{
325     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*63*/
326     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, 
327     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*125*/
328     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, 
329     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*250*/
330     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, 
331     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*500*/
332     {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, 
333
334     {  0,-10,-10,-15,-15,-15,-15,-15,-15,-15,-15}, 
335     {  0,-10,-10,-15,-15,-15,-15,-15,-15,-15,-15}, 
336
337     {  0,                                       }, /* 2000 */
338     {  0,                                       },
339     {  0,                                       }, /* 4000 */
340     {  0,                                       },
341     {  0,                                       }, /* 8000 */
342     {  0,                                       }, 
343     {  5,  5,  5,  5,  5,  5,  5,               }, /* 16000 */
344   }},
345
346   /* adjust for mode ten */
347   {{
348     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, /*63*/
349     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, 
350     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, /*125*/
351     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, 
352     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, /*250*/
353     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20},
354     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, /*500*/
355     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, 
356     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, /*1000*/
357     {  0,  0,  0, -5,-15,-20,-20,-20,-20,-20,-20}, 
358     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*2000*/
359     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
360     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*4000*/
361     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, 
362     {  0,  0,  0, -5,-15,-15,-15,-15,-15,-15,-15}, /*8000*/
363     {  0,  0,  0, -5,-10,-10,-10,-15,-15,-15,-15}, 
364     {  0,  0,  0,  0,  0, -5, -5,-10,-15,-15,-15}, /*16000*/
365   }},
366 };
367
368 static vp_adjblock _vp_peakguard[6]={
369   /* zero */
370   {{
371     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*63*/
372     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
373     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*125*/
374     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
375     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*250*/
376     {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
377     {-10,-10,-10,-10,-16,-16,-18,-20,-22,-24,-24},/*500*/
378     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},
379     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},/*1000*/
380     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},
381     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},/*2000*/
382     {-10,-10,-10,-12,-16,-16,-16,-20,-22,-24,-24},
383     {-10,-10,-10,-12,-16,-16,-16,-20,-22,-24,-24},/*4000*/
384     {-10,-10,-10,-12,-12,-14,-16,-18,-22,-24,-24},
385     {-10,-10,-10,-10,-10,-14,-16,-18,-22,-24,-24},/*8000*/
386     {-10,-10,-10,-10,-10,-14,-16,-18,-22,-24,-24},
387     {-10,-10,-10,-10,-10,-12,-16,-18,-22,-24,-24},/*16000*/
388   }},
389   /* two */
390   {{
391     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*63*/
392     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
393     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*125*/
394     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
395     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*250*/
396     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
397     {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*500*/
398     {-10,-10,-10,-10,-14,-14,-14,-20,-26,-30,-30},
399     {-10,-10,-10,-10,-14,-14,-14,-20,-22,-30,-30},/*1000*/
400     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},
401     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},/*2000*/
402     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},
403     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},/*4000*/
404     {-10,-10,-10,-10,-10,-11,-12,-13,-22,-30,-30},
405     {-10,-10,-10,-10,-10,-11,-12,-13,-22,-30,-30},/*8000*/
406     {-10,-10,-10,-10,-10,-10,-10,-11,-22,-30,-30},
407     {-10,-10,-10,-10,-10,-10,-10,-10,-20,-30,-30},/*16000*/
408   }},
409   /* four */
410   {{
411     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*63*/
412     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
413     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*125*/
414     {-14,-20,-20,-20,-20,-20,-20,-30,-32,-32,-40},
415     {-14,-20,-20,-20,-20,-20,-20,-30,-32,-32,-40},/*250*/
416     {-14,-20,-20,-20,-20,-20,-20,-24,-32,-32,-40},
417     {-14,-20,-20,-20,-20,-20,-20,-24,-32,-32,-40},/*500*/
418     {-10,-10,-10,-10,-14,-16,-20,-24,-26,-32,-40},
419     {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},/*1000*/
420     {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},
421     {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},/*2000*/
422     {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},
423     {-10,-10,-10,-10,-14,-14,-16,-20,-22,-32,-40},/*4000*/
424     {-10,-10,-10,-10,-10,-11,-12,-13,-22,-32,-40},
425     {-10,-10,-10,-10,-10,-11,-12,-13,-22,-32,-40},/*8000*/
426     {-10,-10,-10,-10,-10,-10,-10,-11,-22,-32,-40},
427     {-10,-10,-10,-10,-10,-10,-10,-10,-20,-32,-40},/*16000*/
428   }},
429   /* six */
430   {{
431     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*63*/
432     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
433     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*125*/
434     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
435     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*250*/
436     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
437     {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*500*/
438     {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},
439     {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},/*1000*/
440     {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},
441     {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},/*2000*/
442     {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},
443     {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},/*4000*/
444     {-14,-14,-14,-20,-22,-22,-24,-24,-26,-32,-40},
445     {-14,-14,-14,-18,-20,-20,-24,-24,-24,-32,-40},/*8000*/
446     {-14,-14,-14,-18,-20,-20,-24,-24,-24,-32,-40},
447     {-14,-14,-14,-18,-20,-20,-22,-24,-24,-32,-40},/*16000*/
448   }},
449   /* eight */
450   {{
451     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*63*/
452     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*88*/
453     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*125*/
454     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*170*/
455     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*250*/
456     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*350*/
457     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*500*/
458     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*700*/
459     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*1000*/
460     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*1400*/
461     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*2000*/
462     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*2800*/
463     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*4000*/
464     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*5600*/
465     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*8000*/
466     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*11500*/
467     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*16600*/
468   }},
469   /* ten */
470   {{
471     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*63*/
472     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*88*/
473     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*125*/
474     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*170*/
475     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*250*/
476     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*350*/
477     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*500*/
478     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*700*/
479     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*1000*/
480     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*1400*/
481     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*2000*/
482     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*2800*/
483     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*4000*/
484     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*5600*/
485     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*8000*/
486     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*11500*/
487     {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*16600*/
488   }}
489 };
490
491 static int _psy_noisebias_long[11][17]={
492   /*63     125     250     500      1k       2k      4k      8k     16k*/
493   {-20,-20,-18,-18,-18,-16,-14, -8, -6, -2,  0,  2,  3,  3,  4,  4, 10},
494   {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -2, -2,  1,  1,  2,  2,  4},
495   {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -3, -3, -1, -1,  0,  1,  2},
496   {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -3, -3, -1, -1,  0,  1,  2},
497   {-20,-20,-20,-20,-20,-20,-20,-10, -6, -3, -4, -4, -2, -1,  0,  0,  2},
498
499   {-20,-20,-20,-20,-20,-20,-20,-14,-10, -6, -6, -6, -3,  0,  0,  1,  2},
500   {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -8, -6, -3, -2, -2,  0,  1},
501   {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -8, -6, -3, -2, -2, -1,  0},
502   {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -8, -8, -4, -3, -3, -2, -2},
503   {-28,-28,-28,-28,-28,-26,-24,-18,-14,-10,-10,-10, -8, -7, -7, -6, -6},
504   {-50,-50,-50,-50,-50,-50,-50,-48,-44,-40,-40,-40,-40,-40,-40,-40,-40},
505 };
506
507 static int _psy_noisebias_impulse[11][17]={
508   /*63     125     250     500      1k       2k      4k      8k     16k*/
509   {-20,-20,-20,-20,-20,-18,-14,-10,-10, -2,  0,  0,  0,  0,  0,  3,  6},
510   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -2, -2, -2,  2},
511   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2,  0},
512   {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, -2},
513   {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -2, -2},
514
515   {-30,-30,-30,-30,-26,-24,-20,-14,-10, -6, -6, -6, -3,  0,  0,  1,  2},
516   {-34,-34,-34,-34,-30,-26,-24,-18,-14, -8, -8, -6, -3, -2, -2,  0,  1},
517   {-34,-34,-34,-34,-30,-26,-24,-18,-14, -8, -8, -6, -3, -2, -2, -1,  0},
518   {-34,-34,-34,-34,-30,-26,-24,-18,-14, -8, -8, -8, -4, -3, -3, -2, -2},
519   {-34,-34,-34,-34,-30,-26,-24,-18,-14,-10,-10,-10, -8, -7, -7, -6, -6},
520   {-50,-50,-50,-50,-50,-50,-50,-48,-44,-40,-40,-40,-40,-40,-40,-40,-40},
521 };
522
523 static int _psy_noisebias_other[11][17]={
524   /*63     125     250     500      1k       2k      4k      8k     16k*/
525   {-20,-20,-20,-20,-20,-18,-14,-10, -6, -2,  2,  2,  3,  3,  4,  4, 10},
526   {-26,-26,-26,-26,-26,-22,-20,-14,-10, -2, -2, -2,  1,  1,  2,  2,  4},
527   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -2, -3, -3, -1, -1,  0,  1,  2},
528   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -1, -1,  0,  1,  2},
529   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -1,  0,  0,  2},
530
531   {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -3,  0,  0,  1,  2},
532   {-34,-34,-34,-34,-30,-26,-24,-18,-14, -8, -8, -6, -3, -2, -2,  0,  1},
533   {-34,-34,-34,-34,-30,-26,-24,-18,-14, -8, -8, -6, -3, -2, -2, -1,  0},
534   {-34,-34,-34,-34,-30,-26,-24,-18,-14, -8, -8, -8, -4, -3, -3, -2, -2},
535   {-34,-34,-34,-34,-30,-26,-24,-18,-14,-10,-10,-10, -8, -7, -7, -6, -6},
536   {-50,-50,-50,-50,-50,-50,-50,-48,-44,-40,-40,-40,-40,-40,-40,-40,-40},
537 };
538
539 static int _psy_noiseguards_short[33]={
540   2,2,-1,
541   4,4,-1,
542   4,4,15,
543   4,4,15,
544   4,4,15,
545   4,4,15,
546   4,4,15,
547   4,4,15,
548   4,4,15,
549   4,4,15,
550   4,4,15,
551 };
552 static int _psy_noiseguards_long[33]={
553   10,10,100,
554   10,10,100,
555   10,10,100,
556   10,10,100,
557   10,10,100,
558   10,10,100,
559   10,10,100,
560   10,10,100,
561   10,10,100,
562   10,10,100,
563   10,10,100,
564 };
565
566 static vorbis_info_psy _psy_settings[11]={
567   /* zero */
568   { /* ATH style              ,float,min */ 
569     {-1},-100.,-110.,
570
571     /* tonemask att,guard,suppr,curves  peakattp,curvelimitp,peaksettings*/
572     0.f,            -18.f,-10.f, {{{0.}}},         1,          0,        {{{0.}}},
573     
574     /*noisemaskp,supp, low/high window, low/hi guard, minimum */
575     1,          -0.f,         .5f, .5f,         0,0,0,
576     {-1},{-1},95.f,{{-1}}
577   },
578   /* one */
579   { 
580     {-1},-100.,-110.,
581     0.f,-24.f,-20.f, {{{0.}}},  1,0,{{{0.}}},
582     1,-24.f,.5f,.5f,0,0,0,
583     {-1},{-1},95.f,{{-1}}
584   },
585   /* two */
586   { 
587     {-1},-100.,-120.,
588     0.f,-24.f,-20.f, {{{0.}}},  1,0,{{{0.}}},
589     1,-24.f,.5f,.5f,0,0,0,
590     {-1},{-1},95.f,{{-1}}
591   },
592   /* three */
593   { 
594     {-1},-100.,-140.,
595     0.f,-24.f,-20.f, {{{0.}}},  1,0,{{{0.}}},
596     1,-24.f,.5f,.5f,0,0,0,
597     {-1},{-1},95.f,{{-1}}
598   },
599   /* four */
600   { 
601     {-1},-100.,-140.,
602     0.f,-26.f,-30.f, {{{0.}}},  1,4,{{{0.}}},
603     1,-24.f,.5f,.5f,0,0,0,
604     {-1},{-1},95.f,{{-1}}
605   },
606   /* five */
607   { 
608     {-1},-100.,-140.,
609     0.f,-40.f,-30.f, {{{0.}}},  1,4,{{{0.}}},
610     1,-30.f,.5f,.5f,0,0,0,
611     {-1},{-1},105.f,{{-1}}
612   },
613   /* six */
614   { 
615     {-1},-100.,-140.,
616     0.f,-40.f,-40.f, {{{0.}}},  1,30,{{{0.}}},
617     1,-40.f,.5f,.5f,0,0,0,
618     {-1},{-1},105.f,{{-1}}
619   },
620   /* seven */
621   { 
622     {-1},-100.,-140.,
623     0.f,-40.f,-40.f, {{{0.}}},  1,30,{{{0.}}},
624     1,-40.f,.5f,.5f,0,0,0,
625     {-1},{-1},105.f,{{-1}}
626   },
627   /* eight */
628   { 
629     {-1},-100.,-140.,
630     0.f,-45.f,-45.f, {{{0.}}},  1,30,{{{0.}}},
631     1,-45.f,.5f,.5f,0,0,0,
632     {-1},{-1},105.f,{{-1}}
633   },
634   /* nine */
635   { 
636     {-1},-110.,-140.,
637     0.f,-45.f,-45.f, {{{0.}}},  1,30,{{{0.}}},
638     1,-45.f,.5f,.5f,0,0,0,
639     {-1},{-1},105.f,{{-1}}
640   },
641   /* ten */
642   { 
643     {-1},-120.,-150.,
644     0.f,-45.f,-45.f, {{{0.}}},  1,30,{{{0.}}},
645     1,-45.f,.5f,.5f,0,0,0,
646     {-1},{-1},105.f,{{-1}}
647   }
648 };
649
650 /* ath ****************/
651
652 static float ATH_Bark_dB[][27]={
653   {
654      0.f,  15.f,  15.f,   15.f,   11.f,       10.f,   8.f,  7.f,   7.f,  7.f,
655      6.f,   2.f,   0.f,    0.f,   -2.f,       -5.f,  -6.f, -6.f,  -4.f,  4.f,
656     14.f,  20.f,  19.f,   17.f,   30.f,       60.f,  60.f,
657   },
658   {
659     0.f,  15.f,  15.f,   15.f,   11.f,       10.f,   8.f,  7.f,   7.f,  7.f,
660     6.f,   2.f,   0.f,    0.f,   -2.f,       -5.f,  -6.f, -6.f,  -4.f,  0.f,
661     2.f,   6.f,   5.f,    5.f,   15.f,       25.f,  35.f,
662   },
663   {
664     0.f,  15.f,  15.f,   15.f,   11.f,       10.f,   8.f,  7.f,   7.f,  7.f,
665     6.f,   2.f,   0.f,    0.f,   -3.f,       -5.f,  -6.f, -6.f,-4.5f, 0.f,
666     2.f,   6.f,   5.f,    5.f,   15.f,       15.f,  15.f,
667   }
668 };