Merge of the current Monty branch; this brings in new psychoacoustic
[platform/upstream/libvorbis.git] / lib / masking.h
1 /********************************************************************
2  *                                                                  *
3  * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE.  *
4  * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
5  * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE.    *
6  * PLEASE READ THESE TERMS DISTRIBUTING.                            *
7  *                                                                  *
8  * THE OggSQUISH 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.3 2000/06/14 01:38:31 xiphmont Exp $
16
17  ********************************************************************/
18
19 #ifndef _V_MASKING_H_
20 #define _V_MASKING_H_
21
22 double ATH_Bark_dB[]={  
23    70,   25,   15,    11,     9,     8,   7.5,    7,    7,    7,
24     6,    4,    2,     0,    -3,    -5,    -6,   -6, -4.5,  2.5,
25    11,   18,   21,    17,    25,    80,   120};
26
27 /* The below masking curves are straight from the R. Ehmer
28    (J. Acoustical Society of America) papers ca 1958-59.  I modified
29    them slightly as Ehmer does not correct for the Absolute Threshold
30    of Hearing, and the low dB portions of the curves are thus highly
31    suspect. */
32
33 /* Let's all do the Trek thing and just call them 'Ehmer curves' ;-)
34    Note these are octaves, not Bark scale. */
35
36 #define EHMER_OFFSET 16
37 #define EHMER_MAX 56
38
39 double tone_125_80dB_SL[EHMER_MAX]={
40   70,  70,  70,  70,  70,  70,  70,  70,   70, 70, 69, 67, 66, 65, 63, 61,  
41   60,  58,  56,  54,  52,  51,  49,  47,   45, 43, 42, 40, 38, 36, 34, 32,
42   30,  28,  26,  24,  22,  20,  17,  15,   12, 10,  6,  3,  0, -4, -8,-12,  
43 -900,-900,-900,-900,-900,-900,-900,-900};
44 double tone_125_100dB_SL[EHMER_MAX]={
45   85,  85,  85,  85,  85,  85,  85,  85,   85, 84, 84, 83, 82, 81, 80, 79,  
46   78,  77,  75,  74,  73,  72,  71,  70,   69, 68, 67, 65, 64, 63, 62, 60,
47   58,  57,  55,  54,  52,  50,  48,  46,   44, 42, 40, 38, 36, 34, 31, 29,  
48   27,  24,  22,  20,  18,  15,  13,  11};
49
50 double tone_250_40dB_SL[EHMER_MAX]={
51 -900,-900,-900,-900,-900,-900,-900,-900,   -19, -13,  -7,  -1,   4,   9,  15,  20,
52   22,  23,  22,  19,  18,  18,  16,  13,     9,   7,   3,   1,  -1,  -3,  -6,  -8,
53  -10, -13, -16, -19, -21, -24, -28, -32,  -900,-900,-900,-900,-900,-900,-900,-900,
54 -900,-900,-900,-900,-900,-900,-900,-900};
55 double tone_250_60dB_SL[EHMER_MAX]={
56 -900,-900,-900,-900,-900,-900,-900, -10,   -5,  1,  7, 13, 19, 25, 30, 33,  
57   36,  39,  38,  37,  38,  39,  39,  40,   38, 36, 35, 34, 33, 31, 29, 28,
58   28,  28,  25,  20,  14,  10,   5,   0,   -5,-10,-15,-20,-25,-30,-35,-40,  
59 -900,-900,-900,-900,-900,-900,-900,-900};
60 double tone_250_80dB_SL[EHMER_MAX]={
61 -900,-900,-900,-900,-900,-900,-900, -10,   10, 17, 24, 30, 37, 41, 48, 49,  
62   60,  /* minor hack */
63
64        53,  54,  53,  53,  54,  55,  57,   57, 57, 58, 59, 60, 58, 57, 58,
65   59,  58,  57,  54,  52,  50,  49,  47,   46, 47, 46, 44, 43, 42, 41, 40,  
66   38,  32,  27,  22,  17,  11,   6,   0};
67
68 double tone_500_40dB_SL[EHMER_MAX]={
69 -900,-900,-900,-900,-900,-900,-900, -10,   -26, -20, -14,  -8,  -2,   4,  10,  17,
70   23,  16,  12,   9,   6,   3,   0,  -3,    -7, -10, -13, -16, -20, -23, -26, -30,
71 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
72 -900,-900,-900,-900,-900,-900,-900,-900};
73 double tone_500_60dB_SL[EHMER_MAX]={
74 -900,-900,-900,-900,-900,-900,-900,-900,   -18, -12,  -6,   0,   6,  13,  20,  30,
75   39,  34,  31,  29,  29,  27,  24,  21,    18,  16,  13,   8,   6,   3,   1,  -1,
76   -5,  -2,  -5,  -8, -12, -15, -18, -22,  -900,-900,-900,-900,-900,-900,-900,-900,
77 -900,-900,-900,-900,-900,-900,-900,-900};
78 double tone_500_80dB_SL[EHMER_MAX]={
79 -900,-900,-900,-900,-900,-900,-900,-900,  -22,-16,-10,  0, 10, 20, 32, 43,  
80   53,  52,  52,  50,  49,  50,  52,  55,   55, 54, 51, 49, 46, 44, 44, 42,
81   38,  34,  32,  29,  29,  28,  25,  23,   20, 16, 10,  7,  4,  2, -1, -4,  
82   -7, -10, -15, -20, -25, -30, -35, -40};
83 double tone_500_100dB_SL[EHMER_MAX]={
84 -900,-900,-900,-900,-900,-900,-900, -10,   -7,  2, 10, 19, 27, 35, 55, 56,  
85   62,  61,  60,  58,  57,  57,  59,  63,   65, 66, 62, 60, 57, 57, 58, 58,
86   57,  56,  56,  56,  57,  57,  56,  57,   57, 54, 47, 41, 37, 28, 21, 16,  
87   10,   3,  -3,  -8, -13, -18, -23, -28};
88
89 double tone_1000_40dB_SL[EHMER_MAX]={
90 -900,-900,-900,-900,-900,-900,-900,-900,   -55, -40, -30, -20, -10,  0,   9,  20,
91   27,  20,  13,  14,  13,   5,  -1,  -6,   -11, -20, -30,-900,-900,-900,-900,-900,
92 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
93 -900,-900,-900,-900,-900,-900,-900,-900};
94 double tone_1000_60dB_SL[EHMER_MAX]={
95 -900,-900,-900,-900,-900,-900,-900, -43,   -33,-23,-13, -3,  7,  17,  25,  37,  
96   42,  33,  25,  25,  23,  18,  13,   9,     4, -1, -7,-13,-18, -23, -28, -33,
97 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
98 -900,-900,-900,-900,-900,-900,-900,-900};
99 double tone_1000_80dB_SL[EHMER_MAX]={
100 -900,-900,-900,-900,-900,-900,-900, -35,   -25,-14, -4,  6, 16, 27, 33, 50,  
101   59,  57,  47,  41,  40,  43,  47,  48,    47, 42, 39, 37, 37, 36, 35, 32,
102   30,  27,  21,  15,   5,  -2, -10, -18,  -900,-900,-900,-900,-900,-900,-900,-900,
103 -900,-900,-900,-900,-900,-900,-900,-900};
104 double tone_1000_100dB_SL[EHMER_MAX]={
105 -900,-900,-900,-900,-900,-900, -40, -30,   -20,-10,  0, 10, 23, 33, 45, 60,  
106   70,  72,  55,  49,  43,  40,  44,  54,    59, 58, 49, 43, 52, 57, 57, 58,
107   58,  54,  49,  47,  42,  39,  33,  28,    20, 15,  5,  0, -5,-15,-20,-25,  
108 -900,-900,-900,-900,-900,-900,-900,-900};
109
110 double tone_2000_40dB_SL[EHMER_MAX]={
111 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12, -3,   5,  12,  20,
112   24,  21,  14,   5,  -5, -15, -25, -35,  -900,-900,-900,-900,-900,-900,-900,-900,
113 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
114 -900,-900,-900,-900,-900,-900,-900,-900};
115 double tone_2000_60dB_SL[EHMER_MAX]={
116 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,  -2,   8,  19,  31,
117   38,  34,  24,  17,  14,  13,  11,   7,     3,  -2,  -6, -10, -14, -20, -26, -32,
118 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
119 -900,-900,-900,-900,-900,-900,-900,-900};
120 double tone_2000_80dB_SL[EHMER_MAX]={
121 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,  -2,  13,  28,  40,
122   51,  51,  43,  35,  28,  29,  35,  37,    37,  35,  31,  28,  25,  22,  19,  15,
123   11,   8,   6,  2,   -6, -14, -22, -30,  -900,-900,-900,-900,-900,-900,-900,-900,
124 -900,-900,-900,-900,-900,-900,-900,-900};
125 double tone_2000_100dB_SL[EHMER_MAX]={  
126 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -10,   6,  25,  42,  60,
127   66,  60,  53,  43,  35,  31,  34,  47,    58,  51,  43,  45,  54,  59,  59,  56,
128   54,  51,  40,  29,  20,  11,   2,  -8,   -17, -26, -35,-900,-900,-900,-900,-900,
129 -900,-900,-900,-900,-900,-900,-900,-900};
130
131 double tone_4000_40dB_SL[EHMER_MAX]={
132 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,   0,   3,  10,  18,
133   24,  21,  14,   5,  -5, -15, -25, -35,  -900,-900,-900,-900,-900,-900,-900,-900,
134 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
135 -900,-900,-900,-900,-900,-900,-900,-900};
136
137 double tone_4000_60dB_SL[EHMER_MAX]={
138 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,  -2,   8,  19,  31,
139   38,  34,  26,  20,  16,  11,  9,   7,     3,  -2,  -6, -10, -14, -20, -26, -32,
140 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
141 -900,-900,-900,-900,-900,-900,-900,-900};
142
143 double tone_4000_80dB_SL[EHMER_MAX]={
144 -900,-900,-900,-900,-900,-900,-900,-900,   -60, -50, -40, -29, -12,   5,  19,  37,
145   51,  49,  38,  32,  36,  36,  36,  31,    30,  22,  15,   5,  -5, -16, -24, -32,
146 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
147 -900,-900,-900,-900,-900,-900,-900,-900};
148
149 double tone_4000_100dB_SL[EHMER_MAX]={
150  -20, -12,  -8,  -4,   0,   4,   8,  11,    15,  22,  26,  28,  32,  36,  43,  52,
151   65,  61,  45,  41,  48,  49,  40,  30,    45,  30,  20,  10,  0,  -10, -19, -28,
152  -37,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
153 -900,-900,-900,-900,-900,-900,-900,-900};
154
155 double tone_8000_80dB_SL[EHMER_MAX]={
156 -900,-900,-900,-900,-900,-900,-900, -10,    -1,   2,   6,  10,  13,  19,  25,  35,
157   63,  60,  56,  53,  50,  47,  44,  41,    38,  35,  32,  29,  26,  22,  15,   5,
158   -5, -15, -25, -35,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
159 -900,-900,-900,-900,-900,-900,-900,-900};
160
161 double tone_8000_100dB_SL[EHMER_MAX]={
162  -18, -12,  -7,  -3,   0,   2,   6,   9,    12,  19,  22,  21,  19,  21,  40,  40,
163   80,  60,  35,  25,  15,   5,  -5, -15,   -25, -35,-900,-900,-900,-900,-900,-900,
164 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
165 -900,-900,-900,-900,-900,-900,-900,-900};
166
167 double noise_500_60dB_SL[EHMER_MAX]={
168 -900,-900,-900,-900,-900, -20, -11,  -2,     7,  16,  25,  34,  43,  52,  61,  66,
169   69,  68,  58,  50,  44,  38,  32,  28,    25,  24,  20,  18,  17,  12,  10,   8,
170    5,   0,  -5,  -8, -12, -15, -18, -22,  -900,-900,-900,-900,-900,-900,-900,-900,
171 -900,-900,-900,-900,-900,-900,-900,-900};
172
173 double noise_500_80dB_SL[EHMER_MAX]={
174 -900,-900,-900, -20, -10,  -1,   8,  17,    26,  35,  44,  53,  62,  70,  79,  83,
175   85,  85,  81,  77,  74,  71,  68,  63,    61,  59,  56,  55,  54,  52,  48,  47,
176   45,  46,  45,  43,  40,  37,  33,  32,    35,  32,  30,  29,  20,  10,   0, -10,
177  -20, -30,-900,-900,-900,-900,-900,-900};
178
179 double noise_1000_60dB_SL[EHMER_MAX]={
180 -900,-900,-900,-900, -24, -15,  -6,   3,    12,  21,  28,  34,  40,  48,  57,  60,
181   61,  56,  54,  45,  36,  27,  21,  19,    17,  13,  10,   0, -10, -20, -20,-900,
182 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
183 -900,-900,-900,-900,-900,-900,-900,-900};
184
185 double noise_1000_80dB_SL[EHMER_MAX]={
186 -900, -26, -17,  -8,   1,  10,  19,  28,    37,  41,  46,  51,  58,  68,  74,  81,
187   80,  81,  70,  66,  58,  61,  59,  55,    54,  53,  52,  49,  48,  42,  38,  38,
188   39,  34,  30,  27,  20,  10,   0, -10,   -20, -30,-900,-900,-900,-900,-900,-900,
189 -900,-900,-900,-900,-900,-900,-900,-900};
190
191 double noise_2000_60dB_SL[EHMER_MAX]={
192 -900,-900,-900, -34, -25, -16,  -7,   2,    11,  18,  23,  30,  35,  42,  51,  58,
193   58,  57,  50,  40,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
194 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
195 -900,-900,-900,-900,-900,-900,-900,-900};
196
197 double noise_2000_80dB_SL[EHMER_MAX]={
198 -900, -26, -17,  -8,   1,  10,  19,  28,    33,  38,  43,  48,  53,  62,  70,  77,
199   77,  75,  70,  67,  68,  66,  62,  61,    60,  59,  52,  47,  39,  35,  34,  35,
200   35,  33,  30,  27,  20,  10,   0, -10,   -20, -30,-900,-900,-900,-900,-900,-900,
201 -900,-900,-900,-900,-900,-900,-900,-900};
202
203 double noise_4000_60dB_SL[EHMER_MAX]={
204 -900,-900,-900, -34, -25, -16,  -7,   2,    11,  20,  25,  31,  37,  45,  56,  62,
205   64,  61,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
206 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
207 -900,-900,-900,-900,-900,-900,-900,-900};
208
209 double noise_4000_80dB_SL[EHMER_MAX]={
210 -900, -26, -17,  -8,   1,  10,  19,  26,    33,  39,  45,  50,  55,  65,  75,  82,
211   84,  81,  78,  72,  70,  69,  66,  61,    50,  48,  46,  40,  35,  30,  25,  20,
212   15,  10,   5,   0, -10, -20, -30,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
213 -900,-900,-900,-900,-900,-900,-900,-900};
214
215 #endif
216
217