1 /********************************************************************
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. *
8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
9 * by the XIPHOPHORUS Company http://www.xiph.org/ *
11 ********************************************************************
13 function: key psychoacoustic settings for 44.1/48kHz
14 last mod: $Id: psych_44.h,v 1.13 2002/03/30 01:56:59 xiphmont Exp $
16 ********************************************************************/
19 /* preecho trigger settings *****************************************/
21 static vorbis_info_psy_global _psy_global_44[5]={
23 {8, /* lines per eighth octave */
24 {20.f,14.f,10.f,10.f,10.f,10.f,10.f},
25 {-60.f,-30.f,-40.f,-40.f,-40.f,-40.f,-40.f}, 4,-75.f,
28 {8, /* lines per eighth octave */
29 {14.f,10.f,8.f,8.f,8.f,8.f,8.f},
30 {-40.f,-30.f,-25.f,-25.f,-25.f,-25.f,-25.f}, 4,-80.f,
33 {8, /* lines per eighth octave */
34 {12.f,8.f,8.f,8.f,8.f,8.f,8.f},
35 {-20.f,-20.f,-15.f,-15.f,-15.f,-15.f,-15.f}, 4,-80.f,
38 {8, /* lines per eighth octave */
39 {10.f,8.f,6.f,6.f,6.f,6.f,6.f},
40 {-20.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 2,-80.f,
43 {8, /* lines per eighth octave */
44 {10.f,6.f,6.f,6.f,6.f,6.f,6.f},
45 {-15.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 2,-85.f,
50 /* noise compander lookups * low, mid, high quality ****************/
52 static float _psy_compand_44_short[3][NOISE_COMPAND_LEVELS]={
55 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */
56 8.f, 9.f,10.f,11.f,12.f,13.f,14.f, 15.f, /* 15dB */
57 16.f,17.f,18.f,19.f,20.f,21.f,22.f, 23.f, /* 23dB */
58 24.f,25.f,26.f,27.f,28.f,29.f,30.f, 31.f, /* 31dB */
59 32.f,33.f,34.f,35.f,36.f,37.f,38.f, 39.f, /* 39dB */
63 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 6.f, /* 7dB */
64 7.f, 7.f, 7.f, 7.f, 6.f, 6.f, 6.f, 7.f, /* 15dB */
65 7.f, 8.f, 9.f,10.f,11.f,12.f,13.f, 14.f, /* 23dB */
66 15.f,16.f,17.f,17.f,17.f,18.f,18.f, 19.f, /* 31dB */
67 19.f,19.f,20.f,21.f,22.f,23.f,24.f, 25.f, /* 39dB */
71 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 5.f, 5.f, /* 7dB */
72 6.f, 6.f, 6.f, 5.f, 4.f, 4.f, 4.f, 4.f, /* 15dB */
73 4.f, 4.f, 5.f, 5.f, 5.f, 6.f, 6.f, 6.f, /* 23dB */
74 7.f, 7.f, 7.f, 8.f, 8.f, 8.f, 9.f, 10.f, /* 31dB */
75 11.f,12.f,13.f,14.f,15.f,16.f,17.f, 18.f, /* 39dB */
79 static float _psy_compand_44[3][NOISE_COMPAND_LEVELS]={
82 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */
83 8.f, 9.f,10.f,11.f,12.f,13.f,14.f, 15.f, /* 15dB */
84 16.f,17.f,18.f,19.f,20.f,21.f,22.f, 23.f, /* 23dB */
85 24.f,25.f,26.f,27.f,28.f,29.f,30.f, 31.f, /* 31dB */
86 32.f,33.f,34.f,35.f,36.f,37.f,38.f, 39.f, /* 39dB */
90 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */
91 8.f, 9.f,10.f,11.f,12.f,12.f,13.f, 13.f, /* 15dB */
92 13.f,14.f,14.f,14.f,15.f,15.f,15.f, 15.f, /* 23dB */
93 16.f,16.f,17.f,17.f,17.f,18.f,18.f, 19.f, /* 31dB */
94 19.f,19.f,20.f,21.f,22.f,23.f,24.f, 25.f, /* 39dB */
98 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */
99 8.f, 8.f, 7.f, 6.f, 5.f, 4.f, 4.f, 4.f, /* 15dB */
100 4.f, 4.f, 5.f, 5.f, 5.f, 6.f, 6.f, 6.f, /* 23dB */
101 7.f, 7.f, 7.f, 8.f, 8.f, 8.f, 9.f, 10.f, /* 31dB */
102 11.f,12.f,13.f,14.f,15.f,16.f,17.f, 18.f, /* 39dB */
106 /* tonal masking curve level adjustments *************************/
107 static vp_adjblock _vp_tonemask_adj_longblock[6]={
108 /* adjust for mode zero */
110 { 10, 10, 5, }, /*63*/
112 { 10, 10, 5, }, /* 125 */
114 { 10, 10, 5, }, /* 250 */
116 { 10, 10, 5, }, /* 500 */
118 { 10, 10, 5, }, /* 1000 */
121 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 2000 */
122 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
123 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 4000 */
124 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
125 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 8000 */
126 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
127 { 16, 16, 14, 12, 12, 15, 15, 15, 15, 15, 10}, /* 16000 */
130 /* adjust for mode two */
132 { 10, 10, 5, }, /*63*/
134 { 10, 10, 5, }, /* 125 */
136 { 10, 10, 5, }, /* 250 */
138 { 10, 10, 5, }, /* 500 */
140 { 10, 10, 5, }, /* 1000 */
145 { 10, 5, 5, }, /* 4000 */
147 { 10, 10, 7, 5, }, /* 8000 */
148 { 10, 10, 7, 7, 5, 5, 10, 10, 10, 5, },
149 { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */
152 /* adjust for mode four */
154 { 10, 5, 5, }, /*63*/
156 { 10, 5, 5, }, /* 125 */
158 { 10, 5, 5, }, /* 250 */
160 { 10, 5, 5, }, /* 500 */
162 { 10, 5, 5, }, /* 1000 */
169 { 10, 10, 7, 5, }, /* 8000 */
170 { 10, 10, 7, 5, 5, 5, 10, 10, 10, 5, },
171 { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */
174 /* adjust for mode six */
176 { 10, 5, 5, }, /*63*/
178 { 10, 5, 5, }, /* 125 */
180 { 10, 5, 5, }, /* 250 */
182 { 10, 5, 5, }, /* 500 */
184 { 10, 5, 5, }, /* 1000 */
191 { 10, 10, 7, 5, }, /* 8000 */
192 { 10, 10, 7, 5, 5, 5, 5, 5, 5, },
193 { 12, 10, 10, 5, 5, 5, 5, 5, 5, }, /* 16000 */
196 /* adjust for mode eight */
215 { 5, 5, 5, 5, 5, 5, 5, }, /* 16000 */
218 /* adjust for mode ten */
220 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
221 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
222 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
223 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
224 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
225 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
226 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
227 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
228 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*1000*/
229 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
230 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*2000*/
231 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
232 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*4000*/
233 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
234 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*8000*/
235 { 0, 0, 0, -5,-10,-10,-10,-15,-15,-15,-15},
236 { 0, 0, 0, 0, 0, -5, -5,-10,-15,-15,-15}, /*16000*/
240 static vp_adjblock _vp_tonemask_adj_otherblock[6]={
241 /* adjust for mode zero */
243 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*63*/
244 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
245 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*125*/
246 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
247 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*250*/
248 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
249 { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5}, /*500*/
250 { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5},
252 { 5, 5, 5, }, /*1000*/
255 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*2000*/
256 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
257 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*4000*/
258 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
259 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*8000*/
260 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
261 { 16, 16, 14, 12, 12, 15, 15, 15, 15, 15, 10}, /*16000*/
264 /* adjust for mode two */
266 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*63*/
267 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
268 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*125*/
269 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
270 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*250*/
271 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
272 { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5}, /*500*/
273 { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5},
275 { 10, 10, 5, }, /* 1000 */
282 { 10, 10, 7, 5, }, /* 8000 */
283 { 10, 10, 7, 7, 5, 5, 10, 10, 10, 5, },
284 { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */
287 /* adjust for mode four */
289 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
290 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
291 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
292 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
293 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
294 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
295 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
296 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
298 { 5, 5, 5, }, /* 1000 */
305 { 10, 10, 7, 5, }, /* 8000 */
306 { 10, 10, 7, 5, 5, 5, 10, 10, 10, 5, },
307 { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */
310 /* adjust for mode six */
312 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
313 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
314 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
315 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
316 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
317 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
318 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
319 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
321 { 5, 5, 5, }, /* 1000 */
328 { 10, 10, 7, 5, }, /* 8000 */
329 { 10, 10, 7, 5, 5, 5, 5, 5, 5, },
330 { 12, 10, 10, 5, 5, 5, 5, 5, 5, }, /* 16000 */
333 /* adjust for mode eight */
335 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*63*/
336 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20},
337 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*125*/
338 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20},
339 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*250*/
340 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20},
341 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*500*/
342 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20},
344 { 0,-10,-10,-15,-15,-15,-15,-15,-15,-15,-15},
345 { 0,-10,-10,-15,-15,-15,-15,-15,-15,-15,-15},
353 { 5, 5, 5, 5, 5, 5, 5, }, /* 16000 */
356 /* adjust for mode ten */
358 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*63*/
359 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20},
360 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*125*/
361 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20},
362 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*250*/
363 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20},
364 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*500*/
365 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20},
366 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*1000*/
367 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20},
368 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*2000*/
369 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
370 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*4000*/
371 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
372 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*8000*/
373 { 0, 0, 0, -5,-10,-10,-10,-15,-15,-15,-15},
374 { 0, 0, 0, 0, 0, -5, -5,-10,-15,-15,-15}, /*16000*/
378 static vp_adjblock _vp_peakguard[6]={
381 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*63*/
382 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
383 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*125*/
384 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
385 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*250*/
386 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
387 {-10,-10,-10,-10,-16,-16,-18,-20,-22,-24,-24},/*500*/
388 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},
389 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},/*1000*/
390 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},
391 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},/*2000*/
392 {-10,-10,-10,-12,-16,-16,-16,-20,-22,-24,-24},
393 {-10,-10,-10,-12,-16,-16,-16,-20,-22,-24,-24},/*4000*/
394 {-10,-10,-10,-12,-12,-14,-16,-18,-22,-24,-24},
395 {-10,-10,-10,-10,-10,-14,-16,-18,-22,-24,-24},/*8000*/
396 {-10,-10,-10,-10,-10,-14,-16,-18,-22,-24,-24},
397 {-10,-10,-10,-10,-10,-12,-16,-18,-22,-24,-24},/*16000*/
401 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*63*/
402 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
403 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*125*/
404 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
405 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*250*/
406 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
407 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*500*/
408 {-10,-10,-10,-10,-14,-14,-14,-20,-26,-30,-30},
409 {-10,-10,-10,-10,-14,-14,-14,-20,-22,-30,-30},/*1000*/
410 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},
411 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},/*2000*/
412 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},
413 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},/*4000*/
414 {-10,-10,-10,-10,-10,-11,-12,-13,-22,-30,-30},
415 {-10,-10,-10,-10,-10,-11,-12,-13,-22,-30,-30},/*8000*/
416 {-10,-10,-10,-10,-10,-10,-10,-11,-22,-30,-30},
417 {-10,-10,-10,-10,-10,-10,-10,-10,-20,-30,-30},/*16000*/
421 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*63*/
422 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
423 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*125*/
424 {-14,-20,-20,-20,-20,-20,-20,-30,-32,-32,-40},
425 {-14,-20,-20,-20,-20,-20,-20,-30,-32,-32,-40},/*250*/
426 {-14,-20,-20,-20,-20,-20,-20,-24,-32,-32,-40},
427 {-14,-20,-20,-20,-20,-20,-20,-24,-32,-32,-40},/*500*/
428 {-10,-10,-10,-10,-14,-16,-20,-24,-26,-32,-40},
429 {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},/*1000*/
430 {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},
431 {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},/*2000*/
432 {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},
433 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-32,-40},/*4000*/
434 {-10,-10,-10,-10,-10,-11,-12,-13,-22,-32,-40},
435 {-10,-10,-10,-10,-10,-11,-12,-13,-22,-32,-40},/*8000*/
436 {-10,-10,-10,-10,-10,-10,-10,-11,-22,-32,-40},
437 {-10,-10,-10,-10,-10,-10,-10,-10,-20,-32,-40},/*16000*/
441 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*63*/
442 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
443 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*125*/
444 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
445 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*250*/
446 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
447 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*500*/
448 {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},
449 {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},/*1000*/
450 {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},
451 {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},/*2000*/
452 {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},
453 {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},/*4000*/
454 {-14,-14,-14,-20,-22,-22,-24,-24,-26,-32,-40},
455 {-14,-14,-14,-18,-20,-20,-24,-24,-24,-32,-40},/*8000*/
456 {-14,-14,-14,-18,-20,-20,-24,-24,-24,-32,-40},
457 {-14,-14,-14,-18,-20,-20,-22,-24,-24,-32,-40},/*16000*/
461 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*63*/
462 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*88*/
463 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*125*/
464 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*170*/
465 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*250*/
466 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*350*/
467 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*500*/
468 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*700*/
469 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*1000*/
470 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*1400*/
471 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*2000*/
472 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*2800*/
473 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*4000*/
474 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*5600*/
475 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*8000*/
476 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*11500*/
477 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*16600*/
481 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*63*/
482 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*88*/
483 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*125*/
484 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*170*/
485 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*250*/
486 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*350*/
487 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*500*/
488 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*700*/
489 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*1000*/
490 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*1400*/
491 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*2000*/
492 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*2800*/
493 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*4000*/
494 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*5600*/
495 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*8000*/
496 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*11500*/
497 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*16600*/
501 static int _psy_noisebias_long[11][17]={
502 /*63 125 250 500 1k 2k 4k 8k 16k*/
503 {-20,-20,-18,-18,-18,-16,-14, -8, -6, -2, 0, 2, 3, 3, 4, 4, 10},
504 {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -2, -2, 1, 1, 2, 2, 4},
505 {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -3, -3, -1, -1, 0, 1, 2},
506 {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -3, -3, -1, -1, 0, 1, 2},
507 {-20,-20,-20,-20,-20,-20,-20,-10, -6, -3, -4, -4, -2, -1, 0, 0, 2},
509 {-20,-20,-20,-20,-20,-20,-20,-18,-10, -4, -6, -6, -3, -2, -2, -2, 0},
510 {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -8, -8, -7, -7, -6, -6, -4},
511 {-24,-24,-24,-24,-24,-24,-24,-18,-14,-14,-16,-16,-14,-12,-10,-10, -8},
513 {-24,-24,-24,-24,-24,-24,-24,-20,-20,-20,-20,-20,-16,-16,-14,-14,-10},
514 {-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-24,-24,-24,-24},
515 {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-46},
518 static int _psy_noisebias_impulse[11][17]={
519 /*63 125 250 500 1k 2k 4k 8k 16k*/
520 {-20,-20,-20,-20,-20,-18,-14,-10,-10, -2, 2, 2, 2, 2, 2, 3, 6},
521 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -2, -2, -2, 2},
522 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
523 {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, -2},
524 {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2},
526 {-30,-30,-30,-30,-30,-30,-24,-20,-10,-12,-14,-14,-10, -9, -8, -6, -4},
527 {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10, -8},
528 {-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14},
530 {-34,-34,-34,-34,-30,-30,-30,-30,-30,-26,-26,-26,-26,-22,-20,-20,-16},
531 {-40,-40,-40,-40,-40,-40,-40,-40,-40,-36,-36,-36,-36,-36,-36,-30,-30},
532 {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50},
535 static int _psy_noisebias_other[11][17]={
536 /*63 125 250 500 1k 2k 4k 8k 16k*/
537 {-20,-20,-20,-20,-20,-18,-14,-10, -6, -2, 2, 2, 3, 3, 4, 4, 10},
538 {-26,-26,-26,-26,-26,-22,-20,-14,-10, -2, -2, -2, 1, 1, 2, 2, 4},
539 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -2, -3, -3, -1, -1, 0, 1, 2},
540 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -1, -1, 0, 1, 2},
541 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -1, 0, 0, 2},
543 {-30,-30,-30,-30,-30,-30,-24,-20,-10, -4, -6, -6, -3, -2, -2, -2, 0},
544 {-34,-34,-34,-34,-30,-30,-24,-20,-14, -8, -8, -8, -7, -7, -6, -6, -4},
545 {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10, -8},
547 {-34,-34,-34,-34,-30,-30,-30,-20,-20,-20,-20,-20,-16,-16,-14,-14,-10},
548 {-40,-40,-40,-40,-40,-40,-40,-30,-30,-30,-30,-30,-30,-24,-24,-24,-24},
549 {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-46},
552 static int _psy_noiseguards_short[33]={
565 static int _psy_noiseguards_long[33]={
579 static double _psy_tone_masteratt[11]={
580 3.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
583 static double _psy_tone_masterguard[11]={
584 -18.,-24.,-24.,-24.,-26.,-40.,-40.,-40.,-45.,-45.,-45.,
587 static double _psy_tone_suppress[11]={
588 -10.,-20.,-20.,-20.,-30.,-30.,-40.,-40.,-45.,-45.,-45.,
591 static double _psy_tone_0dB[11]={
592 95.,95.,95.,95.,95.,105.,105.,105.,105.,105.,105.,
595 static double _psy_noise_suppress[11]={
596 -0.,-24.,-24.,-24.,-24.,-30.,-40.,-40.,-45.,-45.,-45.,
599 static int _psy_ehmer_bandlimit[11]={
600 0,0,0,0,4,4,30,30,30,30,30,
603 static vorbis_info_psy _psy_info_template={
605 /* tonemask att,guard,suppr,curves peakattp,curvelimitp,peaksettings*/
606 0.f, -40.f,-40.f, {{{0.}}}, 1, 0, {{{0.}}},
608 /*noisemaskp,supp, low/high window, low/hi guard, minimum */
609 1, -0.f, .5f, .5f, 0,0,0,
610 {-1},{-1},105.f,{{-1,-1,{{-1,-1,-1,-1}}}}
613 /* ath ****************/
615 static double _psy_ath_floater[11]={
616 -100.,-100.,-100.,-100.,-100.,-100.,-105.,-105.,-105.,-110.,-120.,
619 static double _psy_ath_abs[11]={
620 -110.,-110.,-120.,-140.,-140.,-140.,-140.,-140.,-140.,-140.,-150.,
623 static float ATH_Bark_dB[][27]={
625 0.f, 15.f, 15.f, 15.f, 11.f, 10.f, 8.f, 7.f, 7.f, 7.f,
626 6.f, 2.f, 0.f, 0.f, -2.f, -5.f, -6.f, -6.f, -4.f, 4.f,
627 14.f, 20.f, 19.f, 17.f, 30.f, 60.f, 70.f,
630 0.f, 15.f, 15.f, 15.f, 11.f, 10.f, 8.f, 7.f, 7.f, 7.f,
631 6.f, 2.f, 0.f, 0.f, -2.f, -5.f, -6.f, -6.f, -4.f, 0.f,
632 2.f, 6.f, 5.f, 5.f, 15.f, 30.f, 50.f,
635 0.f, 15.f, 15.f, 15.f, 11.f, 10.f, 8.f, 7.f, 7.f, 7.f,
636 6.f, 2.f, 0.f, 0.f, -3.f, -5.f, -6.f, -6.f, -4.5f, -4.f,
637 2.f, 6.f, 5.f, 5.f, 15.f, 20.f, 40.f,
641 /* stereo ****************/
642 static int _psy_stereo_point_dB_44[11]={3, 3, 2, 2, 1, 0, 0, 0, 0, 0, 0};
643 static double _psy_stereo_point_kHz_44[2][11]={
644 {4., 6., 6., 6., 10., 6., 6., 4., 4., 4., 4.},
645 {6., 6., 6., 10., 10., 6., 6., 4., 4., 4., 4.}
648 /* lowpass **************/
649 static double _psy_lowpass_44[11]={
650 15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999.
653 /* management noise offset */
655 static double _bm_max_noise_offset[11]={
656 1.,2.,3.,3.,4.,4.,4.,4.,4.,4.,4.