Add modes Dc and Ec
[platform/upstream/libvorbis.git] / lib / modes / mode_E.h
1 /********************************************************************
2  *                                                                  *
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.       *
7  *                                                                  *
8  * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
9  * by the XIPHOPHORUS Company http://www.xiph.org/                  *
10
11  ********************************************************************
12
13  function: predefined encoding modes
14  last mod: $Id: mode_E.h,v 1.15 2001/08/13 01:37:14 xiphmont Exp $
15
16  ********************************************************************/
17
18 #ifndef _V_MODES_E_H_
19 #define _V_MODES_E_H_
20
21 #include <stdio.h>
22 #include "vorbis/codec.h"
23 #include "backends.h"
24
25 #include "books/line0_class1.vqh"
26 #include "books/line0_class2.vqh"
27 #include "books/line1_class0.vqh"
28 #include "books/line1_class1.vqh"
29 #include "books/line1_class2.vqh"
30 #include "books/line1_class3.vqh"
31
32 #include "books/line0_0sub0.vqh"
33 #include "books/line0_1sub1.vqh"
34 #include "books/line0_1sub2.vqh"
35 #include "books/line0_1sub3.vqh"
36 #include "books/line0_2sub1.vqh"
37 #include "books/line0_2sub2.vqh"
38 #include "books/line0_2sub3.vqh"
39
40 #include "books/line1_0sub0.vqh"
41 #include "books/line1_0sub1.vqh"
42 #include "books/line1_1sub0.vqh"
43 #include "books/line1_1sub1.vqh"
44 #include "books/line1_2sub1.vqh"
45 #include "books/line1_2sub2.vqh"
46 #include "books/line1_2sub3.vqh"
47 #include "books/line1_3sub1.vqh"
48 #include "books/line1_3sub2.vqh"
49 #include "books/line1_3sub3.vqh"
50
51 #include "books/res0_128_128aux.vqh"
52 #include "books/res0_128_1024aux.vqh"
53
54 #include "books/res0_128_1024_1.vqh"
55 #include "books/res0_128_1024_2.vqh"
56 #include "books/res0_128_1024_3.vqh"
57 #include "books/res0_128_1024_4.vqh"
58 #include "books/res0_128_1024_5.vqh"
59 #include "books/res0_128_1024_6.vqh"
60 #include "books/res0_128_1024_7.vqh"
61 #include "books/res0_128_1024_8.vqh"
62 #include "books/res0_128_1024_8a.vqh"
63 #include "books/res0_128_1024_9.vqh"
64 #include "books/res0_128_1024_9a.vqh"
65 #include "books/res0_128_1024_9b.vqh"
66
67
68 static vorbis_info_psy_global _psy_set_EG={
69   0, /* decaydBpms */
70   8,   /* lines per eighth octave */
71   
72   /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
73   256, {26.f,26.f,26.f,30.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f,
74   -6.f, 
75   
76   0,
77 };
78
79 static struct vp_couple_pass _psy_passE[]={
80   {1.f,1.f,
81    {{9999,  0,0,      0,0,      0,0}}
82   },
83 };
84
85 static vp_attenblock _vp_tonemask_E={
86   {{-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*63*/
87   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*88*/
88   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*125*/
89   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*175*/
90   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*250*/
91   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*350*/
92   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*500*/
93   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*700*/
94
95   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*1k*/
96   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, 
97   {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, /*2k*/
98   {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, 
99   {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, /*4k*/
100   {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, /*8000*/
101   
102   {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, /*8000*/
103   {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, 
104   {-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f,-9e9f}, 
105 }};
106
107 static vp_attenblock _vp_peakatt_E={
108   {
109     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*63*/
110     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
111     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*125*/
112     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
113     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*250*/
114     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
115     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*500*/
116     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
117     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*1k*/
118     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
119     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*2k*/
120     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
121     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*4k*/
122     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
123     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*8k*/
124     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},
125     {-14.f,-20.f,-24.f,-26.f,-32.f,-34.f,-36.f,-38.f,-40.f,-40.f,-40.f},/*16k*/
126   }};
127
128 static vorbis_info_psy _psy_set_E0={
129   ATH_Bark_dB_lineconservative,
130
131   -110.,
132   -140.,
133
134   /* tonemaskp */
135   -6.f, -50.f, &_vp_tonemask_E,
136
137   /* peakattp */
138   0, &_vp_peakatt_E,
139
140   /*noisemaskp */
141   1,-30.f,     /* suppress any noise curve over maxspec+n */
142   .6f, .6f,   /* low/high window */
143   5, 5, 10,
144
145   /*63     125     250     500      1k      2k      4k       8k     16k*/
146   {-30,-30,-30,-30,-30,-30,-20,-10,-10,-10,-10,-10,-6,-6,-6,-6,-6},
147   {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.4f,.4f,.5f,.5f,.5f,.5f,.6f},
148
149   105.f,  /* even decade + 5 is important; saves an rint() later in a
150             tight loop) */
151   1,
152   _psy_passE
153 };
154
155 static vorbis_info_psy _psy_set_E={
156   ATH_Bark_dB_lineconservative,
157
158   -110.f,
159   -140.f,
160
161   /* tonemask */
162   -6.f,-50.f,&_vp_tonemask_E,
163   /* peakattp */
164   0,  &_vp_peakatt_E,
165
166   /*noisemaskp */
167   1,  -30.f,     /* suppress any noise curve over maxspec+n */
168       .4f,.4f,   /* low/high window */
169       10,10,100,
170
171   /*63     125     250     500      1k      2k      4k       8k     16k*/
172   {-30,-30,-30,-30,-30,-30,-30,-20,-10,-12,-16,-16, -10, -6, -6, -6, -6},
173   {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.4f,.4f,.4f,.4f,.4f,.5f,.5f,.6f},
174
175   105.f,  /* even decade + 5 is important; saves an rint() later in a
176             tight loop) */
177   1,_psy_passE
178 };
179
180 /* with GNUisms, this could be short and readable. Oh well */
181 static vorbis_info_time0 _time_set0E={0};
182 /*static vorbis_info_floor0 _floor_set0B={9, 44100,  64, 10,130, 2, {0,1},
183   0.246f, .387f};*/
184 /*static vorbis_info_floor0 _floor_set1B={30, 44100, 256, 12,150, 2, {2,3}, 
185   .082f, .126f};*/
186
187 static vorbis_info_floor1 _floor_set0E={6,
188                                         {0,1,1,1,2,2},
189                                         
190                                         {4,3,3},
191                                         {0,2,2},
192                                         {-1,0,1},
193                                         {{2},{-1,3,4,5},{-1,6,7,8}},
194
195                                         4,
196
197                                         {0,128,  
198
199                                          6,17,30,58,
200                                          
201                                          2,1,4, 11,8,14, 23,20,26,
202                                          41,35,48, 84,69,103},
203
204                                         60,30,500,
205                                         999,999,1,18.,
206                                         8,70,
207                                         128};
208
209 static vorbis_info_floor1 _floor_set1E={10,
210                                         {0,1,2,2,2,2,2, 3,3,3},
211                                         
212                                         {3,4,3,3},
213                                         {1,1,2,2},
214                                         {9,10,11,12},
215                                         {{13,14},
216                                          {15,16},
217                                          {-1,17,18,19},
218                                          {-1,20,21,22},
219                                         },
220
221                                         2,
222                                         {0,1024,
223
224                                          88,31,243,
225
226                                          14,54,143,460,
227                                          
228                                          6,3,10, 22,18,26, 41,36,47, 
229                                          69,61,78, 112,99,126, 185,162,211,  
230                                          329,282,387, 672,553,825
231                                          },
232                                         
233                                         60,30,300,
234                                         20,8,1,18.,
235                                         20,600,
236                                         1024};
237
238 static vorbis_info_residue0 _residue_set0E={0,256,16,10,23,
239                                             {0,1,1,1,1,1,1,1,3,7},
240                                             {25,
241                                              26,
242                                              27,
243                                              28,
244                                              29,
245                                              30,
246                                              31,32,
247                                              33,34,
248                                              35,36},
249                                             {9999,
250                                              9999,
251                                              9999,
252                                              9999,
253                                              40,9999,
254                                              58,9999,
255                                              9999,9999},
256                                             {.5f,
257                                              1.5f,
258                                              2.5f,
259                                              4.5f,
260                                              7.5f,7.5f,
261                                              16.5f,16.5,
262                                              84.5f},
263                                             {0},
264                                             {99,
265                                              99,
266                                              99,
267                                              99,
268                                              99,99,
269                                              99,99,
270                                              99,99},
271                                             {3}};
272
273 static vorbis_info_residue0 _residue_set1E={0,2048, 32,10,24,
274                                             {0,1,1,1,1,1,1,1,3,7},
275                                             {25,
276                                              26,
277                                              27,
278                                              28,
279                                              29,
280                                              30,
281                                              31,
282                                              32,33,
283                                              34,35,36},
284                                             {9999,
285                                              9999,
286                                              9999,
287                                              9999,
288                                              70,9999,
289                                              110,9999,
290                                              9999,9999},
291                                             {.5f,
292                                              1.5f,
293                                              2.5f,
294                                              4.5f,
295                                              7.5,7.5,
296                                              16.5f,16.5,
297                                              84.f},
298                                             {0},
299                                             {99,
300                                              99,
301                                              99,
302                                              99,
303                                              99,99,
304                                              99,99,
305                                              99,99},
306                                             {3}};
307
308 static vorbis_info_mapping0 _mapping_set0E={1, {0,0}, {0}, {0}, {0}, {0,0},
309                                             1,{0},{1}};
310 static vorbis_info_mapping0 _mapping_set1E={1, {0,0}, {0}, {1}, {1}, {1,1},
311                                             1,{0},{1}};
312 static vorbis_info_mode _mode_set0E={0,0,0,0};
313 static vorbis_info_mode _mode_set1E={1,0,0,1};
314
315 /* CD quality stereo, losslesschannel coupling */
316 codec_setup_info info_E={
317
318   /* smallblock, largeblock */
319   {256, 2048}, 
320   /* modes,maps,times,floors,residues,books,psys */
321   2,          2,    1,     2,       2,   37,   2,
322   /* modes */
323   {&_mode_set0E,&_mode_set1E},
324   /* maps */
325   {0,0},{&_mapping_set0E,&_mapping_set1E},
326   /* times */
327   {0,0},{&_time_set0E},
328   /* floors */
329   {1,1},{&_floor_set0E,&_floor_set1E},
330   /* residue */
331   {2,2},{&_residue_set0E,&_residue_set1E},
332   /* books */
333     
334   {  
335    &_huff_book_line0_class1,
336    &_huff_book_line0_class2, /* 1 */
337    
338    &_huff_book_line0_0sub0,  /* 2 */
339    &_huff_book_line0_1sub1,  /* 3 */
340    &_huff_book_line0_1sub2,
341    &_huff_book_line0_1sub3,  /* 5 */
342    &_huff_book_line0_2sub1,
343    &_huff_book_line0_2sub2,  /* 7 */
344    &_huff_book_line0_2sub3, 
345
346    &_huff_book_line1_class0,
347    &_huff_book_line1_class1, /* 10 */
348    &_huff_book_line1_class2,
349    &_huff_book_line1_class3, /* 12 */
350
351    &_huff_book_line1_0sub0,
352    &_huff_book_line1_0sub1, /* 14 */
353    &_huff_book_line1_1sub0, 
354    &_huff_book_line1_1sub1,
355    &_huff_book_line1_2sub1,  
356    &_huff_book_line1_2sub2, /* 18 */
357    &_huff_book_line1_2sub3, 
358    &_huff_book_line1_3sub1,
359    &_huff_book_line1_3sub2,
360    &_huff_book_line1_3sub3, /* 22 */
361
362    &_huff_book_res0_128_128aux, 
363    &_huff_book_res0_128_1024aux,
364
365    &_vq_book_res0_128_1024_1,
366    &_vq_book_res0_128_1024_2,
367    &_vq_book_res0_128_1024_3,
368    &_vq_book_res0_128_1024_4,
369    &_vq_book_res0_128_1024_5,
370    &_vq_book_res0_128_1024_6,
371    &_vq_book_res0_128_1024_7,
372    &_vq_book_res0_128_1024_8,
373    &_vq_book_res0_128_1024_8a,
374    &_vq_book_res0_128_1024_9,
375    &_vq_book_res0_128_1024_9a,
376    &_vq_book_res0_128_1024_9b,
377
378   },
379   /* psy */
380   {&_psy_set_E0,&_psy_set_E},
381   &_psy_set_EG
382 };
383
384 #endif