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