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.11 2002/03/24 21:24:01 xiphmont Exp $
16 ********************************************************************/
19 /* preecho trigger settings *****************************************/
21 static vorbis_info_psy_global _psy_global_44[5]={
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 {16.f,14.f,12.f,12.f}, {-990.f,-990.f,-990.f,-990.f}, -80.f,
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 {14.f,12.f,11.f,11.f}, {-990.f,-990.f,-990.f,-990.f}, -85.f,
34 {8, /* lines per eighth octave */
35 {14.f,12.f,10.f,10.f}, {-90.f,-90.f,-90.f,-90.f}, -85.f,
38 {8, /* lines per eighth octave */
39 {12.f,10.f,8.f,8.f}, {-40.f,-40.f,-40.f,-40.f}, -90.f,
42 {8, /* lines per eighth octave */
43 {12.f,10.f,8.f,8.f}, {-14.f,-14.f,-12.f,-12.f}, -90.f,
48 /* noise compander lookups * low, mid, high quality ****************/
50 static float _psy_compand_44_short[3][NOISE_COMPAND_LEVELS]={
53 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */
54 8.f, 9.f,10.f,11.f,12.f,13.f,14.f, 15.f, /* 15dB */
55 16.f,17.f,18.f,19.f,20.f,21.f,22.f, 23.f, /* 23dB */
56 24.f,25.f,26.f,27.f,28.f,29.f,30.f, 31.f, /* 31dB */
57 32.f,33.f,34.f,35.f,36.f,37.f,38.f, 39.f, /* 39dB */
61 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 6.f, /* 7dB */
62 7.f, 7.f, 7.f, 7.f, 6.f, 6.f, 6.f, 7.f, /* 15dB */
63 7.f, 8.f, 9.f,10.f,11.f,12.f,13.f, 14.f, /* 23dB */
64 15.f,16.f,17.f,17.f,17.f,18.f,18.f, 19.f, /* 31dB */
65 19.f,19.f,20.f,21.f,22.f,23.f,24.f, 25.f, /* 39dB */
69 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 5.f, 5.f, /* 7dB */
70 6.f, 6.f, 6.f, 5.f, 4.f, 4.f, 4.f, 4.f, /* 15dB */
71 4.f, 4.f, 5.f, 5.f, 5.f, 6.f, 6.f, 6.f, /* 23dB */
72 7.f, 7.f, 7.f, 8.f, 8.f, 8.f, 9.f, 10.f, /* 31dB */
73 11.f,12.f,13.f,14.f,15.f,16.f,17.f, 18.f, /* 39dB */
77 static float _psy_compand_44[3][NOISE_COMPAND_LEVELS]={
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,13.f,14.f, 15.f, /* 15dB */
82 16.f,17.f,18.f,19.f,20.f,21.f,22.f, 23.f, /* 23dB */
83 24.f,25.f,26.f,27.f,28.f,29.f,30.f, 31.f, /* 31dB */
84 32.f,33.f,34.f,35.f,36.f,37.f,38.f, 39.f, /* 39dB */
88 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */
89 8.f, 9.f,10.f,11.f,12.f,12.f,13.f, 13.f, /* 15dB */
90 13.f,14.f,14.f,14.f,15.f,15.f,15.f, 15.f, /* 23dB */
91 16.f,16.f,17.f,17.f,17.f,18.f,18.f, 19.f, /* 31dB */
92 19.f,19.f,20.f,21.f,22.f,23.f,24.f, 25.f, /* 39dB */
96 0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, /* 7dB */
97 8.f, 8.f, 7.f, 6.f, 5.f, 4.f, 4.f, 4.f, /* 15dB */
98 4.f, 4.f, 5.f, 5.f, 5.f, 6.f, 6.f, 6.f, /* 23dB */
99 7.f, 7.f, 7.f, 8.f, 8.f, 8.f, 9.f, 10.f, /* 31dB */
100 11.f,12.f,13.f,14.f,15.f,16.f,17.f, 18.f, /* 39dB */
104 /* tonal masking curve level adjustments *************************/
105 static vp_adjblock _vp_tonemask_adj_longblock[6]={
106 /* adjust for mode zero */
108 { 10, 10, 5, }, /*63*/
110 { 10, 10, 5, }, /* 125 */
112 { 10, 10, 5, }, /* 250 */
114 { 10, 10, 5, }, /* 500 */
116 { 10, 10, 5, }, /* 1000 */
119 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 2000 */
120 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
121 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 4000 */
122 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
123 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /* 8000 */
124 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
125 { 16, 16, 14, 12, 12, 15, 15, 15, 15, 15, 10}, /* 16000 */
128 /* adjust for mode two */
130 { 10, 10, 5, }, /*63*/
132 { 10, 10, 5, }, /* 125 */
134 { 10, 10, 5, }, /* 250 */
136 { 10, 10, 5, }, /* 500 */
138 { 10, 10, 5, }, /* 1000 */
143 { 10, 5, 5, }, /* 4000 */
145 { 10, 10, 7, 5, }, /* 8000 */
146 { 10, 10, 7, 7, 5, 5, 10, 10, 10, 5, },
147 { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */
150 /* adjust for mode four */
152 { 10, 5, 5, }, /*63*/
154 { 10, 5, 5, }, /* 125 */
156 { 10, 5, 5, }, /* 250 */
158 { 10, 5, 5, }, /* 500 */
160 { 10, 5, 5, }, /* 1000 */
167 { 10, 10, 7, 5, }, /* 8000 */
168 { 10, 10, 7, 5, 5, 5, 10, 10, 10, 5, },
169 { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */
172 /* adjust for mode six */
174 { 10, 5, 5, }, /*63*/
176 { 10, 5, 5, }, /* 125 */
178 { 10, 5, 5, }, /* 250 */
180 { 10, 5, 5, }, /* 500 */
182 { 10, 5, 5, }, /* 1000 */
189 { 10, 10, 7, 5, }, /* 8000 */
190 { 10, 10, 7, 5, 5, 5, 5, 5, 5, },
191 { 12, 10, 10, 5, 5, 5, 5, 5, 5, }, /* 16000 */
194 /* adjust for mode eight */
213 { 5, 5, 5, 5, 5, 5, 5, }, /* 16000 */
216 /* adjust for mode ten */
218 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
219 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
220 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
221 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
222 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
223 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
224 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
225 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
226 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*1000*/
227 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
228 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*2000*/
229 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
230 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*4000*/
231 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
232 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*8000*/
233 { 0, 0, 0, -5,-10,-10,-10,-15,-15,-15,-15},
234 { 0, 0, 0, 0, 0, -5, -5,-10,-15,-15,-15}, /*16000*/
238 static vp_adjblock _vp_tonemask_adj_otherblock[6]={
239 /* adjust for mode zero */
241 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*63*/
242 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
243 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*125*/
244 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
245 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*250*/
246 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
247 { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5}, /*500*/
248 { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5},
250 { 5, 5, 5, }, /*1000*/
253 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*2000*/
254 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
255 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*4000*/
256 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
257 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, /*8000*/
258 { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
259 { 16, 16, 14, 12, 12, 15, 15, 15, 15, 15, 10}, /*16000*/
262 /* adjust for mode two */
264 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*63*/
265 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
266 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*125*/
267 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
268 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10}, /*250*/
269 { 0, 0, 0, 0,-10,-10,-10,-10,-10,-10,-10},
270 { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5}, /*500*/
271 { 5, 5, 5, 0, -5, -5, -5, -5, -5, -5, -5},
273 { 10, 10, 5, }, /* 1000 */
280 { 10, 10, 7, 5, }, /* 8000 */
281 { 10, 10, 7, 7, 5, 5, 10, 10, 10, 5, },
282 { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */
285 /* adjust for mode four */
287 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
288 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
289 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
290 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
291 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
292 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
293 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
294 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
296 { 5, 5, 5, }, /* 1000 */
303 { 10, 10, 7, 5, }, /* 8000 */
304 { 10, 10, 7, 5, 5, 5, 10, 10, 10, 5, },
305 { 16, 16, 14, 8, 8, 8, 10, 10, 10, 5, }, /* 16000 */
308 /* adjust for mode six */
310 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*63*/
311 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
312 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*125*/
313 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
314 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*250*/
315 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
316 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*500*/
317 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
319 { 5, 5, 5, }, /* 1000 */
326 { 10, 10, 7, 5, }, /* 8000 */
327 { 10, 10, 7, 5, 5, 5, 5, 5, 5, },
328 { 12, 10, 10, 5, 5, 5, 5, 5, 5, }, /* 16000 */
331 /* adjust for mode eight */
333 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*63*/
334 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20},
335 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*125*/
336 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20},
337 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*250*/
338 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20},
339 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20}, /*500*/
340 {-10,-10,-10,-15,-15,-15,-15,-20,-20,-20,-20},
342 { 0,-10,-10,-15,-15,-15,-15,-15,-15,-15,-15},
343 { 0,-10,-10,-15,-15,-15,-15,-15,-15,-15,-15},
351 { 5, 5, 5, 5, 5, 5, 5, }, /* 16000 */
354 /* adjust for mode ten */
356 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*63*/
357 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20},
358 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*125*/
359 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20},
360 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*250*/
361 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20},
362 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*500*/
363 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20},
364 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20}, /*1000*/
365 { 0, 0, 0, -5,-15,-20,-20,-20,-20,-20,-20},
366 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*2000*/
367 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
368 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*4000*/
369 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15},
370 { 0, 0, 0, -5,-15,-15,-15,-15,-15,-15,-15}, /*8000*/
371 { 0, 0, 0, -5,-10,-10,-10,-15,-15,-15,-15},
372 { 0, 0, 0, 0, 0, -5, -5,-10,-15,-15,-15}, /*16000*/
376 static vp_adjblock _vp_peakguard[6]={
379 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*63*/
380 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
381 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*125*/
382 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
383 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},/*250*/
384 {-14,-16,-18,-19,-24,-24,-24,-24,-24,-24,-24},
385 {-10,-10,-10,-10,-16,-16,-18,-20,-22,-24,-24},/*500*/
386 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},
387 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},/*1000*/
388 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},
389 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-24,-24},/*2000*/
390 {-10,-10,-10,-12,-16,-16,-16,-20,-22,-24,-24},
391 {-10,-10,-10,-12,-16,-16,-16,-20,-22,-24,-24},/*4000*/
392 {-10,-10,-10,-12,-12,-14,-16,-18,-22,-24,-24},
393 {-10,-10,-10,-10,-10,-14,-16,-18,-22,-24,-24},/*8000*/
394 {-10,-10,-10,-10,-10,-14,-16,-18,-22,-24,-24},
395 {-10,-10,-10,-10,-10,-12,-16,-18,-22,-24,-24},/*16000*/
399 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*63*/
400 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
401 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*125*/
402 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
403 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*250*/
404 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},
405 {-14,-20,-20,-20,-26,-30,-30,-30,-30,-30,-30},/*500*/
406 {-10,-10,-10,-10,-14,-14,-14,-20,-26,-30,-30},
407 {-10,-10,-10,-10,-14,-14,-14,-20,-22,-30,-30},/*1000*/
408 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},
409 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},/*2000*/
410 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},
411 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-30,-30},/*4000*/
412 {-10,-10,-10,-10,-10,-11,-12,-13,-22,-30,-30},
413 {-10,-10,-10,-10,-10,-11,-12,-13,-22,-30,-30},/*8000*/
414 {-10,-10,-10,-10,-10,-10,-10,-11,-22,-30,-30},
415 {-10,-10,-10,-10,-10,-10,-10,-10,-20,-30,-30},/*16000*/
419 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*63*/
420 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
421 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*125*/
422 {-14,-20,-20,-20,-20,-20,-20,-30,-32,-32,-40},
423 {-14,-20,-20,-20,-20,-20,-20,-30,-32,-32,-40},/*250*/
424 {-14,-20,-20,-20,-20,-20,-20,-24,-32,-32,-40},
425 {-14,-20,-20,-20,-20,-20,-20,-24,-32,-32,-40},/*500*/
426 {-10,-10,-10,-10,-14,-16,-20,-24,-26,-32,-40},
427 {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},/*1000*/
428 {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},
429 {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},/*2000*/
430 {-10,-10,-10,-10,-14,-16,-20,-24,-22,-32,-40},
431 {-10,-10,-10,-10,-14,-14,-16,-20,-22,-32,-40},/*4000*/
432 {-10,-10,-10,-10,-10,-11,-12,-13,-22,-32,-40},
433 {-10,-10,-10,-10,-10,-11,-12,-13,-22,-32,-40},/*8000*/
434 {-10,-10,-10,-10,-10,-10,-10,-11,-22,-32,-40},
435 {-10,-10,-10,-10,-10,-10,-10,-10,-20,-32,-40},/*16000*/
439 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*63*/
440 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
441 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*125*/
442 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
443 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*250*/
444 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},
445 {-14,-20,-20,-20,-26,-32,-32,-32,-32,-32,-40},/*500*/
446 {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},
447 {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},/*1000*/
448 {-14,-14,-14,-16,-20,-22,-24,-24,-28,-32,-40},
449 {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},/*2000*/
450 {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},
451 {-14,-14,-16,-20,-24,-26,-26,-28,-30,-32,-40},/*4000*/
452 {-14,-14,-14,-20,-22,-22,-24,-24,-26,-32,-40},
453 {-14,-14,-14,-18,-20,-20,-24,-24,-24,-32,-40},/*8000*/
454 {-14,-14,-14,-18,-20,-20,-24,-24,-24,-32,-40},
455 {-14,-14,-14,-18,-20,-20,-22,-24,-24,-32,-40},/*16000*/
459 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*63*/
460 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*88*/
461 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*125*/
462 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*170*/
463 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*250*/
464 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*350*/
465 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*500*/
466 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*700*/
467 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*1000*/
468 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*1400*/
469 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*2000*/
470 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*2800*/
471 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*4000*/
472 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*5600*/
473 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*8000*/
474 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*11500*/
475 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-40,-40},/*16600*/
479 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*63*/
480 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*88*/
481 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*125*/
482 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*170*/
483 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*250*/
484 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*350*/
485 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*500*/
486 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*700*/
487 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*1000*/
488 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*1400*/
489 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*2000*/
490 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*2800*/
491 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*4000*/
492 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*5600*/
493 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*8000*/
494 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*11500*/
495 {-14,-20,-24,-26,-32,-34,-36,-38,-40,-44,-46},/*16600*/
499 static int _psy_noisebias_long[11][17]={
500 /*63 125 250 500 1k 2k 4k 8k 16k*/
501 {-20,-20,-18,-18,-18,-16,-14, -8, -6, -2, 0, 2, 3, 3, 4, 4, 10},
502 {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -2, -2, 1, 1, 2, 2, 4},
503 {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -3, -3, -1, -1, 0, 1, 2},
504 {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, -3, -3, -1, -1, 0, 1, 2},
505 {-20,-20,-20,-20,-20,-20,-20,-10, -6, -3, -4, -4, -2, -1, 0, 0, 2},
507 {-20,-20,-20,-20,-20,-20,-20,-18,-10, -4, -6, -6, -3, -2, -2, -2, 0},
508 {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -8, -8, -7, -7, -6, -6, -4},
509 {-24,-24,-24,-24,-24,-24,-24,-18,-14,-14,-16,-16,-14,-12,-10,-10, -8},
511 {-24,-24,-24,-24,-24,-24,-24,-20,-20,-20,-20,-20,-16,-16,-14,-14,-10},
512 {-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-24,-24,-24,-24},
513 {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-46},
516 static int _psy_noisebias_impulse[11][17]={
517 /*63 125 250 500 1k 2k 4k 8k 16k*/
518 {-20,-20,-20,-20,-20,-18,-14,-10,-10, -2, 2, 2, 2, 2, 2, 3, 6},
519 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -2, -2, -2, 2},
520 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, 0},
521 {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -6, -6, -4, -4, -4, -2, -2},
522 {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2},
524 {-30,-30,-30,-30,-30,-30,-24,-20,-10,-12,-14,-14,-10, -9, -8, -6, -4},
525 {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10, -8},
526 {-34,-34,-34,-34,-30,-30,-30,-24,-20,-20,-20,-20,-20,-18,-16,-16,-14},
528 {-34,-34,-34,-34,-30,-30,-30,-30,-30,-26,-26,-26,-26,-22,-20,-20,-16},
529 {-40,-40,-40,-40,-40,-40,-40,-40,-40,-36,-36,-36,-36,-36,-36,-30,-30},
530 {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50},
533 static int _psy_noisebias_other[11][17]={
534 /*63 125 250 500 1k 2k 4k 8k 16k*/
535 {-20,-20,-20,-20,-20,-18,-14,-10, -6, -2, 2, 2, 3, 3, 4, 4, 10},
536 {-26,-26,-26,-26,-26,-22,-20,-14,-10, -2, -2, -2, 1, 1, 2, 2, 4},
537 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -2, -3, -3, -1, -1, 0, 1, 2},
538 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -1, -1, 0, 1, 2},
539 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -2, -1, 0, 0, 2},
541 {-30,-30,-30,-30,-30,-30,-24,-20,-10, -4, -6, -6, -3, -2, -2, -2, 0},
542 {-34,-34,-34,-34,-30,-30,-24,-20,-14, -8, -8, -8, -7, -7, -6, -6, -4},
543 {-34,-34,-34,-34,-30,-30,-24,-20,-14,-14,-16,-16,-14,-12,-10,-10, -8},
545 {-34,-34,-34,-34,-30,-30,-30,-20,-20,-20,-20,-20,-16,-16,-14,-14,-10},
546 {-40,-40,-40,-40,-40,-40,-40,-30,-30,-30,-30,-30,-30,-24,-24,-24,-24},
547 {-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-50,-46},
550 static int _psy_noiseguards_short[33]={
563 static int _psy_noiseguards_long[33]={
577 static double _psy_tone_masteratt[11]={
578 3.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
581 static double _psy_tone_masterguard[11]={
582 -18.,-24.,-24.,-24.,-26.,-40.,-40.,-40.,-45.,-45.,-45.,
585 static double _psy_tone_suppress[11]={
586 -10.,-20.,-20.,-20.,-30.,-30.,-40.,-40.,-45.,-45.,-45.,
589 static double _psy_tone_0dB[11]={
590 95.,95.,95.,95.,95.,105.,105.,105.,105.,105.,105.,
593 static double _psy_noise_suppress[11]={
594 -0.,-24.,-24.,-24.,-24.,-30.,-40.,-40.,-45.,-45.,-45.,
597 static int _psy_ehmer_bandlimit[11]={
598 0,0,0,0,4,4,30,30,30,30,30,
601 static vorbis_info_psy _psy_info_template={
603 /* tonemask att,guard,suppr,curves peakattp,curvelimitp,peaksettings*/
604 0.f, -40.f,-40.f, {{{0.}}}, 1, 0, {{{0.}}},
606 /*noisemaskp,supp, low/high window, low/hi guard, minimum */
607 1, -0.f, .5f, .5f, 0,0,0,
608 {-1},{-1},105.f,{{-1,-1,{{-1,-1,-1,-1}}}}
611 /* ath ****************/
613 static double _psy_ath_floater[11]={
614 -100.,-100.,-100.,-100.,-100.,-100.,-105.,-105.,-105.,-110.,-120.,
617 static double _psy_ath_abs[11]={
618 -110.,-110.,-120.,-140.,-140.,-140.,-140.,-140.,-140.,-140.,-150.,
621 static float ATH_Bark_dB[][27]={
623 0.f, 15.f, 15.f, 15.f, 11.f, 10.f, 8.f, 7.f, 7.f, 7.f,
624 6.f, 2.f, 0.f, 0.f, -2.f, -5.f, -6.f, -6.f, -4.f, 4.f,
625 14.f, 20.f, 19.f, 17.f, 30.f, 60.f, 70.f,
628 0.f, 15.f, 15.f, 15.f, 11.f, 10.f, 8.f, 7.f, 7.f, 7.f,
629 6.f, 2.f, 0.f, 0.f, -2.f, -5.f, -6.f, -6.f, -4.f, 0.f,
630 2.f, 6.f, 5.f, 5.f, 15.f, 30.f, 50.f,
633 0.f, 15.f, 15.f, 15.f, 11.f, 10.f, 8.f, 7.f, 7.f, 7.f,
634 6.f, 2.f, 0.f, 0.f, -3.f, -5.f, -6.f, -6.f, -4.5f, -4.f,
635 2.f, 6.f, 5.f, 5.f, 15.f, 20.f, 40.f,
639 /* stereo ****************/
640 static int _psy_stereo_point_dB_44[11]={3, 3, 2, 2, 1, 0, 0, 0, 0, 0, 0};
641 static double _psy_stereo_point_kHz_44[2][11]={
642 {4., 6., 6., 6., 10., 6., 6., 4., 4., 4., 4.},
643 {6., 6., 6., 10., 10., 6., 6., 4., 4., 4., 4.}
646 /* lowpass **************/
647 static double _psy_lowpass_44[11]={
648 15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999.
651 /* management noise offset */
653 static double _bm_max_noise_offset[11]={
654 1.,2.,3.,3.,4.,4.,4.,4.,4.,4.,4.