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