First merge of new psychoacoustics. Have some unused codebooks to
[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.2 2000/05/08 20:49:49 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_250_40dB_SL[EHMER_MAX]={
40 -900,-900,-900,-900,-900,-900,-900,-900,   -19, -13,  -7,  -1,   4,   9,  15,  20,
41   22,  23,  22,  19,  18,  18,  16,  13,     9,   7,   3,   1,  -1,  -3,  -6,  -8,
42  -10, -13, -16, -19, -21, -24, -28, -32,  -900,-900,-900,-900,-900,-900,-900,-900,
43 -900,-900,-900,-900,-900,-900,-900,-900};
44 double tone_250_60dB_SL[EHMER_MAX]={
45 -900,-900,-900,-900,-900,-900,-900, -10,   -5,  1,  7, 13, 19, 25, 30, 33,  
46   36,  39,  38,  37,  38,  39,  39,  40,   38, 36, 35, 34, 33, 31, 29, 28,
47   28,  28,  25,  20,  14,  10,   5,   0,   -5,-10,-15,-20,-25,-30,-35,-40,  
48 -900,-900,-900,-900,-900,-900,-900,-900};
49 double tone_250_80dB_SL[EHMER_MAX]={
50 -900,-900,-900,-900,-900,-900,-900, -10,   10, 17, 24, 30, 37, 41, 48, 49,  
51   50,  53,  54,  53,  53,  54,  55,  57,   57, 57, 58, 59, 60, 58, 57, 58,
52   59,  58,  57,  54,  52,  50,  49,  47,   46, 47, 46, 44, 43, 42, 41, 40,  
53   38,  32,  27,  22,  17,  11,   6,   0};
54
55 double tone_500_40dB_SL[EHMER_MAX]={
56 -900,-900,-900,-900,-900,-900,-900, -10,   -26, -20, -14,  -8,  -2,   4,  10,  17,
57   23,  16,  12,   9,   6,   3,   0,  -3,    -7, -10, -13, -16, -20, -23, -26, -30,
58 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
59 -900,-900,-900,-900,-900,-900,-900,-900};
60 double tone_500_60dB_SL[EHMER_MAX]={
61 -900,-900,-900,-900,-900,-900,-900,-900,   -18, -12,  -6,   0,   6,  13,  20,  30,
62   39,  34,  31,  29,  29,  27,  24,  21,    18,  16,  13,   8,   6,   3,   1,  -1,
63   -5,  -2,  -5,  -8, -12, -15, -18, -22,  -900,-900,-900,-900,-900,-900,-900,-900,
64 -900,-900,-900,-900,-900,-900,-900,-900};
65 double tone_500_80dB_SL[EHMER_MAX]={
66 -900,-900,-900,-900,-900,-900,-900,-900,  -22,-16,-10,  0, 10, 20, 32, 43,  
67   53,  52,  52,  50,  49,  50,  52,  55,   55, 54, 51, 49, 46, 44, 44, 42,
68   38,  34,  32,  29,  29,  28,  25,  23,   20, 16, 10,  7,  4,  2, -1, -4,  
69   -7, -10, -15, -20, -25, -30, -35, -40};
70 double tone_500_100dB_SL[EHMER_MAX]={
71 -900,-900,-900,-900,-900,-900,-900, -10,   -7,  2, 10, 19, 27, 35, 55, 56,  
72   62,  61,  60,  58,  57,  57,  59,  63,   65, 66, 62, 60, 57, 57, 58, 58,
73   57,  56,  56,  56,  57,  57,  56,  57,   57, 54, 47, 41, 37, 28, 21, 16,  
74   10,   3,  -3,  -8, -13, -18, -23, -28};
75
76 double tone_1000_40dB_SL[EHMER_MAX]={
77 -900,-900,-900,-900,-900,-900,-900,-900,   -55, -40, -30, -20, -10,  0,   9,  20,
78   27,  20,  13,  14,  13,   5,  -1,  -6,   -11, -20, -30,-900,-900,-900,-900,-900,
79 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
80 -900,-900,-900,-900,-900,-900,-900,-900};
81 double tone_1000_60dB_SL[EHMER_MAX]={
82 -900,-900,-900,-900,-900,-900,-900, -43,   -33,-23,-13, -3,  7,  17,  25,  37,  
83   42,  33,  25,  25,  23,  18,  13,   9,     4, -1, -7,-13,-18, -23, -28, -33,
84 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
85 -900,-900,-900,-900,-900,-900,-900,-900};
86 double tone_1000_80dB_SL[EHMER_MAX]={
87 -900,-900,-900,-900,-900,-900,-900, -35,   -25,-14, -4,  6, 16, 27, 33, 50,  
88   59,  57,  47,  41,  40,  43,  47,  48,    47, 42, 39, 37, 37, 36, 35, 32,
89   30,  27,  21,  15,   5,  -2, -10, -18,  -900,-900,-900,-900,-900,-900,-900,-900,
90 -900,-900,-900,-900,-900,-900,-900,-900};
91 double tone_1000_100dB_SL[EHMER_MAX]={
92 -900,-900,-900,-900,-900,-900, -40, -30,   -20,-10,  0, 10, 23, 33, 45, 60,  
93   70,  72,  55,  49,  43,  40,  44,  54,    59, 58, 49, 43, 52, 57, 57, 58,
94   58,  54,  49,  47,  42,  39,  33,  28,    20, 15,  5,  0, -5,-15,-20,-25,  
95 -900,-900,-900,-900,-900,-900,-900,-900};
96
97 double tone_2000_40dB_SL[EHMER_MAX]={
98 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12, -3,   5,  12,  20,
99   24,  21,  14,   5,  -5, -15, -25, -35,  -900,-900,-900,-900,-900,-900,-900,-900,
100 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
101 -900,-900,-900,-900,-900,-900,-900,-900};
102 double tone_2000_60dB_SL[EHMER_MAX]={
103 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,  -2,   8,  19,  31,
104   38,  34,  24,  17,  14,  13,  11,   7,     3,  -2,  -6, -10, -14, -20, -26, -32,
105 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
106 -900,-900,-900,-900,-900,-900,-900,-900};
107 double tone_2000_80dB_SL[EHMER_MAX]={
108 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,  -2,  13,  28,  40,
109   51,  51,  43,  35,  28,  29,  35,  37,    37,  35,  31,  28,  25,  22,  19,  15,
110   11,   8,   6,  2,   -6, -14, -22, -30,  -900,-900,-900,-900,-900,-900,-900,-900,
111 -900,-900,-900,-900,-900,-900,-900,-900};
112 double tone_2000_100dB_SL[EHMER_MAX]={  
113 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -10,   6,  25,  42,  60,
114   66,  60,  53,  43,  35,  31,  34,  47,    58,  51,  43,  45,  54,  59,  59,  56,
115   54,  51,  40,  29,  20,  11,   2,  -8,   -17, -26, -35,-900,-900,-900,-900,-900,
116 -900,-900,-900,-900,-900,-900,-900,-900};
117
118 double tone_4000_40dB_SL[EHMER_MAX]={
119 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,   0,   3,  10,  18,
120   24,  21,  14,   5,  -5, -15, -25, -35,  -900,-900,-900,-900,-900,-900,-900,-900,
121 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
122 -900,-900,-900,-900,-900,-900,-900,-900};
123
124 double tone_4000_60dB_SL[EHMER_MAX]={
125 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,  -2,   8,  19,  31,
126   38,  34,  26,  20,  16,  11,  9,   7,     3,  -2,  -6, -10, -14, -20, -26, -32,
127 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
128 -900,-900,-900,-900,-900,-900,-900,-900};
129
130 double tone_4000_80dB_SL[EHMER_MAX]={
131 -900,-900,-900,-900,-900,-900,-900,-900,   -60, -50, -40, -29, -12,   5,  19,  37,
132   51,  49,  38,  32,  36,  36,  36,  31,    30,  22,  15,   5,  -5, -16, -24, -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
136 double tone_4000_100dB_SL[EHMER_MAX]={
137  -20, -12,  -8,  -4,   0,   4,   8,  11,    15,  22,  26,  28,  32,  36,  43,  52,
138   65,  61,  45,  41,  48,  49,  40,  30,    45,  30,  20,  10,  0,  -10, -19, -28,
139  -37,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
140 -900,-900,-900,-900,-900,-900,-900,-900};
141
142 double tone_8000_60dB_SL[EHMER_MAX]={
143 -900,-900,-900,-900,-900,-900,-900,-900,   -40, -30, -21, -12,  -5,   0,  15,  35,
144   43,  40,  37,  36,  33,  30,  27,  24,    21,  18,  15,  12,  9,   5,  -5, -15,
145  -25, -35,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
146 -900,-900,-900,-900,-900,-900,-900,-900};
147
148 double tone_8000_80dB_SL[EHMER_MAX]={
149 -900,-900,-900,-900,-900,-900,-900, -10,    -1,   2,   6,  10,  13,  19,  25,  35,
150   63,  60,  56,  53,  50,  47,  44,  41,    38,  35,  32,  29,  26,  22,  15,   5,
151   -5, -15, -25, -35,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
152 -900,-900,-900,-900,-900,-900,-900,-900};
153
154 double tone_8000_100dB_SL[EHMER_MAX]={
155  -18, -12,  -7,  -3,   0,   2,   6,   9,    12,  19,  22,  21,  19,  21,  40,  40,
156   80,  60,  35,  25,  15,   5,  -5, -15,   -25, -35,-900,-900,-900,-900,-900,-900,
157 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
158 -900,-900,-900,-900,-900,-900,-900,-900};
159
160 double noise_500_60dB_SL[EHMER_MAX]={
161 -900,-900,-900,-900,-900, -20, -11,  -2,     7,  16,  25,  34,  43,  52,  61,  66,
162   69,  68,  58,  50,  44,  38,  32,  28,    25,  24,  20,  18,  17,  12,  10,   8,
163    5,   0,  -5,  -8, -12, -15, -18, -22,  -900,-900,-900,-900,-900,-900,-900,-900,
164 -900,-900,-900,-900,-900,-900,-900,-900};
165
166 double noise_500_80dB_SL[EHMER_MAX]={
167 -900,-900,-900, -20, -10,  -1,   8,  17,    26,  35,  44,  53,  62,  70,  79,  83,
168   85,  85,  81,  77,  74,  71,  68,  63,    61,  59,  56,  55,  54,  52,  48,  47,
169   45,  46,  45,  43,  40,  37,  33,  32,    35,  32,  30,  29,  20,  10,   0, -10,
170  -20, -30,-900,-900,-900,-900,-900,-900};
171
172 double noise_1000_60dB_SL[EHMER_MAX]={
173 -900,-900,-900,-900, -24, -15,  -6,   3,    12,  21,  28,  34,  40,  48,  57,  60,
174   61,  56,  54,  45,  36,  27,  21,  19,    17,  13,  10,   0, -10, -20, -20,-900,
175 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
176 -900,-900,-900,-900,-900,-900,-900,-900};
177
178 double noise_1000_80dB_SL[EHMER_MAX]={
179 -900, -26, -17,  -8,   1,  10,  19,  28,    37,  41,  46,  51,  58,  68,  74,  81,
180   80,  81,  70,  66,  58,  61,  59,  55,    54,  53,  52,  49,  48,  42,  38,  38,
181   39,  34,  30,  27,  20,  10,   0, -10,   -20, -30,-900,-900,-900,-900,-900,-900,
182 -900,-900,-900,-900,-900,-900,-900,-900};
183
184 double noise_2000_60dB_SL[EHMER_MAX]={
185 -900,-900,-900, -34, -25, -16,  -7,   2,    11,  18,  23,  30,  35,  42,  51,  58,
186   58,  57,  50,  40,  30,  21,  15,  10,     0, -10, -20, -30,-900,-900,-900,-900,
187 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
188 -900,-900,-900,-900,-900,-900,-900,-900};
189
190 double noise_2000_80dB_SL[EHMER_MAX]={
191 -900, -26, -17,  -8,   1,  10,  19,  28,    33,  38,  43,  48,  53,  62,  70,  77,
192   77,  75,  70,  67,  68,  66,  62,  61,    60,  59,  52,  47,  39,  35,  34,  35,
193   35,  33,  30,  27,  20,  10,   0, -10,   -20, -30,-900,-900,-900,-900,-900,-900,
194 -900,-900,-900,-900,-900,-900,-900,-900};
195
196 double noise_4000_60dB_SL[EHMER_MAX]={
197 -900,-900,-900, -34, -25, -16,  -7,   2,    11,  20,  25,  31,  37,  45,  56,  62,
198   64,  61,  50,  35,  25,  15,   5,  -5,    -15 -25, -35,-900,-900,-900,-900,-900,
199 -900,-900,-900,-900,-900,-900,-900,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
200 -900,-900,-900,-900,-900,-900,-900,-900};
201
202 double noise_4000_80dB_SL[EHMER_MAX]={
203 -900, -26, -17,  -8,   1,  10,  19,  26,    33,  39,  45,  50,  55,  65,  75,  82,
204   84,  81,  78,  72,  70,  69,  66,  61,    50,  48,  46,  40,  35,  30,  25,  20,
205   15,  10,   5,   0, -10, -20, -30,-900,  -900,-900,-900,-900,-900,-900,-900,-900,
206 -900,-900,-900,-900,-900,-900,-900,-900};
207
208 #endif
209
210