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.17 2002/06/29 09:45:28 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,12.f,12.f,12.f,12.f,12.f},
25 {-60.f,-30.f,-40.f,-40.f,-40.f,-40.f,-40.f}, 2,-75.f,
27 {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
29 {8, /* lines per eighth octave */
30 {14.f,10.f,10.f,10.f,10.f,10.f,10.f},
31 {-40.f,-30.f,-25.f,-25.f,-25.f,-25.f,-25.f}, 2,-80.f,
33 {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
35 {8, /* lines per eighth octave */
36 {12.f,10.f,10.f,10.f,10.f,10.f,10.f},
37 {-20.f,-20.f,-15.f,-15.f,-15.f,-15.f,-15.f}, 0,-80.f,
39 {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
41 {8, /* lines per eighth octave */
42 {10.f,8.f,8.f,8.f,8.f,8.f,8.f},
43 {-20.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-80.f,
45 {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
47 {8, /* lines per eighth octave */
48 {10.f,6.f,6.f,6.f,6.f,6.f,6.f},
49 {-15.f,-15.f,-12.f,-12.f,-12.f,-12.f,-12.f}, 0,-85.f,
51 {99.},{{99.},{99.}},{0},{0},{{0.},{0.}}
55 /* noise compander lookups * low, mid, high quality ****************/
56 static compandblock _psy_compand_44[6]={
57 /* sub-mode Z short */
59 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
60 8, 9,10,11,12,13,14, 15, /* 15dB */
61 16,17,18,19,20,21,22, 23, /* 23dB */
62 24,25,26,27,28,29,30, 31, /* 31dB */
63 32,33,34,35,36,37,38, 39, /* 39dB */
65 /* mode_Z nominal short*/
67 0, 1, 2, 3, 4, 5, 6, 6, /* 7dB */
68 7, 7, 7, 7, 6, 6, 6, 7, /* 15dB */
69 7, 8, 9,10,11,12,13, 14, /* 23dB */
70 15,16,17,17,17,18,18, 19, /* 31dB */
71 19,19,20,21,22,23,24, 25, /* 39dB */
75 0, 1, 2, 3, 4, 5, 5, 5, /* 7dB */
76 6, 6, 6, 5, 4, 4, 4, 4, /* 15dB */
77 4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
78 7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
79 11,12,13,14,15,16,17, 18, /* 39dB */
83 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
84 8, 9,10,11,12,13,14, 15, /* 15dB */
85 16,17,18,19,20,21,22, 23, /* 23dB */
86 24,25,26,27,28,29,30, 31, /* 31dB */
87 32,33,34,35,36,37,38, 39, /* 39dB */
89 /* mode_Z nominal long */
91 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
92 8, 9,10,11,12,12,13, 13, /* 15dB */
93 13,14,14,14,15,15,15, 15, /* 23dB */
94 16,16,17,17,17,18,18, 19, /* 31dB */
95 19,19,20,21,22,23,24, 25, /* 39dB */
99 0, 1, 2, 3, 4, 5, 6, 7, /* 7dB */
100 8, 8, 7, 6, 5, 4, 4, 4, /* 15dB */
101 4, 4, 5, 5, 5, 6, 6, 6, /* 23dB */
102 7, 7, 7, 8, 8, 8, 9, 10, /* 31dB */
103 11,12,13,14,15,16,17, 18, /* 39dB */
107 /* tonal masking curve level adjustments *************************/
108 static vp_adjblock _vp_tonemask_adj_longblock[11]={
109 /* adjust for mode zero */
110 /* 63 125 250 500 1 2 4 8 16 */
111 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 0 */
112 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 1 */
113 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
114 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 3 */
115 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 4 */
116 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 5 */
117 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 6 */
118 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */
119 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 8 */
120 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 9 */
121 {{-15,-15,-15,-15,-15,-12,-10,-8, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 10 */
123 static vp_adjblock _vp_tonemask_adj_otherblock[11]={
124 /* adjust for mode zero */
125 /* 63 125 250 500 1 2 4 8 16 */
126 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 0 */
127 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 1 */
128 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 2 */
129 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 3 */
130 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 4 */
131 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 5 */
132 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 6 */
133 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 7 */
134 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 8 */
135 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 9 */
136 {{-20,-20,-20,-20,-20,-18,-16,-14,-10, 0, 0, 0, 0, 0, 0, 0, 0}}, /* 10 */
139 static noise3 _psy_noisebias_trans[11]={
140 /* 63 125 250 500 1k 2k 4k 8k 16k*/
142 {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
143 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, 0, 0, 0, 2, 4, 10},
144 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -4, -4, -4, -2}}},
146 {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
147 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
148 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -6, -6, -6, -4}}},
150 {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
151 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
152 {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
154 {{{-15,-15,-15,-15,-15,-12,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
155 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 4},
156 {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
158 {{{-20,-20,-20,-20,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
159 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 4},
160 {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
162 {{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
163 {-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -4, -4, -4, -4, -2, -1, 2},
164 {-34,-34,-34,-34,-30,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},
166 {{{-24,-24,-24,-24,-20,-18,-14, -8, -1, 1, 1, 1, 2, 3, 3, 4, 7},
167 {-32,-32,-32,-32,-28,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2, 2},
168 {-34,-34,-34,-34,-30,-26,-24,-18,-17,-15,-15,-15,-15,-13,-13,-12, -8}}},
170 {{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
171 {-32,-32,-32,-32,-28,-24,-24,-18,-14,-12,-10, -8, -8, -8, -6, -4, 0},
172 {-34,-34,-34,-34,-30,-26,-26,-24,-22,-19,-19,-19,-19,-18,-17,-16,-12}}},
174 {{{-24,-24,-24,-24,-22,-20,-15,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
175 {-36,-36,-36,-36,-30,-30,-30,-24,-18,-14,-12,-10,-10,-10, -8, -6, -2},
176 {-36,-36,-36,-36,-34,-30,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
178 {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
179 {-40,-40,-40,-40,-35,-35,-35,-29,-23,-19,-17,-15,-15,-15,-13,-11, -7},
180 {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
182 {{{-30,-30,-30,-30,-30,-30,-30,-28,-20,-14,-14,-14,-14,-14,-14,-12,-10},
183 {-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-30,-30,-30,-30,-30,-30,-20},
184 {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
187 static noise3 _psy_noisebias_long[11]={
188 /*63 125 250 500 1k 2k 4k 8k 16k*/
190 {{{-10,-10,-10,-10,-10,-10, -8, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
191 {-20,-20,-20,-20,-20,-20,-20,-10, -6, -2, 0, 0, 0, 0, 2, 4, 10},
192 {-20,-20,-20,-20,-20,-20,-20,-10, -6, -6, -6, -6, -6, -4, -4, -4, -2}}},
194 {{{-10,-10,-10,-10,-10,-10, -8, -8, 0, 2, 4, 4, 5, 5, 5, 8, 10},
195 {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
196 {-20,-20,-20,-20,-20,-20,-20,-14, -8, -8, -8, -8, -8, -6, -6, -6, -4}}},
198 {{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 5, 6, 10},
199 {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -2, -2, -2, -2, 0, 2, 6},
200 {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
202 {{{-10,-10,-10,-10,-10,-10,-10, -8, 0, 2, 2, 2, 4, 4, 4, 5, 8},
203 {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 4},
204 {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
206 {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
207 {-20,-20,-20,-20,-20,-20,-20,-14,-10, -4, -3, -3, -3, -3, -1, 1, 4},
208 {-20,-20,-20,-20,-20,-20,-20,-14,-10,-10,-10,-10,-10, -8, -8, -8, -4}}},
210 {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
211 {-22,-22,-22,-22,-22,-22,-22,-16,-12, -6, -4, -4, -4, -4, -2, 0, 2},
212 {-24,-24,-24,-24,-24,-24,-24,-18,-14,-12,-12,-12,-12,-10,-10, -9, -5}}},
214 {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 1, 1, 1, 2, 3, 3, 4, 7},
215 {-24,-24,-24,-24,-24,-24,-24,-18,-14, -8, -6, -6, -6, -6, -4, -2, 2},
216 {-26,-26,-26,-26,-26,-26,-26,-18,-16,-15,-15,-15,-15,-13,-13,-12, -8}}},
218 {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 0, 0, 0, 0, 1, 2, 3, 7},
219 {-24,-24,-24,-24,-24,-24,-24,-18,-14,-10, -8, -8, -8, -8, -6, -4, 0},
220 {-26,-26,-26,-26,-26,-26,-26,-22,-20,-19,-19,-19,-19,-18,-17,-16,-12}}},
222 {{{-15,-15,-15,-15,-15,-15,-15,-10, -4, 0, 0, 0, 0, 1, 2, 3, 7},
223 {-26,-26,-26,-26,-26,-26,-26,-20,-16,-12,-10,-10,-10,-10, -8, -6, -2},
224 {-28,-28,-28,-28,-28,-28,-28,-26,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
226 {{{-22,-22,-22,-22,-22,-22,-22,-18,-14, -8, -4, -4, -4, -4, -4, -2, 2},
227 {-30,-30,-30,-30,-30,-30,-30,-25,-21,-17,-15,-15,-15,-15,-13,-11, -7},
228 {-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
230 {{{-24,-24,-24,-24,-24,-24,-24,-24,-24,-18,-14,-14,-14,-14,-14,-12,-10},
231 {-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-20},
232 {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
235 static noise3 _psy_noisebias_impulse[11]={
236 /* 63 125 250 500 1k 2k 4k 8k 16k*/
238 {{{-16,-16,-16,-16,-16,-13,-10, -7, -4, -1, 2, 5, 8, 11, 14, 17, 20},
239 {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -2, 2, 2, 4, 4, 5, 8},
240 {-30,-30,-30,-30,-30,-24,-20,-14,-10, -6, -8, -8, -6, -6, -6, -4, -2}}},
242 {{{-16,-16,-16,-16,-16,-13,-10, -7, -4, -1, 2, 2, 4, 8, 10, 12, 15},
243 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -4, 0, 0, 0, 0, 0, 4},
244 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8,-10,-10, -8, -8, -8, -6, -4}}},
246 {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 2, 2, 2, 2, 3, 3, 6, 10},
247 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -4, 0, 0, 0, 0, 0, 4},
248 {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
250 {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 2, 2, 2, 2, 2, 3, 4, 8},
251 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -4, -1, -1, -1, -1, 0, 3},
252 {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
254 {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 2, 2, 2, 2, 2, 3, 4, 8},
255 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -4, -1, -1, -1, -1, 0, 3},
256 {-30,-30,-30,-30,-26,-22,-20,-14,-10,-10,-10,-10,-10,-10,-10, -8, -4}}},
258 {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 2, 2, 2, 2, 2, 3, 4, 8},
259 {-32,-32,-32,-32,-28,-24,-22,-16,-12, -8, -6, -3, -3, -3, -2, -1, 2},
260 {-34,-34,-34,-34,-30,-26,-24,-18,-14,-12,-12,-12,-12,-12,-10, -9, -5}}},
262 {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 2, 2, 2, 2, 2, 3, 4, 8},
263 {-34,-34,-34,-34,-30,-30,-24,-20,-14,-10, -6, -6, -6, -6, -3, -2, 2},
264 {-34,-34,-34,-34,-34,-30,-26,-20,-16,-15,-15,-15,-15,-15,-13,-12, -8}}},
266 {{{-24,-24,-24,-24,-22,-20,-14,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
267 {-34,-34,-34,-34,-30,-30,-30,-24,-16,-12,-10, -8, -8, -8, -7, -6, -2},
268 {-34,-34,-34,-34,-32,-32,-30,-24,-20,-19,-19,-19,-19,-19,-17,-16,-12}}},
270 {{{-24,-24,-24,-24,-22,-20,-14,-10, -8, -2, 0, 0, 0, 1, 2, 3, 7},
271 {-34,-34,-34,-34,-30,-30,-30,-24,-18,-14,-12,-10,-10,-10, -9, -8, -4},
272 {-36,-36,-36,-36,-36,-34,-28,-24,-24,-24,-24,-24,-24,-24,-24,-20,-16}}},
274 {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -4, -4, -4, -4, -4, -2, 2},
275 {-40,-40,-40,-40,-35,-35,-35,-29,-23,-19,-17,-15,-15,-15,-15,-15,-10},
276 {-40,-40,-40,-40,-40,-40,-40,-32,-30,-30,-30,-30,-30,-30,-30,-24,-20}}},
278 {{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-16,-16,-16,-16,-16,-14,-12},
279 {-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-30,-30,-30,-30,-30,-30,-20},
280 {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
283 static noise3 _psy_noisebias_padding[11]={
284 /* 63 125 250 500 1k 2k 4k 8k 16k*/
286 {{{-16,-16,-16,-16,-16,-13,-10, -7, -4, -1, 2, 5, 8, 11, 14, 17, 20},
287 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -2, 2, 3, 6, 6, 8, 10},
288 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, -4, -4, -4, -4, -2, 0, 2}}},
290 {{{-16,-16,-16,-16,-16,-13,-10, -7, -4, -1, 2, 2, 4, 8, 10, 12, 15},
291 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, 0, 0, 0, 2, 2, 4, 8},
292 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -6, -6, -6, -6, -4, -2, 0}}},
294 {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 2, 2, 2, 2, 5, 5, 8, 10},
295 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -4, 0, 0, 0, 2, 2, 4, 8},
296 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
298 {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 2, 2, 2, 3, 3, 4, 6, 9},
299 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1, -1, 0, 2, 6},
300 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
302 {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 2, 2, 2, 3, 3, 4, 6, 9},
303 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -6, -1, -1, -1, -1, 0, 2, 6},
304 {-30,-30,-30,-30,-26,-22,-20,-14,-10, -8, -8, -8, -8, -8, -6, -4, -2}}},
306 {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 2, 2, 2, 3, 3, 4, 6, 9},
307 {-32,-32,-32,-32,-28,-24,-22,-16,-12, -6, -3, -3, -3, -3, -2, 0, 4},
308 {-34,-34,-34,-34,-30,-26,-24,-18,-14,-10,-10,-10,-10,-10, -8, -5, -3}}},
310 {{{-20,-20,-20,-20,-20,-18,-14,-10, -4, 2, 2, 2, 3, 3, 4, 6, 9},
311 {-34,-34,-34,-34,-30,-30,-24,-20,-14, -8, -4, -4, -4, -4, -3, -1, 4},
312 {-34,-34,-34,-34,-34,-30,-26,-20,-16,-13,-13,-13,-13,-13,-11, -8, -6}}},
314 {{{-24,-24,-24,-24,-24,-20,-18,-12, -8, -2, 1, 1, 2, 2, 3, 5, 8},
315 {-34,-34,-34,-34,-30,-30,-30,-24,-16,-10, -8, -6, -6, -6, -5, -3, 1},
316 {-34,-34,-34,-34,-32,-32,-28,-22,-18,-16,-16,-16,-16,-16,-14,-12,-10}}},
318 {{{-24,-24,-24,-24,-24,-20,-18,-12, -8, -2, 1, 1, 2, 2, 3, 5, 8},
319 {-34,-34,-34,-34,-30,-30,-30,-24,-16,-12,-10, -8, -8, -8, -7, -5, -2},
320 {-36,-36,-36,-36,-36,-34,-28,-22,-20,-20,-20,-20,-20,-20,-20,-16,-14}}},
322 {{{-28,-28,-28,-28,-28,-28,-28,-20,-14, -8, -2, -2, -2, -2, -2, 0, 2},
323 {-40,-40,-40,-40,-35,-35,-35,-29,-21,-17,-15,-13,-13,-13,-12,-10, -7},
324 {-40,-40,-40,-40,-40,-40,-40,-32,-26,-24,-24,-24,-24,-24,-24,-20,-18}}},
326 {{{-30,-30,-30,-30,-30,-26,-24,-24,-24,-20,-12,-12,-12,-12,-12,-10, -8},
327 {-40,-40,-40,-40,-40,-40,-40,-40,-35,-30,-25,-25,-25,-25,-25,-25,-15},
328 {-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40}}},
331 static noiseguard _psy_noiseguards_44[4]={
338 static int _psy_tone_suppress[11]={
339 -20,-20,-20,-20,-24,-30,-40,-40,-45,-45,-45,
342 static int _psy_tone_0dB[11]={
343 95,95,95,95,95,105,105,105,105,105,105,
346 static int _psy_noise_suppress[11]={
347 -24,-24,-24,-24,-24,-30,-40,-40,-45,-45,-45,
350 static vorbis_info_psy _psy_info_template={
353 /* tonemask att boost/decay,suppr,curves */
354 {0.f,0.f,0.f}, 0.,0., -40.f, {0.},
356 /*noisemaskp,supp, low/high window, low/hi guard, minimum */
357 1, -0.f, .5f, .5f, 0,0,0,
358 {{-1},{-1},{-1}},{-1},105.f,
363 /* ath ****************/
365 static int _psy_ath_floater[11]={
366 -100,-100,-100,-100,-100,-105,-105,-105,-105,-110,-120,
369 static int _psy_ath_abs[11]={
370 -110,-110,-120,-130,-140,-140,-140,-140,-140,-140,-150,
373 /* stereo setup. These don't map directly to quality level, there's
374 an additional indirection as several of the below may be used in a
375 single bitmanaged stream
379 /* various stereo possibilities */
381 /* stereo mode by base quality level */
382 static adj_stereo _psy_stereo_modes_44[11]={
383 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 */
384 {{ 5, 5, 5, 5, 4, 4, 4, 3, 2, 2, 1, 0, 0, 0, 0},
385 { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 4, 3},
386 { 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 8, 8},
387 { 10, 12, 14, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
388 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 */
389 {{ 4, 4, 4, 4, 4, 4, 3, 3, 2, 1, 0, 0, 0, 0, 0},
390 { 8, 8, 8, 8, 6, 6, 6, 5, 5, 5, 5, 5, 5, 4, 3},
391 { 1, 2, 3, 4, 4, 5, 6, 6, 6, 6, 6, 8, 8, 8, 8},
392 { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
393 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 */
394 {{ 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 0, 0, 0, 0, 0},
395 { 8, 8, 8, 7, 5, 5, 5, 5, 5, 5, 5, 4, 3, 2, 1},
396 { 4, 4, 4, 4, 5, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8},
397 { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
398 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 */
399 {{ 3, 3, 3, 3, 3, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0},
400 { 7, 6, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 2, 1},
401 { 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 10, 10, 10, 10, 10},
402 { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
403 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 */
404 {{ 3, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0},
405 { 7, 6, 5, 4, 4, 4, 4, 4, 4, 4, 3, 3, 2, 1, 0},
406 { 6, 6, 6, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10},
407 { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
408 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 */
409 {{ 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
410 { 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 2, 1, 0, 0},
411 { 6, 6, 6, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10},
412 { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
413 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 6 */
414 {{ 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
415 { 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 1, 1, 0, 0, 0},
416 { 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
417 { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
418 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7 */
419 {{ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
420 { 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0},
421 { 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
422 { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
423 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8 */
424 {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
425 { 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
426 { 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
427 { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
428 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 9 */
429 {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
430 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
431 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
432 { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
433 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 10 */
434 {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
435 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
436 { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
437 { 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}},
440 /* tone master attenuation by base quality mode and bitrate tweak */
442 static att3 _psy_tone_masteratt_44[11]={
443 {{ 45, 20, 8}, -6, 1.25}, /* 0 */
444 {{ 40, 14, 4}, -4, 1.25}, /* 1 */
445 {{ 34, 10, -2}, 0, 0}, /* 2 */
446 {{ 28, 10, -4}, 0, 0}, /* 3 */
447 {{ 24, 10, -4}, 0, 0}, /* 4 */
448 {{ 20, 6, -6}, 0, 0}, /* 5 */
449 {{ 20, 3, -10}, 0, 0}, /* 6 */
450 {{ 18, 1, -14}, 0, 0}, /* 7 */
451 {{ 18, 0, -16}, 0, 0}, /* 8 */
452 {{ 16, -2, -16}, 0, 0}, /* 9 */
453 {{ 16, -2, -16}, 0, 0}, /* 10 */
456 /* lowpass by mode **************/
457 static double _psy_lowpass_44[11]={
458 15.1,15.8,16.5,17.9,20.5,48.,999.,999.,999.,999.,999.
461 /* noise normalization **********/
463 static int _noise_start_short_44[10]={
464 16,16,16,16,16,16,16,16,16,16
466 static int _noise_start_long_44[10]={
467 128,128,128,128,128,128,128,128,128,128
469 static int _noise_part_short_44[10]={
472 static int _noise_part_long_44[10]={
473 32,32,32,32,32,32,32,32,32,32
475 static double _noise_thresh_44[10]={
476 .2,.2,.3,.4,.5,.5,.5,.5,.5,.5,