blob: e181735de4ff1a27480079e0cd0e07433c37393a
1 | /* |
2 | ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding |
3 | ** Copyright (C) 2003-2005 M. Bakker, Nero AG, http://www.nero.com |
4 | ** |
5 | ** This program is free software; you can redistribute it and/or modify |
6 | ** it under the terms of the GNU General Public License as published by |
7 | ** the Free Software Foundation; either version 2 of the License, or |
8 | ** (at your option) any later version. |
9 | ** |
10 | ** This program is distributed in the hope that it will be useful, |
11 | ** but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | ** GNU General Public License for more details. |
14 | ** |
15 | ** You should have received a copy of the GNU General Public License |
16 | ** along with this program; if not, write to the Free Software |
17 | ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | ** |
19 | ** Any non-GPL usage of this software or parts of this software is strictly |
20 | ** forbidden. |
21 | ** |
22 | ** The "appropriate copyright message" mentioned in section 2c of the GPLv2 |
23 | ** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com" |
24 | ** |
25 | ** Commercial non-GPL licensing of this software is possible. |
26 | ** For more info contact Nero AG through Mpeg4AAClicense@nero.com. |
27 | ** |
28 | ** $Id: hcb_11.h,v 1.5 2007/11/01 12:34:11 menno Exp $ |
29 | **/ |
30 | |
31 | /* 2-step huffman table HCB_11 */ |
32 | |
33 | |
34 | /* 1st step: 5 bits |
35 | * 2^5 = 32 entries |
36 | * |
37 | * Used to find offset into 2nd step table and number of extra bits to get |
38 | */ |
39 | static hcb hcb11_1[] = { |
40 | /* 4 bits */ |
41 | { /* 00000 */ 0, 0 }, |
42 | { /* */ 0, 0 }, |
43 | { /* 00010 */ 1, 0 }, |
44 | { /* */ 1, 0 }, |
45 | |
46 | /* 5 bits */ |
47 | { /* 00100 */ 2, 0 }, |
48 | { /* 00101 */ 3, 0 }, |
49 | { /* 00110 */ 4, 0 }, |
50 | { /* 00111 */ 5, 0 }, |
51 | { /* 01000 */ 6, 0 }, |
52 | { /* 01001 */ 7, 0 }, |
53 | |
54 | /* 6 bits */ |
55 | { /* 01010 */ 8, 1 }, |
56 | { /* 01011 */ 10, 1 }, |
57 | { /* 01100 */ 12, 1 }, |
58 | |
59 | /* 6/7 bits */ |
60 | { /* 01101 */ 14, 2 }, |
61 | |
62 | /* 7 bits */ |
63 | { /* 01110 */ 18, 2 }, |
64 | { /* 01111 */ 22, 2 }, |
65 | { /* 10000 */ 26, 2 }, |
66 | |
67 | /* 7/8 bits */ |
68 | { /* 10001 */ 30, 3 }, |
69 | |
70 | /* 8 bits */ |
71 | { /* 10010 */ 38, 3 }, |
72 | { /* 10011 */ 46, 3 }, |
73 | { /* 10100 */ 54, 3 }, |
74 | { /* 10101 */ 62, 3 }, |
75 | { /* 10110 */ 70, 3 }, |
76 | { /* 10111 */ 78, 3 }, |
77 | |
78 | /* 8/9 bits */ |
79 | { /* 11000 */ 86, 4 }, |
80 | |
81 | /* 9 bits */ |
82 | { /* 11001 */ 102, 4 }, |
83 | { /* 11010 */ 118, 4 }, |
84 | { /* 11011 */ 134, 4 }, |
85 | |
86 | /* 9/10 bits */ |
87 | { /* 11100 */ 150, 5 }, |
88 | |
89 | /* 10 bits */ |
90 | { /* 11101 */ 182, 5 }, |
91 | { /* 11110 */ 214, 5 }, |
92 | |
93 | /* 10/11/12 bits */ |
94 | { /* 11111 */ 246, 7 } |
95 | }; |
96 | |
97 | /* 2nd step table |
98 | * |
99 | * Gives size of codeword and actual data (x,y,v,w) |
100 | */ |
101 | static hcb_2_pair hcb11_2[] = { |
102 | /* 4 */ |
103 | { 4, 0, 0 }, |
104 | { 4, 1, 1 }, |
105 | |
106 | /* 5 */ |
107 | { 5, 16, 16 }, |
108 | { 5, 1, 0 }, |
109 | { 5, 0, 1 }, |
110 | { 5, 2, 1 }, |
111 | { 5, 1, 2 }, |
112 | { 5, 2, 2 }, |
113 | |
114 | /* 6 */ |
115 | { 6, 1, 3 }, |
116 | { 6, 3, 1 }, |
117 | { 6, 3, 2 }, |
118 | { 6, 2, 0 }, |
119 | { 6, 2, 3 }, |
120 | { 6, 0, 2 }, |
121 | |
122 | /* 6/7 */ |
123 | { 6, 3, 3 }, { 6, 3, 3 }, |
124 | { 7, 4, 1 }, |
125 | { 7, 1, 4 }, |
126 | |
127 | /* 7 */ |
128 | { 7, 4, 2 }, |
129 | { 7, 2, 4 }, |
130 | { 7, 4, 3 }, |
131 | { 7, 3, 4 }, |
132 | { 7, 3, 0 }, |
133 | { 7, 0, 3 }, |
134 | { 7, 5, 1 }, |
135 | { 7, 5, 2 }, |
136 | { 7, 2, 5 }, |
137 | { 7, 4, 4 }, |
138 | { 7, 1, 5 }, |
139 | { 7, 5, 3 }, |
140 | |
141 | /* 7/8 */ |
142 | { 7, 3, 5 }, { 7, 3, 5 }, |
143 | { 7, 5, 4 }, { 7, 5, 4 }, |
144 | { 8, 4, 5 }, |
145 | { 8, 6, 2 }, |
146 | { 8, 2, 6 }, |
147 | { 8, 6, 1 }, |
148 | |
149 | /* 8 */ |
150 | { 8, 6, 3 }, |
151 | { 8, 3, 6 }, |
152 | { 8, 1, 6 }, |
153 | { 8, 4, 16 }, |
154 | { 8, 3, 16 }, |
155 | { 8, 16, 5 }, |
156 | { 8, 16, 3 }, |
157 | { 8, 16, 4 }, |
158 | { 8, 6, 4 }, |
159 | { 8, 16, 6 }, |
160 | { 8, 4, 0 }, |
161 | { 8, 4, 6 }, |
162 | { 8, 0, 4 }, |
163 | { 8, 2, 16 }, |
164 | { 8, 5, 5 }, |
165 | { 8, 5, 16 }, |
166 | { 8, 16, 7 }, |
167 | { 8, 16, 2 }, |
168 | { 8, 16, 8 }, |
169 | { 8, 2, 7 }, |
170 | { 8, 7, 2 }, |
171 | { 8, 3, 7 }, |
172 | { 8, 6, 5 }, |
173 | { 8, 5, 6 }, |
174 | { 8, 6, 16 }, |
175 | { 8, 16, 10 }, |
176 | { 8, 7, 3 }, |
177 | { 8, 7, 1 }, |
178 | { 8, 16, 9 }, |
179 | { 8, 7, 16 }, |
180 | { 8, 1, 16 }, |
181 | { 8, 1, 7 }, |
182 | { 8, 4, 7 }, |
183 | { 8, 16, 11 }, |
184 | { 8, 7, 4 }, |
185 | { 8, 16, 12 }, |
186 | { 8, 8, 16 }, |
187 | { 8, 16, 1 }, |
188 | { 8, 6, 6 }, |
189 | { 8, 9, 16 }, |
190 | { 8, 2, 8 }, |
191 | { 8, 5, 7 }, |
192 | { 8, 10, 16 }, |
193 | { 8, 16, 13 }, |
194 | { 8, 8, 3 }, |
195 | { 8, 8, 2 }, |
196 | { 8, 3, 8 }, |
197 | { 8, 5, 0 }, |
198 | |
199 | /* 8/9 */ |
200 | { 8, 16, 14 }, { 8, 16, 14 }, |
201 | { 8, 11, 16 }, { 8, 11, 16 }, |
202 | { 8, 7, 5 }, { 8, 7, 5 }, |
203 | { 8, 4, 8 }, { 8, 4, 8 }, |
204 | { 8, 6, 7 }, { 8, 6, 7 }, |
205 | { 8, 7, 6 }, { 8, 7, 6 }, |
206 | { 8, 0, 5 }, { 8, 0, 5 }, |
207 | { 9, 8, 4 }, |
208 | { 9, 16, 15 }, |
209 | |
210 | /* 9 */ |
211 | { 9, 12, 16 }, |
212 | { 9, 1, 8 }, |
213 | { 9, 8, 1 }, |
214 | { 9, 14, 16 }, |
215 | { 9, 5, 8 }, |
216 | { 9, 13, 16 }, |
217 | { 9, 3, 9 }, |
218 | { 9, 8, 5 }, |
219 | { 9, 7, 7 }, |
220 | { 9, 2, 9 }, |
221 | { 9, 8, 6 }, |
222 | { 9, 9, 2 }, |
223 | { 9, 9, 3 }, |
224 | { 9, 15, 16 }, |
225 | { 9, 4, 9 }, |
226 | { 9, 6, 8 }, |
227 | { 9, 6, 0 }, |
228 | { 9, 9, 4 }, |
229 | { 9, 5, 9 }, |
230 | { 9, 8, 7 }, |
231 | { 9, 7, 8 }, |
232 | { 9, 1, 9 }, |
233 | { 9, 10, 3 }, |
234 | { 9, 0, 6 }, |
235 | { 9, 10, 2 }, |
236 | { 9, 9, 1 }, |
237 | { 9, 9, 5 }, |
238 | { 9, 4, 10 }, |
239 | { 9, 2, 10 }, |
240 | { 9, 9, 6 }, |
241 | { 9, 3, 10 }, |
242 | { 9, 6, 9 }, |
243 | { 9, 10, 4 }, |
244 | { 9, 8, 8 }, |
245 | { 9, 10, 5 }, |
246 | { 9, 9, 7 }, |
247 | { 9, 11, 3 }, |
248 | { 9, 1, 10 }, |
249 | { 9, 7, 0 }, |
250 | { 9, 10, 6 }, |
251 | { 9, 7, 9 }, |
252 | { 9, 3, 11 }, |
253 | { 9, 5, 10 }, |
254 | { 9, 10, 1 }, |
255 | { 9, 4, 11 }, |
256 | { 9, 11, 2 }, |
257 | { 9, 13, 2 }, |
258 | { 9, 6, 10 }, |
259 | |
260 | /* 9/10 */ |
261 | { 9, 13, 3 }, { 9, 13, 3 }, |
262 | { 9, 2, 11 }, { 9, 2, 11 }, |
263 | { 9, 16, 0 }, { 9, 16, 0 }, |
264 | { 9, 5, 11 }, { 9, 5, 11 }, |
265 | { 9, 11, 5 }, { 9, 11, 5 }, |
266 | { 10, 11, 4 }, |
267 | { 10, 9, 8 }, |
268 | { 10, 7, 10 }, |
269 | { 10, 8, 9 }, |
270 | { 10, 0, 16 }, |
271 | { 10, 4, 13 }, |
272 | { 10, 0, 7 }, |
273 | { 10, 3, 13 }, |
274 | { 10, 11, 6 }, |
275 | { 10, 13, 1 }, |
276 | { 10, 13, 4 }, |
277 | { 10, 12, 3 }, |
278 | { 10, 2, 13 }, |
279 | { 10, 13, 5 }, |
280 | { 10, 8, 10 }, |
281 | { 10, 6, 11 }, |
282 | { 10, 10, 8 }, |
283 | { 10, 10, 7 }, |
284 | { 10, 14, 2 }, |
285 | { 10, 12, 4 }, |
286 | { 10, 1, 11 }, |
287 | { 10, 4, 12 }, |
288 | |
289 | /* 10 */ |
290 | { 10, 11, 1 }, |
291 | { 10, 3, 12 }, |
292 | { 10, 1, 13 }, |
293 | { 10, 12, 2 }, |
294 | { 10, 7, 11 }, |
295 | { 10, 3, 14 }, |
296 | { 10, 5, 12 }, |
297 | { 10, 5, 13 }, |
298 | { 10, 14, 4 }, |
299 | { 10, 4, 14 }, |
300 | { 10, 11, 7 }, |
301 | { 10, 14, 3 }, |
302 | { 10, 12, 5 }, |
303 | { 10, 13, 6 }, |
304 | { 10, 12, 6 }, |
305 | { 10, 8, 0 }, |
306 | { 10, 11, 8 }, |
307 | { 10, 2, 12 }, |
308 | { 10, 9, 9 }, |
309 | { 10, 14, 5 }, |
310 | { 10, 6, 13 }, |
311 | { 10, 10, 10 }, |
312 | { 10, 15, 2 }, |
313 | { 10, 8, 11 }, |
314 | { 10, 9, 10 }, |
315 | { 10, 14, 6 }, |
316 | { 10, 10, 9 }, |
317 | { 10, 5, 14 }, |
318 | { 10, 11, 9 }, |
319 | { 10, 14, 1 }, |
320 | { 10, 2, 14 }, |
321 | { 10, 6, 12 }, |
322 | { 10, 1, 12 }, |
323 | { 10, 13, 8 }, |
324 | { 10, 0, 8 }, |
325 | { 10, 13, 7 }, |
326 | { 10, 7, 12 }, |
327 | { 10, 12, 7 }, |
328 | { 10, 7, 13 }, |
329 | { 10, 15, 3 }, |
330 | { 10, 12, 1 }, |
331 | { 10, 6, 14 }, |
332 | { 10, 2, 15 }, |
333 | { 10, 15, 5 }, |
334 | { 10, 15, 4 }, |
335 | { 10, 1, 14 }, |
336 | { 10, 9, 11 }, |
337 | { 10, 4, 15 }, |
338 | { 10, 14, 7 }, |
339 | { 10, 8, 13 }, |
340 | { 10, 13, 9 }, |
341 | { 10, 8, 12 }, |
342 | { 10, 5, 15 }, |
343 | { 10, 3, 15 }, |
344 | { 10, 10, 11 }, |
345 | { 10, 11, 10 }, |
346 | { 10, 12, 8 }, |
347 | { 10, 15, 6 }, |
348 | { 10, 15, 7 }, |
349 | { 10, 8, 14 }, |
350 | { 10, 15, 1 }, |
351 | { 10, 7, 14 }, |
352 | { 10, 9, 0 }, |
353 | { 10, 0, 9 }, |
354 | |
355 | /* 10/11/12 */ |
356 | { 10, 9, 13 }, { 10, 9, 13 }, { 10, 9, 13 }, { 10, 9, 13 }, |
357 | { 10, 9, 12 }, { 10, 9, 12 }, { 10, 9, 12 }, { 10, 9, 12 }, |
358 | { 10, 12, 9 }, { 10, 12, 9 }, { 10, 12, 9 }, { 10, 12, 9 }, |
359 | { 10, 14, 8 }, { 10, 14, 8 }, { 10, 14, 8 }, { 10, 14, 8 }, |
360 | { 10, 10, 13 }, { 10, 10, 13 }, { 10, 10, 13 }, { 10, 10, 13 }, |
361 | { 10, 14, 9 }, { 10, 14, 9 }, { 10, 14, 9 }, { 10, 14, 9 }, |
362 | { 10, 12, 10 }, { 10, 12, 10 }, { 10, 12, 10 }, { 10, 12, 10 }, |
363 | { 10, 6, 15 }, { 10, 6, 15 }, { 10, 6, 15 }, { 10, 6, 15 }, |
364 | { 10, 7, 15 }, { 10, 7, 15 }, { 10, 7, 15 }, { 10, 7, 15 }, |
365 | |
366 | { 11, 9, 14 }, { 11, 9, 14 }, |
367 | { 11, 15, 8 }, { 11, 15, 8 }, |
368 | { 11, 11, 11 }, { 11, 11, 11 }, |
369 | { 11, 11, 14 }, { 11, 11, 14 }, |
370 | { 11, 1, 15 }, { 11, 1, 15 }, |
371 | { 11, 10, 12 }, { 11, 10, 12 }, |
372 | { 11, 10, 14 }, { 11, 10, 14 }, |
373 | { 11, 13, 11 }, { 11, 13, 11 }, |
374 | { 11, 13, 10 }, { 11, 13, 10 }, |
375 | { 11, 11, 13 }, { 11, 11, 13 }, |
376 | { 11, 11, 12 }, { 11, 11, 12 }, |
377 | { 11, 8, 15 }, { 11, 8, 15 }, |
378 | { 11, 14, 11 }, { 11, 14, 11 }, |
379 | { 11, 13, 12 }, { 11, 13, 12 }, |
380 | { 11, 12, 13 }, { 11, 12, 13 }, |
381 | { 11, 15, 9 }, { 11, 15, 9 }, |
382 | { 11, 14, 10 }, { 11, 14, 10 }, |
383 | { 11, 10, 0 }, { 11, 10, 0 }, |
384 | { 11, 12, 11 }, { 11, 12, 11 }, |
385 | { 11, 9, 15 }, { 11, 9, 15 }, |
386 | { 11, 0, 10 }, { 11, 0, 10 }, |
387 | { 11, 12, 12 }, { 11, 12, 12 }, |
388 | { 11, 11, 0 }, { 11, 11, 0 }, |
389 | { 11, 12, 14 }, { 11, 12, 14 }, |
390 | { 11, 10, 15 }, { 11, 10, 15 }, |
391 | { 11, 13, 13 }, { 11, 13, 13 }, |
392 | { 11, 0, 13 }, { 11, 0, 13 }, |
393 | { 11, 14, 12 }, { 11, 14, 12 }, |
394 | { 11, 15, 10 }, { 11, 15, 10 }, |
395 | { 11, 15, 11 }, { 11, 15, 11 }, |
396 | { 11, 11, 15 }, { 11, 11, 15 }, |
397 | { 11, 14, 13 }, { 11, 14, 13 }, |
398 | { 11, 13, 0 }, { 11, 13, 0 }, |
399 | { 11, 0, 11 }, { 11, 0, 11 }, |
400 | { 11, 13, 14 }, { 11, 13, 14 }, |
401 | { 11, 15, 12 }, { 11, 15, 12 }, |
402 | { 11, 15, 13 }, { 11, 15, 13 }, |
403 | { 11, 12, 15 }, { 11, 12, 15 }, |
404 | { 11, 14, 0 }, { 11, 14, 0 }, |
405 | { 11, 14, 14 }, { 11, 14, 14 }, |
406 | { 11, 13, 15 }, { 11, 13, 15 }, |
407 | { 11, 12, 0 }, { 11, 12, 0 }, |
408 | { 11, 14, 15 }, { 11, 14, 15 }, |
409 | { 12, 0, 14 }, |
410 | { 12, 0, 12 }, |
411 | { 12, 15, 14 }, |
412 | { 12, 15, 0 }, |
413 | { 12, 0, 15 }, |
414 | { 12, 15, 15 } |
415 | }; |
416 |