Commit minor speed patch (sliding window in vorbis_blockin)
[platform/upstream/libvorbis.git] / lib / masking.h
1 /********************************************************************
2  *                                                                  *
3  * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
4  * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
5  * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH    *
6  * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.        *
7  *                                                                  *
8  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2000             *
9  * by Monty <monty@xiph.org> and the XIPHOPHORUS Company            *
10  * http://www.xiph.org/                                             *
11  *                                                                  *
12  ********************************************************************
13
14  function: masking curve data for psychoacoustics
15  last mod: $Id: masking.h,v 1.8 2000/12/21 21:04:39 xiphmont Exp $
16
17  ********************************************************************/
18
19 #ifndef _V_MASKING_H_
20 #define _V_MASKING_H_
21
22 /* Not really an ATH, more a bottom curve to limit LSP dynamic range */
23 float ATH_Bark_dB[]={  
24    15,   15,   15,    15,    11,    10,     8,    7,    7,    7,
25     6,    2,    0,     0,    -3,    -5,    -6,   -6, -4.5f, 2.5f,
26    10,   15,   15,    15,    15,    15,   15};
27
28 /* The below masking curves are straight from the R. Ehmer
29    (J. Acoustical Society of America) papers ca 1958-59.  I modified
30    them slightly as Ehmer does not correct for the Absolute Threshold
31    of Hearing, and the low dB portions of the curves are thus highly
32    suspect. */
33
34 /* Let's all do the Trek thing and just call them 'Ehmer curves' ;-)
35    Note these are octaves, not Bark scale. */
36
37 #define EHMER_OFFSET 16
38 #define EHMER_MAX 56
39
40 float tone_125_40dB_SL[EHMER_MAX]={
41   20,  20,  20,  20,  20,  20,  20,  20,   20, 20, 20, 20, 20, 20, 20, 20,  
42   20,  18,  16,  14,  12,  11,   9,   7,    5,  3,  2,  0, -2, -4, -6, -8,
43  -10, -12, -14, -16, -18, -20, -23, -25,  -28,-30,-34,-37,-40,-44,-48,-52,  
44 -900,-900,-900,-900,-900,-900,-900,-900};
45 float tone_125_60dB_SL[EHMER_MAX]={
46   40,  40,  40,  40,  40,  40,  40,  40,   40, 40, 40, 40, 40, 40, 40, 40,  
47   40,  38,  36,  34,  32,  31,  29,  27,   25, 23, 22, 20, 18, 16, 14, 12,
48   10,   8,   6,   4,   2,   0,  -3,  -5,   -8,-10,-14,-17,-20,-24,-28,-32,  
49 -900,-900,-900,-900,-900,-900,-900,-900};
50 float tone_125_80dB_SL[EHMER_MAX]={
51   60,  60,  60,  60,  60,  60,  60,  60,   60, 60, 60, 60, 60, 60, 60, 60,  
52   60,  58,  56,  54,  52,  51,  49,  47,   45, 43, 42, 40, 38, 36, 34, 32,
53   30,  28,  26,  24,  22,  20,  17,  15,   12, 10,  6,  3,  0, -4, -8,-12,  
54 -900,-900,-900,-900,-900,-900,-900,-900};
55 float tone_125_100dB_SL[EHMER_MAX]={
56   78,  78,  78,  78,  78,  78,  78,  78,   78, 78, 78, 78, 78, 78, 78, 78,  
57   78,  77,  75,  74,  73,  72,  71,  70,   69, 68, 67, 65, 64, 63, 62, 60,
58   58,  57,  55,  54,  52,  50,  48,  46,   44, 42, 40, 38, 36, 34, 31, 29,  
59   27,  24,  22,  20,  18,  15,  13,  11};
60
61 float tone_250_40dB_SL[EHMER_MAX]={
62 -900,-900,-900,-900,-900,-900,-900,-900,   -19, -13,  -7,  -1,   4,   9,  15,  20,
63   22,  23,  22,  19,  18,  18,  16,  13,     9,   7,   3,   1,  -1,  -3,  -6,  -8,
64  -10, -13, -16, -19, -21, -24, -28, -32,  -900,-900,-900,-900,-900,-900,-900,-900,
65 -900,-900,-900,-900,-900,-900,-900,-900};
66 float tone_250_60dB_SL[EHMER_MAX]={
67 -900,-900,-900,-900,-900,-900,-900, -10,   -5,  1,  7, 13, 19, 25, 30, 33,  
68   36,  39,  38,  37,  38,  39,  39,  40,   38, 36, 35, 34, 33, 31, 29, 28,
69   28,  28,  25,  20,  14,  10,   5,   0,   -5,-10,-15,-20,-25,-30,-35,-40,  
70 -900,-900,-900,-900,-900,-900,-900,-900};
71 float tone_250_80dB_SL[EHMER_MAX]={
72 -900,-900,-900,-900,-900,-900,-900, -10,   10, 17, 24, 30, 37, 41, 48, 49,  
73   50,  53,  54,  53,  53,  54,  55,  57,   57, 57, 58, 59, 60, 58, 57, 58,
74   59,  58,  57,  54,  52,  50,  49,  47,   46, 47, 46, 44, 43, 42, 41, 40,  
75   38,  32,  27,  22,  17,  11,   6,   0};
76 /* no data, just interpolated from 80 */
77 float tone_250_100dB_SL[EHMER_MAX]={
78 -900,-900,-900,-900,-900,-900,-900, -10,   15, 25, 34, 40, 50, 56, 60, 70,  
79   70,  73,  74,  73,  73,  74,  75,  77,   77, 77, 78, 79, 80, 78, 77, 78,
80   79,  78,  77,  74,  72,  70,  69,  67,   66, 67, 66, 64, 63, 62, 61, 60,  
81   58,  52,  47,  42,  37,  31,  26,  20};
82
83 float tone_500_40dB_SL[EHMER_MAX]={
84 -900,-900,-900,-900,-900,-900,-900, -40,   -26, -20, -14,  -8,  -2,   4,  10,  17,
85   23,  16,  12,   9,   6,   3,   0,  -3,    -7, -10, -13, -16, -20, -23, -26, -30,
86 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
87 -900,-900,-900,-900,-900,-900,-900,-900};
88 float tone_500_60dB_SL[EHMER_MAX]={
89 -900,-900,-900,-900,-900,-900,-900,-900,   -18, -12,  -6,   0,   6,  13,  20,  30,
90   39,  34,  31,  29,  29,  27,  24,  21,    18,  16,  13,   8,   6,   3,   1,  -1,
91   -5,  -2,  -5,  -8, -12, -15, -18, -22,  -900,-900,-900,-900,-900,-900,-900,-900,
92 -900,-900,-900,-900,-900,-900,-900,-900};
93 float tone_500_80dB_SL[EHMER_MAX]={
94 -900,-900,-900,-900,-900,-900,-900,-900,  -22,-16,-10,  0, 10, 20, 32, 43,  
95   53,  52,  52,  50,  49,  50,  52,  55,   55, 54, 51, 49, 46, 44, 44, 42,
96   38,  34,  32,  29,  29,  28,  25,  23,   20, 16, 10,  7,  4,  2, -1, -4,  
97   -7, -10, -15, -20, -25, -30, -35, -40};
98 float tone_500_100dB_SL[EHMER_MAX]={
99 -900,-900,-900,-900,-900,-900,-900, -10,   -7,  2, 10, 19, 27, 35, 55, 56,  
100   62,  61,  60,  58,  57,  57,  59,  63,   65, 66, 62, 60, 57, 57, 58, 58,
101   57,  56,  56,  56,  57,  57,  56,  57,   57, 54, 47, 41, 37, 28, 21, 16,  
102   10,   3,  -3,  -8, -13, -18, -23, -28};
103
104 float tone_1000_40dB_SL[EHMER_MAX]={
105 -900,-900,-900,-900,-900,-900,-900,-900,   -55, -40, -30, -20, -10,  0,   9,  20,
106   27,  20,  13,  14,  13,   5,  -1,  -6,   -11, -20, -30,-900,-900,-900,-900,-900,
107 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
108 -900,-900,-900,-900,-900,-900,-900,-900};
109 float tone_1000_60dB_SL[EHMER_MAX]={
110 -900,-900,-900,-900,-900,-900,-900, -43,   -33,-23,-13, -3,  7,  17,  25,  37,  
111   42,  33,  25,  25,  23,  18,  13,   9,     4, -1, -7,-13,-18, -23, -28, -33,
112 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
113 -900,-900,-900,-900,-900,-900,-900,-900};
114 float tone_1000_80dB_SL[EHMER_MAX]={
115 -900,-900,-900,-900,-900,-900,-900, -35,   -25,-14, -4,  6, 16, 27, 33, 50,  
116   59,  57,  47,  41,  40,  43,  47,  48,    47, 42, 39, 37, 37, 36, 35, 32,
117   30,  27,  21,  15,   5,  -2, -10, -18,  -900,-900,-900,-900,-900,-900,-900,-900,
118 -900,-900,-900,-900,-900,-900,-900,-900};
119 float tone_1000_100dB_SL[EHMER_MAX]={
120 -900,-900,-900,-900,-900,-900, -40, -30,   -20,-10,  0, 10, 23, 33, 45, 60,  
121   70,  72,  55,  49,  43,  40,  44,  54,    59, 58, 49, 43, 52, 57, 57, 58,
122   58,  54,  49,  47,  42,  39,  33,  28,    20, 15,  5,  0, -5,-15,-20,-25,  
123 -900,-900,-900,-900,-900,-900,-900,-900};
124
125 float tone_2000_40dB_SL[EHMER_MAX]={
126 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12, -3,   5,  12,  20,
127   24,  21,  14,   5,  -5, -15, -25, -35,  -900,-900,-900,-900,-900,-900,-900,-900,
128 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
129 -900,-900,-900,-900,-900,-900,-900,-900};
130 float tone_2000_60dB_SL[EHMER_MAX]={
131 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,  -2,   8,  19,  31,
132   38,  34,  24,  17,  14,  13,  11,   7,     3,  -2,  -6, -10, -14, -20, -26, -32,
133 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
134 -900,-900,-900,-900,-900,-900,-900,-900};
135 float tone_2000_80dB_SL[EHMER_MAX]={
136 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,  -2,  13,  28,  40,
137   51,  51,  43,  35,  28,  29,  35,  37,    37,  35,  31,  28,  25,  22,  19,  15,
138   11,   8,   6,  2,   -6, -14, -22, -30,  -900,-900,-900,-900,-900,-900,-900,-900,
139 -900,-900,-900,-900,-900,-900,-900,-900};
140 float tone_2000_100dB_SL[EHMER_MAX]={  
141 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -10,   6,  25,  42,  60,
142   66,  60,  53,  43,  35,  31,  34,  47,    58,  51,  43,  45,  54,  59,  59,  56,
143   54,  51,  40,  29,  20,  11,   2,  -8,   -17, -26, -35,-900,-900,-900,-900,-900,
144 -900,-900,-900,-900,-900,-900,-900,-900};
145
146 float tone_4000_40dB_SL[EHMER_MAX]={
147 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,   0,   3,  10,  18,
148   24,  21,  14,   5,  -5, -15, -25, -35,  -900,-900,-900,-900,-900,-900,-900,-900,
149 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
150 -900,-900,-900,-900,-900,-900,-900,-900};
151
152 float tone_4000_60dB_SL[EHMER_MAX]={
153 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,  -2,   8,  19,  31,
154   38,  33,  28,  23,  19,  14,  11,   8,     3,  -2,  -7, -12, -17, -22, -27, -37,
155 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
156 -900,-900,-900,-900,-900,-900,-900,-900};
157
158 float tone_4000_80dB_SL[EHMER_MAX]={
159 -900,-900,-900,-900,-900,-900,-900,-900,   -60, -50, -40, -29, -12,   5,  19,  37,
160   51,  49,  40,  35,  36,  36,  36,  33,    32,  24,  18,   8,  -3, -12, -20, -29,
161 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
162 -900,-900,-900,-900,-900,-900,-900,-900};
163
164 float tone_4000_100dB_SL[EHMER_MAX]={
165  -20, -12,  -8,  -4,   0,   4,   8,  11,    15,  22,  26,  28,  32,  36,  43,  52,
166   62,  59,  50,  48,  50,  50,  45,  36,    45,  30,  20,  10,  0,  -10, -19, -28,
167  -37,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
168 -900,-900,-900,-900,-900,-900,-900,-900};
169
170 float tone_8000_40dB_SL[EHMER_MAX]={
171 -900,-900,-900,-900,-900,-900,-900, -50,   -41, -30, -21, -12,   0,   3,  10,  18,
172   23,  20,  16,  15,  16,  18,  21,  23,    25,  27,  29,  32,  35,  38,  41,  44,
173   47,  50,  55,  60,  85,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
174   -900,-900,-900,-900,-900,-900,-900,-900};
175 float tone_8000_60dB_SL[EHMER_MAX]={
176 -900,-900,-900,-900,-900,-900,-900, -10,   -21, -18, -14, -10,   0,  3,   15,  30,
177   43,  40,  36,  35,  36,  38,  41,  43,    45,  47,  49,  52,  55,  58,  61,  64,
178   67,  70,  75,  80,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
179 -900,-900,-900,-900,-900,-900,-900,-900};
180 float tone_8000_80dB_SL[EHMER_MAX]={
181 -900,-900,-900,-900,-900,-900,-900, -10,    -1,   2,   6,  10,  13,  19,  25,  35,
182   63,  55,  50,  48,  46,  45,  45,  50,    55,  65,  75,  80,  85,  90,  95,  100,
183  100, 100, 100, 100,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
184 -900,-900,-900,-900,-900,-900,-900,-900};
185
186 float tone_8000_100dB_SL[EHMER_MAX]={
187  -18, -12,  -7,  -3,   0,   2,   6,   9,    12,  19,  22,  21,  19,  21,  40,  40,
188   80,  60,  35,  25,  15,   5,  -5, -15,   -25, -35,-900,-900,-900,-900,-900,-900,
189 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
190 -900,-900,-900,-900,-900,-900,-900,-900};
191
192 #if 0 /* not used for the time being */
193 float noise_500_60dB_SL[EHMER_MAX]={
194 -900,-900,-900,-900,-900, -20, -11,  -2,     7,  16,  25,  34,  43,  52,  61,  66,
195   69,  68,  58,  50,  44,  38,  32,  28,    25,  24,  20,  18,  17,  12,  10,   8,
196    5,   0,  -5,  -8, -12, -15, -18, -22,  -900,-900,-900,-900,-900,-900,-900,-900,
197 -900,-900,-900,-900,-900,-900,-900,-900};
198
199 float noise_500_80dB_SL[EHMER_MAX]={
200 -900,-900,-900, -20, -10,  -1,   8,  17,    26,  35,  44,  53,  62,  70,  79,  83,
201   85,  85,  81,  77,  74,  71,  68,  63,    61,  59,  56,  55,  54,  52,  48,  47,
202   45,  46,  45,  43,  40,  37,  33,  32,    35,  32,  30,  29,  20,  10,   0, -10,
203  -20, -30,-900,-900,-900,-900,-900,-900};
204
205 float noise_1000_60dB_SL[EHMER_MAX]={
206 -900,-900,-900,-900, -24, -15,  -6,   3,    12,  21,  28,  34,  40,  48,  57,  60,
207   61,  56,  54,  45,  36,  27,  21,  19,    17,  13,  10,   0, -10, -20, -20,-900,
208 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
209 -900,-900,-900,-900,-900,-900,-900,-900};
210
211 float noise_1000_80dB_SL[EHMER_MAX]={
212 -900, -26, -17,  -8,   1,  10,  19,  28,    37,  41,  46,  51,  58,  68,  74,  81,
213   80,  81,  70,  66,  58,  61,  59,  55,    54,  53,  52,  49,  48,  42,  38,  38,
214   39,  34,  30,  27,  20,  10,   0, -10,   -20, -30,-900,-900,-900,-900,-900,-900,
215 -900,-900,-900,-900,-900,-900,-900,-900};
216
217 float noise_2000_60dB_SL[EHMER_MAX]={
218 -900,-900,-900, -34, -25, -16,  -7,   2,    11,  18,  23,  30,  35,  42,  51,  58,
219   58,  57,  50,  40,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
220 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
221 -900,-900,-900,-900,-900,-900,-900,-900};
222
223 float noise_2000_80dB_SL[EHMER_MAX]={
224 -900, -26, -17,  -8,   1,  10,  19,  28,    33,  38,  43,  48,  53,  62,  70,  77,
225   77,  75,  70,  67,  68,  66,  62,  61,    60,  59,  52,  47,  39,  35,  34,  35,
226   35,  33,  30,  27,  20,  10,   0, -10,   -20, -30,-900,-900,-900,-900,-900,-900,
227 -900,-900,-900,-900,-900,-900,-900,-900};
228
229 float noise_4000_60dB_SL[EHMER_MAX]={
230 -900,-900,-900, -34, -25, -16,  -7,   2,    11,  20,  25,  31,  37,  45,  56,  62,
231   64,  61,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
232 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
233 -900,-900,-900,-900,-900,-900,-900,-900};
234
235 float noise_4000_80dB_SL[EHMER_MAX]={
236 -900, -26, -17,  -8,   1,  10,  19,  26,    33,  39,  45,  50,  55,  65,  75,  82,
237   84,  81,  78,  72,  70,  69,  66,  61,    50,  48,  46,  40,  35,  30,  25,  20,
238   15,  10,   5,   0, -10, -20, -30,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
239 -900,-900,-900,-900,-900,-900,-900,-900};
240
241 #endif
242 #endif
243
244