Add modes Dc and Ec
[platform/upstream/libvorbis.git] / lib / modes / mode_C.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_C.h,v 1.15 2001/08/13 01:37:14 xiphmont Exp $
15
16  ********************************************************************/
17
18 #ifndef _V_MODES_C_H_
19 #define _V_MODES_C_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_CG={
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_passC0[]={
80   {1.f,1.f,
81     {{24,      0,0,       0,0,      0,0},
82      {9999,  4.5,0,      0,12,      0,0}}
83   },
84 };
85
86 static vp_couple_pass _psy_passC[]={
87   {1.f,1.f,
88     {{512,   0,0,       0,0,      0,0},
89      {9999, 4.5,0,     0,12,  0,0}}
90   }
91 };
92
93 static vp_attenblock _vp_tonemask_consbass_C={
94   {{-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*63*/
95   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*88*/
96   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*125*/
97   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*175*/
98   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*250*/
99   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*350*/
100   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*500*/
101   {-40.f,-40.f,-40.f,-45.f,-55.f,-65.f,-75.f,-85.f,-95.f,-105.f,-115.f}, /*700*/
102   
103   {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
104   {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1400*/
105   {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2000*/
106   {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2800*/
107   {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/
108   {-35.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*5600*/
109   
110   {-30.f,-30.f,-33.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*8000*/
111   {-30.f,-30.f,-33.f,-35.f,-35.f,-45.f,-50.f,-60.f,-70.f,-90.f,-100.f}, /*11500*/
112   {-24.f,-24.f,-26.f,-32.f,-32.f,-42.f,-50.f,-60.f,-70.f,-90.f,-100.f}, /*16000*/
113 }};
114
115 static vp_attenblock _vp_tonemask_C={
116
117   {{-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*63*/
118   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*88*/
119   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*125*/
120   
121   
122   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*175*/
123   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*250*/
124   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*350*/
125   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*500*/
126   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*700*/
127   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
128   {-30.f,-30.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1400*/
129   {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2000*/
130   {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2800*/
131   {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/
132   
133   {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*5600*/
134   
135   {-30.f,-30.f,-33.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*8000*/
136   {-30.f,-30.f,-33.f,-35.f,-40.f,-45.f,-50.f,-60.f,-70.f,-85.f,-100.f}, /*11500*/
137   {-24.f,-24.f,-26.f,-32.f,-32.f,-42.f,-50.f,-60.f,-70.f,-85.f,-100.f}, /*16000*/
138 }};
139
140
141 static vp_attenblock _vp_peakatt_C={
142   {{-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*63*/
143   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*88*/
144   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*125*/
145   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*175*/
146   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*250*/
147   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*350*/
148   {-14.f,-20.f,-20.f,-20.f,-26.f,-32.f,-32.f,-32.f,-32.f,-32.f,-40.f},/*500*/
149   {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*700*/
150   {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*1000*/
151   {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*1400*/
152   {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*2000*/
153   {-10.f,-10.f,-10.f,-14.f,-20.f,-20.f,-20.f,-24.f,-26.f,-32.f,-40.f},/*2800*/
154   {-10.f,-10.f,-10.f,-10.f,-18.f,-20.f,-20.f,-22.f,-24.f,-32.f,-40.f},/*4000*/
155   {-10.f,-10.f,-10.f,-10.f,-12.f,-14.f,-16.f,-18.f,-22.f,-32.f,-40.f},/*5600*/
156   {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-32.f,-40.f},/*8000*/
157   {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-22.f,-32.f,-40.f},/*11500*/
158   {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-20.f,-32.f,-40.f},/*16000*/
159 }};
160
161 static vorbis_info_psy _psy_set_C0={
162   ATH_Bark_dB_lineaggressive,
163
164   -100.,
165   -140.,
166
167   /* tonemask */
168   -3.f, -45.f, &_vp_tonemask_consbass_C,
169
170   /* peakattp */
171   0, &_vp_peakatt_C,
172
173   /*noisemaskp */
174   1,-30.f,     /* suppress any noise curve over maxspec+n */
175   .6f, .6f,   /* low/high window */
176   5, 5, 10,
177
178   /*63     125     250     500      1k      2k      4k       8k     16k*/
179   {-30,-30,-30,-30,-30,-30,-20,-10,  0,  0,  0,  0,  0,  0,  0,  0,  0},
180   {.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.5f,.6f,.7f,.8f,.8f},
181
182   105.f,  /* even decade + 5 is important; saves an rint() later in a
183             tight loop) */
184   1,
185   _psy_passC0
186 };
187
188 static vorbis_info_psy _psy_set_C={
189   ATH_Bark_dB_lineaggressive,
190
191   -100.f,
192   -140.f,
193
194   /* tonemask */
195   -6.f,-45.f,&_vp_tonemask_consbass_C,
196   /* peakattp */
197   0,  &_vp_peakatt_C,
198
199   /*noisemaskp */
200   1,  -30.f,     /* suppress any noise curve over maxspec+n */
201       .4f,.4f,   /* low/high window */
202       10,10,100,
203
204   /*63     125     250     500      1k      2k      4k       8k     16k*/
205   {  0,  0,  0,  0,  0,  0,  0,  0, -6, -6, -6, -6,  0,   0,  0,  0,  0},
206   {.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.5f,.6f,.7f,.7f},
207
208   105.f,  /* even decade + 5 is important; saves an rint() later in a
209             tight loop) */
210   1,_psy_passC
211 };
212
213 static vorbis_info_psy _psy_set_CT={
214   ATH_Bark_dB_lineaggressive,
215
216   -100.f,
217   -140.f,
218
219   /* tonemask */
220   -6.f,-45.f,&_vp_tonemask_consbass_C,
221   /* peakattp */
222   0,  &_vp_peakatt_C,
223
224   /*noisemaskp */
225   1,  -30.f,     /* suppress any noise curve over maxspec+n */
226       .4f,.4f,   /* low/high window */
227       10,10,100,
228
229   /*63     125     250     500      1k      2k      4k       8k     16k*/
230   {-30,-30,-30,-30,-30,-30,-30,-20, -6, -6, -6, -6,  0,   0,  0,  0,  0},
231   {.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.4f,.5f,.6f,.7f,.7f},
232
233   105.f,  /* even decade + 5 is important; saves an rint() later in a
234             tight loop) */
235   1,_psy_passC
236 };
237
238 /* with GNUisms, this could be short and readable. Oh well */
239 static vorbis_info_time0 _time_set0C={0};
240
241 static vorbis_info_floor1 _floor_set0C={6,
242                                         {0,1,1,1,2,2},
243                                         
244                                         {4,3,3},
245                                         {0,2,2},
246                                         {-1,0,1},
247                                         {{2},{-1,3,4,5},{-1,6,7,8}},
248
249                                         4,
250
251                                         {0,128,  
252
253                                          6,17,30,58,
254                                          
255                                          2,1,4, 11,8,14, 23,20,26,
256                                          41,35,48, 84,69,103},
257
258                                         60,30,500,
259                                         999,999,1,18.,
260                                         8,70,
261                                         128};
262
263 static vorbis_info_floor1 _floor_set1C={10,
264                                         {0,1,2,2,2,2,2, 3,3,3},
265                                         
266                                         {3,4,3,3},
267                                         {1,1,2,2},
268                                         {9,10,11,12},
269                                         {{13,14},
270                                          {15,16},
271                                          {-1,17,18,19},
272                                          {-1,20,21,22},
273                                         },
274
275                                         2,
276                                         {0,1024,
277
278                                          88,31,243,
279
280                                          14,54,143,460,
281                                          
282                                          6,3,10, 22,18,26, 41,36,47, 
283                                          69,61,78, 112,99,126, 185,162,211,  
284                                          329,282,387, 672,553,825
285                                          },
286                                         
287                                         60,30,300,
288                                         20,8,1,18.,
289                                         20,600,
290                                         1024};
291
292 static vorbis_info_residue0 _residue_set0C={0,256,16,10,23,
293                                             {0,1,1,1,1,1,1,1,3,7},
294                                             {25,
295                                              26,
296                                              27,
297                                              28,
298                                              29,
299                                              30,
300                                              31,32,
301                                              33,34,
302                                              35,36},
303                                             {9999,
304                                              9999,
305                                              12,9999,
306                                              18,9999,
307                                              28,9999,
308                                              9999,9999},
309                                             {.5f,
310                                              1.5f,
311                                              2.5f,2.5f,
312                                              4.5f,4.5,
313                                              16.5f,16.5,
314                                              84.5f},
315                                             {0},
316                                             {99,
317                                              99,
318                                              99,99,
319                                              99,99,
320                                              99,99,
321                                              99,99},
322                                             {3}};
323
324 static vorbis_info_residue0 _residue_set1C={0,2048, 32,10,24,
325                                             {0,1,1,1,1,1,1,1,3,7},
326                                             {25,
327                                              26,
328                                              27,
329                                              28,
330                                              29,
331                                              30,
332                                              31,
333                                              32,33,
334                                              34,35,36},
335                                             {9999,
336                                              9999,
337                                              22,9999,
338                                              34,9999,
339                                              64,999,
340                                              9999,9999},
341                                             {.5f,
342                                              1.5f,
343                                              2.5f,2.5f,
344                                              4.5f,4.5,
345                                              16.5f,16.5,
346                                              84.f},
347                                             {0},
348                                             {99,
349                                              99,
350                                              99,99,
351                                              99,99,
352                                              99,99,
353                                              99,99},
354                                             {3}};
355
356 static vorbis_info_mapping0 _mapping_set0C={1, {0,0}, {0}, {0}, {0}, {0,0},
357                                             1,{0},{1}};
358 static vorbis_info_mapping0 _mapping_set1C={1, {0,0}, {0}, {1}, {1}, {1,2},
359                                             1,{0},{1}};
360 static vorbis_info_mode _mode_set0C={0,0,0,0};
361 static vorbis_info_mode _mode_set1C={1,0,0,1};
362
363 /* CD quality stereo, no channel coupling */
364 codec_setup_info info_C={
365
366   /* smallblock, largeblock */
367   {256, 2048}, 
368   /* modes,maps,times,floors,residues,books,psys */
369   2,          2,    1,     2,       2,   37,   3,
370   /* modes */
371   {&_mode_set0C,&_mode_set1C},
372   /* maps */
373   {0,0},{&_mapping_set0C,&_mapping_set1C},
374   /* times */
375   {0,0},{&_time_set0C},
376   /* floors */
377   {1,1},{&_floor_set0C,&_floor_set1C},
378   /* residue */
379   {2,2},{&_residue_set0C,&_residue_set1C},
380   /* books */
381     
382   {  
383    &_huff_book_line0_class1,
384    &_huff_book_line0_class2, /* 1 */
385    
386    &_huff_book_line0_0sub0,  /* 2 */
387    &_huff_book_line0_1sub1,  /* 3 */
388    &_huff_book_line0_1sub2,
389    &_huff_book_line0_1sub3,  /* 5 */
390    &_huff_book_line0_2sub1,
391    &_huff_book_line0_2sub2,  /* 7 */
392    &_huff_book_line0_2sub3, 
393
394    &_huff_book_line1_class0,
395    &_huff_book_line1_class1, /* 10 */
396    &_huff_book_line1_class2,
397    &_huff_book_line1_class3, /* 12 */
398
399    &_huff_book_line1_0sub0,
400    &_huff_book_line1_0sub1, /* 14 */
401    &_huff_book_line1_1sub0, 
402    &_huff_book_line1_1sub1,
403    &_huff_book_line1_2sub1,  
404    &_huff_book_line1_2sub2, /* 18 */
405    &_huff_book_line1_2sub3, 
406    &_huff_book_line1_3sub1,
407    &_huff_book_line1_3sub2,
408    &_huff_book_line1_3sub3, /* 22 */
409
410    &_huff_book_res0_128_128aux, 
411    &_huff_book_res0_128_1024aux,
412
413    &_vq_book_res0_128_1024_1,
414    &_vq_book_res0_128_1024_2,
415    &_vq_book_res0_128_1024_3,
416    &_vq_book_res0_128_1024_4,
417    &_vq_book_res0_128_1024_5,
418    &_vq_book_res0_128_1024_6,
419    &_vq_book_res0_128_1024_7,
420    &_vq_book_res0_128_1024_8,
421    &_vq_book_res0_128_1024_8a,
422    &_vq_book_res0_128_1024_9,
423    &_vq_book_res0_128_1024_9a,
424    &_vq_book_res0_128_1024_9b,
425
426   },
427   /* psy */
428   {&_psy_set_C0,&_psy_set_CT,&_psy_set_C},
429   &_psy_set_CG
430 };
431
432 #endif