1 /********************************************************************
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. *
8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
9 * by the XIPHOPHORUS Company http://www.xiph.org/ *
11 ********************************************************************
13 function: predefined encoding modes
14 last mod: $Id: mode_AA.h,v 1.12 2001/06/18 09:07:32 xiphmont Exp $
16 ********************************************************************/
18 #ifndef _V_MODES_AA_H_
19 #define _V_MODES_AA_H_
22 #include "vorbis/codec.h"
25 #include "books/lsp9_0.vqh"
26 #include "books/lsp30_0.vqh"
27 #include "books/lsp9_1.vqh"
28 #include "books/lsp30_1.vqh"
30 #include "books/res0_96_128aux.vqh"
31 #include "books/res0_96_1024aux.vqh"
33 #include "books/res0_96_128_1.vqh"
34 #include "books/res0_96_128_2.vqh"
35 #include "books/res0_96_128_3.vqh"
36 #include "books/res0_96_128_4.vqh"
37 #include "books/res0_96_128_5.vqh"
39 #include "books/res0_96_1024_1.vqh"
40 #include "books/res0_96_1024_2.vqh"
41 #include "books/res0_96_1024_3.vqh"
42 #include "books/res0_96_1024_4.vqh"
43 #include "books/res0_96_1024_5.vqh"
44 #include "books/res0_96_1024_6.vqh"
45 #include "books/res0_96_1024_7.vqh"
46 #include "books/res0_96_1024_8.vqh"
47 #include "books/res0_96_1024_9.vqh"
50 static vorbis_info_psy _psy_set_AA0={
51 ATH_Bark_dB_lspconservative,
59 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
60 /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
61 /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
64 /* 0 10 20 30 40 50 60 70 80 90 100 */
66 {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*63*/
67 {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*88*/
68 {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*125*/
69 {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*175*/
70 {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*250*/
71 {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*350*/
72 {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*500*/
73 {-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.,-999.}, /*700*/
75 {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*1000*/
76 {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*1400*/
77 {-40.,-40.,-40.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*2000*/
78 {-40.,-40.,-40.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*2800*/
79 {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*4000*/
80 {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*5600*/
81 {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*8000*/
82 {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*11500*/
83 {-30.,-35.,-35.,-40.,-40.,-50.,-60.,-70.,-80.,-90.,-100.}, /*16000*/
87 {{-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*63*/
88 {-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*88*/
89 {-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*125*/
90 {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*175*/
91 {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*250*/
92 {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*350*/
93 {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*500*/
94 {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-14.f,-20.f,-22.f,-22.f,-22.f},/*700*/
95 {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-14.f,-20.f,-22.f,-22.f,-22.f},/*1000*/
96 {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*1400*/
97 {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*2000*/
98 {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*2400*/
99 {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*4000*/
100 {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-22.f,-22.f},/*5600*/
101 {-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-12.f,-13.f,-22.f,-22.f,-22.f},/*8000*/
102 {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-11.f,-22.f,-22.f,-22.f},/*11500*/
103 {-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-10.f,-20.f,-21.f,-22.f},/*16000*/
107 -0.f, /* suppress any noise curve over maxspec+n */
108 .5f, /* low window */
109 .5f, /* high window */
132 95.f, /* even decade + 5 is important; saves an rint() later in a
137 static vorbis_info_psy _psy_set_AA={
138 ATH_Bark_dB_lspconservative,
146 /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
147 /* x: 63 88 125 175 250 350 500 700 1k 1.4k 2k 2.8k 4k 5.6k 8k 11.5k 16k Hz */
148 /* y: 0 10 20 30 40 50 60 70 80 90 100 dB */
150 /* 0 10 20 30 40 50 60 70 80 90 100 */
152 {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*63*/
153 {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*88*/
154 {-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f,-999.f}, /*125*/
156 {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*175*/
157 {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*250*/
158 {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*350*/
159 {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*500*/
160 {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*700*/
162 {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1000*/
163 {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*1400*/
164 {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2000*/
165 {-40.f,-40.f,-40.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*2800*/
166 {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*4000*/
167 {-30.f,-35.f,-35.f,-40.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*5600*/
169 {-20.f,-25.f,-30.f,-35.f,-40.f,-50.f,-60.f,-70.f,-80.f,-90.f,-100.f}, /*8000*/
170 {-20.f,-25.f,-30.f,-35.f,-35.f,-45.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*11500*/
171 {-20.f,-24.f,-26.f,-32.f,-35.f,-45.f,-50.f,-60.f,-70.f,-80.f,-90.f}, /*16000*/
176 {{-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*63*/
177 {-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*88*/
178 {-14.f,-16.f,-18.f,-19.f,-20.f,-21.f,-22.f,-22.f,-22.f,-22.f,-22.f},/*125*/
179 {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*175*/
180 {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*250*/
181 {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*350*/
182 {-10.f,-10.f,-10.f,-10.f,-16.f,-16.f,-18.f,-20.f,-22.f,-22.f,-22.f},/*500*/
183 {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*700*/
184 {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*1000*/
185 {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*1400*/
186 {-10.f,-10.f,-10.f,-10.f,-14.f,-14.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*2000*/
187 {-10.f,-10.f,-10.f,-12.f,-16.f,-16.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*2400*/
188 {-10.f,-10.f,-10.f,-12.f,-16.f,-16.f,-16.f,-20.f,-22.f,-22.f,-22.f},/*4000*/
189 {-10.f,-10.f,-10.f,-12.f,-12.f,-14.f,-16.f,-18.f,-22.f,-22.f,-22.f},/*5600*/
190 {-10.f,-10.f,-10.f,-10.f,-10.f,-14.f,-16.f,-18.f,-22.f,-22.f,-22.f},/*8000*/
191 {-10.f,-10.f,-10.f,-10.f,-10.f,-14.f,-16.f,-18.f,-22.f,-22.f,-22.f},/*11500*/
192 {-10.f,-10.f,-10.f,-10.f,-10.f,-12.f,-16.f,-18.f,-22.f,-22.f,-22.f},/*16000*/
196 -0.f, /* suppress any noise curve over maxspec+n */
197 .7f, /* low window */
198 .7f, /* high window */
217 .900f, 0.f, /*11500*/
218 .900f, 1.f, /*16000*/
221 95.f, /* even decade + 5 is important; saves an rint() later in a
227 /* with GNUisms, this could be short and readable. Oh well */
228 static vorbis_info_time0 _time_set0AA={0};
229 static vorbis_info_floor0 _floor_set0AA={9, 44100, 64, 10,130, 2, {0,1},
231 static vorbis_info_floor0 _floor_set1AA={30, 44100, 256, 12,150, 2, {2,3},
233 static vorbis_info_residue0 _residue_set0AA={0,192,16,6,4,
237 {0,7,9999,9999,9999},
238 {999.f,2.f,2.f,9.5f,26.f},
242 static vorbis_info_residue0 _residue_set1AA={0, 768, 32,10,5,
243 {0,1,1,1,1,1,1,1,1,1},
244 {11,12,13,14,15,16,17,18,19},
248 {999.f,2.f,2.f,4.f,4.f,
249 9.5f,9.5f,18.f,37.f},
251 {99,99,99,99,99,99,99,99,99}};
253 static vorbis_info_mapping0 _mapping_set0AA={1, {0,0}, {0}, {0}, {0}, {0}};
254 static vorbis_info_mapping0 _mapping_set1AA={1, {0,0}, {0}, {1}, {1}, {1}};
255 static vorbis_info_mode _mode_set0AA={0,0,0,0};
256 static vorbis_info_mode _mode_set1AA={1,0,0,1};
258 /* CD quality stereo, no channel coupling */
259 codec_setup_info info_AA={
261 /* smallblock, largeblock */
263 /* modes,maps,times,floors,residues,books,psys */
264 2, 2, 1, 2, 2, 20, 2,
266 {&_mode_set0AA,&_mode_set1AA},
268 {0,0},{&_mapping_set0AA,&_mapping_set1AA},
270 {0,0},{&_time_set0AA},
272 {0,0},{&_floor_set0AA,&_floor_set1AA},
274 {0,0},{&_residue_set0AA,&_residue_set1AA},
276 {&_vq_book_lsp9_0, /* 0 */
277 &_vq_book_lsp9_1, /* 1 */
278 &_vq_book_lsp30_0, /* 2 */
279 &_vq_book_lsp30_1, /* 3 */
281 &_huff_book_res0_96_128aux,
282 &_huff_book_res0_96_1024aux,
284 &_vq_book_res0_96_128_1,
285 &_vq_book_res0_96_128_2,
286 &_vq_book_res0_96_128_3,
287 &_vq_book_res0_96_128_4,
288 &_vq_book_res0_96_128_5,
290 &_vq_book_res0_96_1024_1,
291 &_vq_book_res0_96_1024_2,
292 &_vq_book_res0_96_1024_3,
293 &_vq_book_res0_96_1024_4,
294 &_vq_book_res0_96_1024_5,
295 &_vq_book_res0_96_1024_6,
296 &_vq_book_res0_96_1024_7,
297 &_vq_book_res0_96_1024_8,
298 &_vq_book_res0_96_1024_9,
302 {&_psy_set_AA0,&_psy_set_AA},
303 /* thresh sample period, preecho clamp trigger threshhold, range, minenergy */
304 256, {30.f,30.f,30.f,34.f}, {-90.f,-90.f,-90.f,-90.f}, -90.f,
311 #define PREDEF_INFO_MAX 0