ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvs/xvidcore/src/bitstream/vlc_codes.h
Revision: 1.13
Committed: Sun Jan 5 16:54:36 2003 UTC (21 years, 9 months ago) by edgomez
Content type: text/plain
Branch: MAIN
Changes since 1.12: +343 -685 lines
Log Message:
Much lighter VLC implementation (saves >6MB)

File Contents

# User Rev Content
1 edgomez 1.7 /*****************************************************************************
2     *
3     * XVID MPEG-4 VIDEO CODEC
4 edgomez 1.13 * - Variable Length Coding tables -
5 edgomez 1.7 *
6 edgomez 1.11 * Copyright(C) 2002 Michael Militzer <isibaar@xvid.org>
7 edgomez 1.7 *
8 edgomez 1.12 * This file is part of XviD, a free MPEG-4 video encoder/decoder
9 edgomez 1.7 *
10 edgomez 1.12 * XviD is free software; you can redistribute it and/or modify it
11     * under the terms of the GNU General Public License as published by
12 edgomez 1.7 * the Free Software Foundation; either version 2 of the License, or
13     * (at your option) any later version.
14     *
15     * This program is distributed in the hope that it will be useful,
16     * but WITHOUT ANY WARRANTY; without even the implied warranty of
17     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18     * GNU General Public License for more details.
19     *
20     * You should have received a copy of the GNU General Public License
21     * along with this program; if not, write to the Free Software
22     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23     *
24 edgomez 1.12 * Under section 8 of the GNU General Public License, the copyright
25     * holders of XVID explicitly forbid distribution in the following
26     * countries:
27     *
28     * - Japan
29     * - United States of America
30     *
31     * Linking XviD statically or dynamically with other modules is making a
32     * combined work based on XviD. Thus, the terms and conditions of the
33     * GNU General Public License cover the whole combination.
34     *
35     * As a special exception, the copyright holders of XviD give you
36     * permission to link XviD with independent modules that communicate with
37     * XviD solely through the VFW1.1 and DShow interfaces, regardless of the
38     * license terms of these independent modules, and to copy and distribute
39     * the resulting combined work under terms of your choice, provided that
40     * every copy of the combined work is accompanied by a complete copy of
41     * the source code of XviD (the version of XviD used to produce the
42     * combined work), being distributed under the terms of the GNU General
43     * Public License plus this exception. An independent module is a module
44     * which is not derived from or based on XviD.
45     *
46     * Note that people who make modified versions of XviD are not obligated
47     * to grant this special exception for their modified versions; it is
48     * their choice whether to do so. The GNU General Public License gives
49     * permission to release a modified version without this exception; this
50     * exception also makes it possible to release a modified version which
51     * carries forward this exception.
52     *
53 edgomez 1.13 * $Id: vlc_codes.h,v 1.12 2002/11/17 00:57:57 edgomez Exp $
54 edgomez 1.7 *
55     ****************************************************************************/
56    
57 Isibaar 1.1 #ifndef _VLC_CODES_H_
58     #define _VLC_CODES_H_
59    
60     #include "../portab.h"
61 Isibaar 1.5 #include "mbcoding.h"
62 Isibaar 1.1
63     #define VLC_ERROR (-1)
64 edgomez 1.13
65     #define ESCAPE 3
66     #define ESCAPE1 6
67     #define ESCAPE2 14
68     #define ESCAPE3 15
69 Isibaar 1.1
70 edgomez 1.7 /*****************************************************************************
71     * The Vector Length Coding structure
72     ****************************************************************************/
73    
74 Isibaar 1.1 typedef struct
75     {
76     uint32_t code;
77 edgomez 1.13 uint8_t len;
78 edgomez 1.6 }
79     VLC;
80 Isibaar 1.1
81 edgomez 1.13 typedef struct
82     {
83     uint8_t last;
84     uint8_t run;
85     int8_t level;
86     }
87     EVENT;
88    
89     typedef struct
90     {
91     uint8_t len;
92     EVENT event;
93     }
94     REVERSE_EVENT;
95    
96     typedef struct
97     {
98     VLC vlc;
99     EVENT event;
100     }
101     VLC_TABLE;
102 Isibaar 1.5
103 Isibaar 1.1
104 edgomez 1.7 /*****************************************************************************
105     * common tables between encoder/decoder
106     ****************************************************************************/
107 Isibaar 1.1
108 edgomez 1.13 static VLC_TABLE const coeff_tab[2][102] =
109     {
110     /* intra = 0 */
111 edgomez 1.7 {
112 edgomez 1.13 {{ 2, 2}, {0, 0, 1}},
113     {{15, 4}, {0, 0, 2}},
114     {{21, 6}, {0, 0, 3}},
115     {{23, 7}, {0, 0, 4}},
116     {{31, 8}, {0, 0, 5}},
117     {{37, 9}, {0, 0, 6}},
118     {{36, 9}, {0, 0, 7}},
119     {{33, 10}, {0, 0, 8}},
120     {{32, 10}, {0, 0, 9}},
121     {{ 7, 11}, {0, 0, 10}},
122     {{ 6, 11}, {0, 0, 11}},
123     {{32, 11}, {0, 0, 12}},
124     {{ 6, 3}, {0, 1, 1}},
125     {{20, 6}, {0, 1, 2}},
126     {{30, 8}, {0, 1, 3}},
127     {{15, 10}, {0, 1, 4}},
128     {{33, 11}, {0, 1, 5}},
129     {{80, 12}, {0, 1, 6}},
130     {{14, 4}, {0, 2, 1}},
131     {{29, 8}, {0, 2, 2}},
132     {{14, 10}, {0, 2, 3}},
133     {{81, 12}, {0, 2, 4}},
134     {{13, 5}, {0, 3, 1}},
135     {{35, 9}, {0, 3, 2}},
136     {{13, 10}, {0, 3, 3}},
137     {{12, 5}, {0, 4, 1}},
138     {{34, 9}, {0, 4, 2}},
139     {{82, 12}, {0, 4, 3}},
140     {{11, 5}, {0, 5, 1}},
141     {{12, 10}, {0, 5, 2}},
142     {{83, 12}, {0, 5, 3}},
143     {{19, 6}, {0, 6, 1}},
144     {{11, 10}, {0, 6, 2}},
145     {{84, 12}, {0, 6, 3}},
146     {{18, 6}, {0, 7, 1}},
147     {{10, 10}, {0, 7, 2}},
148     {{17, 6}, {0, 8, 1}},
149     {{ 9, 10}, {0, 8, 2}},
150     {{16, 6}, {0, 9, 1}},
151     {{ 8, 10}, {0, 9, 2}},
152     {{22, 7}, {0, 10, 1}},
153     {{85, 12}, {0, 10, 2}},
154     {{21, 7}, {0, 11, 1}},
155     {{20, 7}, {0, 12, 1}},
156     {{28, 8}, {0, 13, 1}},
157     {{27, 8}, {0, 14, 1}},
158     {{33, 9}, {0, 15, 1}},
159     {{32, 9}, {0, 16, 1}},
160     {{31, 9}, {0, 17, 1}},
161     {{30, 9}, {0, 18, 1}},
162     {{29, 9}, {0, 19, 1}},
163     {{28, 9}, {0, 20, 1}},
164     {{27, 9}, {0, 21, 1}},
165     {{26, 9}, {0, 22, 1}},
166     {{34, 11}, {0, 23, 1}},
167     {{35, 11}, {0, 24, 1}},
168     {{86, 12}, {0, 25, 1}},
169     {{87, 12}, {0, 26, 1}},
170     {{ 7, 4}, {1, 0, 1}},
171     {{25, 9}, {1, 0, 2}},
172     {{ 5, 11}, {1, 0, 3}},
173     {{15, 6}, {1, 1, 1}},
174     {{ 4, 11}, {1, 1, 2}},
175     {{14, 6}, {1, 2, 1}},
176     {{13, 6}, {1, 3, 1}},
177     {{12, 6}, {1, 4, 1}},
178     {{19, 7}, {1, 5, 1}},
179     {{18, 7}, {1, 6, 1}},
180     {{17, 7}, {1, 7, 1}},
181     {{16, 7}, {1, 8, 1}},
182     {{26, 8}, {1, 9, 1}},
183     {{25, 8}, {1, 10, 1}},
184     {{24, 8}, {1, 11, 1}},
185     {{23, 8}, {1, 12, 1}},
186     {{22, 8}, {1, 13, 1}},
187     {{21, 8}, {1, 14, 1}},
188     {{20, 8}, {1, 15, 1}},
189     {{19, 8}, {1, 16, 1}},
190     {{24, 9}, {1, 17, 1}},
191     {{23, 9}, {1, 18, 1}},
192     {{22, 9}, {1, 19, 1}},
193     {{21, 9}, {1, 20, 1}},
194     {{20, 9}, {1, 21, 1}},
195     {{19, 9}, {1, 22, 1}},
196     {{18, 9}, {1, 23, 1}},
197     {{17, 9}, {1, 24, 1}},
198     {{ 7, 10}, {1, 25, 1}},
199     {{ 6, 10}, {1, 26, 1}},
200     {{ 5, 10}, {1, 27, 1}},
201     {{ 4, 10}, {1, 28, 1}},
202     {{36, 11}, {1, 29, 1}},
203     {{37, 11}, {1, 30, 1}},
204     {{38, 11}, {1, 31, 1}},
205     {{39, 11}, {1, 32, 1}},
206     {{88, 12}, {1, 33, 1}},
207     {{89, 12}, {1, 34, 1}},
208     {{90, 12}, {1, 35, 1}},
209     {{91, 12}, {1, 36, 1}},
210     {{92, 12}, {1, 37, 1}},
211     {{93, 12}, {1, 38, 1}},
212     {{94, 12}, {1, 39, 1}},
213     {{95, 12}, {1, 40, 1}}
214     },
215     /* intra = 1 */
216 edgomez 1.7 {
217 edgomez 1.13 {{ 2, 2}, {0, 0, 1}},
218     {{15, 4}, {0, 0, 3}},
219     {{21, 6}, {0, 0, 6}},
220     {{23, 7}, {0, 0, 9}},
221     {{31, 8}, {0, 0, 10}},
222     {{37, 9}, {0, 0, 13}},
223     {{36, 9}, {0, 0, 14}},
224     {{33, 10}, {0, 0, 17}},
225     {{32, 10}, {0, 0, 18}},
226     {{ 7, 11}, {0, 0, 21}},
227     {{ 6, 11}, {0, 0, 22}},
228     {{32, 11}, {0, 0, 23}},
229     {{ 6, 3}, {0, 0, 2}},
230     {{20, 6}, {0, 1, 2}},
231     {{30, 8}, {0, 0, 11}},
232     {{15, 10}, {0, 0, 19}},
233     {{33, 11}, {0, 0, 24}},
234     {{80, 12}, {0, 0, 25}},
235     {{14, 4}, {0, 1, 1}},
236     {{29, 8}, {0, 0, 12}},
237     {{14, 10}, {0, 0, 20}},
238     {{81, 12}, {0, 0, 26}},
239     {{13, 5}, {0, 0, 4}},
240     {{35, 9}, {0, 0, 15}},
241     {{13, 10}, {0, 1, 7}},
242     {{12, 5}, {0, 0, 5}},
243     {{34, 9}, {0, 4, 2}},
244     {{82, 12}, {0, 0, 27}},
245     {{11, 5}, {0, 2, 1}},
246     {{12, 10}, {0, 2, 4}},
247     {{83, 12}, {0, 1, 9}},
248     {{19, 6}, {0, 0, 7}},
249     {{11, 10}, {0, 3, 4}},
250     {{84, 12}, {0, 6, 3}},
251     {{18, 6}, {0, 0, 8}},
252     {{10, 10}, {0, 4, 3}},
253     {{17, 6}, {0, 3, 1}},
254     {{ 9, 10}, {0, 8, 2}},
255     {{16, 6}, {0, 4, 1}},
256     {{ 8, 10}, {0, 5, 3}},
257     {{22, 7}, {0, 1, 3}},
258     {{85, 12}, {0, 1, 10}},
259     {{21, 7}, {0, 2, 2}},
260     {{20, 7}, {0, 7, 1}},
261     {{28, 8}, {0, 1, 4}},
262     {{27, 8}, {0, 3, 2}},
263     {{33, 9}, {0, 0, 16}},
264     {{32, 9}, {0, 1, 5}},
265     {{31, 9}, {0, 1, 6}},
266     {{30, 9}, {0, 2, 3}},
267     {{29, 9}, {0, 3, 3}},
268     {{28, 9}, {0, 5, 2}},
269     {{27, 9}, {0, 6, 2}},
270     {{26, 9}, {0, 7, 2}},
271     {{34, 11}, {0, 1, 8}},
272     {{35, 11}, {0, 9, 2}},
273     {{86, 12}, {0, 2, 5}},
274     {{87, 12}, {0, 7, 3}},
275     {{ 7, 4}, {1, 0, 1}},
276     {{25, 9}, {0, 11, 1}},
277     {{ 5, 11}, {1, 0, 6}},
278     {{15, 6}, {1, 1, 1}},
279     {{ 4, 11}, {1, 0, 7}},
280     {{14, 6}, {1, 2, 1}},
281     {{13, 6}, {0, 5, 1}},
282     {{12, 6}, {1, 0, 2}},
283     {{19, 7}, {1, 5, 1}},
284     {{18, 7}, {0, 6, 1}},
285     {{17, 7}, {1, 3, 1}},
286     {{16, 7}, {1, 4, 1}},
287     {{26, 8}, {1, 9, 1}},
288     {{25, 8}, {0, 8, 1}},
289     {{24, 8}, {0, 9, 1}},
290     {{23, 8}, {0, 10, 1}},
291     {{22, 8}, {1, 0, 3}},
292     {{21, 8}, {1, 6, 1}},
293     {{20, 8}, {1, 7, 1}},
294     {{19, 8}, {1, 8, 1}},
295     {{24, 9}, {0, 12, 1}},
296     {{23, 9}, {1, 0, 4}},
297     {{22, 9}, {1, 1, 2}},
298     {{21, 9}, {1, 10, 1}},
299     {{20, 9}, {1, 11, 1}},
300     {{19, 9}, {1, 12, 1}},
301     {{18, 9}, {1, 13, 1}},
302     {{17, 9}, {1, 14, 1}},
303     {{ 7, 10}, {0, 13, 1}},
304     {{ 6, 10}, {1, 0, 5}},
305     {{ 5, 10}, {1, 1, 3}},
306     {{ 4, 10}, {1, 2, 2}},
307     {{36, 11}, {1, 3, 2}},
308     {{37, 11}, {1, 4, 2}},
309     {{38, 11}, {1, 15, 1}},
310     {{39, 11}, {1, 16, 1}},
311     {{88, 12}, {0, 14, 1}},
312     {{89, 12}, {1, 0, 8}},
313     {{90, 12}, {1, 5, 2}},
314     {{91, 12}, {1, 6, 2}},
315     {{92, 12}, {1, 17, 1}},
316     {{93, 12}, {1, 18, 1}},
317     {{94, 12}, {1, 19, 1}},
318     {{95, 12}, {1, 20, 1}}
319     }
320     };
321 edgomez 1.6
322 edgomez 1.13 /* constants taken from momusys/vm_common/inlcude/max_level.h */
323     static uint8_t const max_level[2][2][64] = {
324 edgomez 1.7 {
325 edgomez 1.13 /* intra = 0, last = 0 */
326     {
327     12, 6, 4, 3, 3, 3, 3, 2,
328     2, 2, 2, 1, 1, 1, 1, 1,
329     1, 1, 1, 1, 1, 1, 1, 1,
330     1, 1, 1, 0, 0, 0, 0, 0,
331     0, 0, 0, 0, 0, 0, 0, 0,
332     0, 0, 0, 0, 0, 0, 0, 0,
333     0, 0, 0, 0, 0, 0, 0, 0,
334     0, 0, 0, 0, 0, 0, 0, 0
335     },
336     /* intra = 0, last = 1 */
337     {
338     3, 2, 1, 1, 1, 1, 1, 1,
339     1, 1, 1, 1, 1, 1, 1, 1,
340     1, 1, 1, 1, 1, 1, 1, 1,
341     1, 1, 1, 1, 1, 1, 1, 1,
342     1, 1, 1, 1, 1, 1, 1, 1,
343     1, 0, 0, 0, 0, 0, 0, 0,
344     0, 0, 0, 0, 0, 0, 0, 0,
345     0, 0, 0, 0, 0, 0, 0, 0
346     }
347     },
348 edgomez 1.7 {
349 edgomez 1.13 /* intra = 1, last = 0 */
350     {
351     27, 10, 5, 4, 3, 3, 3, 3,
352     2, 2, 1, 1, 1, 1, 1, 0,
353     0, 0, 0, 0, 0, 0, 0, 0,
354     0, 0, 0, 0, 0, 0, 0, 0,
355     0, 0, 0, 0, 0, 0, 0, 0,
356     0, 0, 0, 0, 0, 0, 0, 0,
357     0, 0, 0, 0, 0, 0, 0, 0,
358     0, 0, 0, 0, 0, 0, 0, 0
359     },
360     /* intra = 1, last = 1 */
361     {
362     8, 3, 2, 2, 2, 2, 2, 1,
363     1, 1, 1, 1, 1, 1, 1, 1,
364     1, 1, 1, 1, 1, 0, 0, 0,
365     0, 0, 0, 0, 0, 0, 0, 0,
366     0, 0, 0, 0, 0, 0, 0, 0,
367     0, 0, 0, 0, 0, 0, 0, 0,
368     0, 0, 0, 0, 0, 0, 0, 0,
369     0, 0, 0, 0, 0, 0, 0, 0
370     }
371     }
372 Isibaar 1.1 };
373    
374 edgomez 1.13 static uint8_t const max_run[2][2][64] = {
375 edgomez 1.7 {
376 edgomez 1.13 /* intra = 0, last = 0 */
377     {
378     0, 26, 10, 6, 2, 1, 1, 0,
379     0, 0, 0, 0, 0, 0, 0, 0,
380     0, 0, 0, 0, 0, 0, 0, 0,
381     0, 0, 0, 0, 0, 0, 0, 0,
382     0, 0, 0, 0, 0, 0, 0, 0,
383     0, 0, 0, 0, 0, 0, 0, 0,
384     0, 0, 0, 0, 0, 0, 0, 0,
385     0, 0, 0, 0, 0, 0, 0, 0,
386     },
387     /* intra = 0, last = 1 */
388     {
389     0, 40, 1, 0, 0, 0, 0, 0,
390     0, 0, 0, 0, 0, 0, 0, 0,
391     0, 0, 0, 0, 0, 0, 0, 0,
392     0, 0, 0, 0, 0, 0, 0, 0,
393     0, 0, 0, 0, 0, 0, 0, 0,
394     0, 0, 0, 0, 0, 0, 0, 0,
395     0, 0, 0, 0, 0, 0, 0, 0,
396     0, 0, 0, 0, 0, 0, 0, 0,
397     }
398     },
399 edgomez 1.7 {
400 edgomez 1.13 /* intra = 1, last = 0 */
401     {
402     0, 14, 9, 7, 3, 2, 1, 1,
403     1, 1, 1, 0, 0, 0, 0, 0,
404     0, 0, 0, 0, 0, 0, 0, 0,
405     0, 0, 0, 0, 0, 0, 0, 0,
406     0, 0, 0, 0, 0, 0, 0, 0,
407     0, 0, 0, 0, 0, 0, 0, 0,
408     0, 0, 0, 0, 0, 0, 0, 0,
409     0, 0, 0, 0, 0, 0, 0, 0,
410     },
411     /* intra = 1, last = 1 */
412     {
413     0, 20, 6, 1, 0, 0, 0, 0,
414     0, 0, 0, 0, 0, 0, 0, 0,
415     0, 0, 0, 0, 0, 0, 0, 0,
416     0, 0, 0, 0, 0, 0, 0, 0,
417     0, 0, 0, 0, 0, 0, 0, 0,
418     0, 0, 0, 0, 0, 0, 0, 0,
419     0, 0, 0, 0, 0, 0, 0, 0,
420     0, 0, 0, 0, 0, 0, 0, 0,
421     }
422     }
423 Isibaar 1.1 };
424    
425    
426     /******************************************************************
427 edgomez 1.2 * encoder tables *
428     ******************************************************************/
429 Isibaar 1.1
430 edgomez 1.7 /*
431     * MCBPC Indexing by cbpc in first two bits, mode in last two.
432     * CBPC as in table 4/H.263, MB type (mode): 3 = 01, 4 = 10.
433     * Example: cbpc = 01 and mode = 4 gives index = 0110 = 6.
434     */
435 Isibaar 1.1
436 edgomez 1.10 static VLC const mcbpc_intra_tab[15] = {
437 edgomez 1.6 {0x01, 9}, {0x01, 1}, {0x01, 4}, {0x00, 0},
438     {0x00, 0}, {0x01, 3}, {0x01, 6}, {0x00, 0},
439     {0x00, 0}, {0x02, 3}, {0x02, 6}, {0x00, 0},
440     {0x00, 0}, {0x03, 3}, {0x03, 6}
441 Isibaar 1.1 };
442    
443 Isibaar 1.4 /* MCBPC inter.
444     Addressing: 5 bit ccmmm (cc = CBPC, mmm = mode (1-4 binary)) */
445 Isibaar 1.1
446 edgomez 1.10 static VLC const mcbpc_inter_tab[29] = {
447 edgomez 1.6 {1, 1}, {3, 3}, {2, 3}, {3, 5}, {4, 6}, {1, 9}, {0, 0}, {0, 0},
448     {3, 4}, {7, 7}, {5, 7}, {4, 8}, {4, 9}, {0, 0}, {0, 0}, {0, 0},
449     {2, 4}, {6, 7}, {4, 7}, {3, 8}, {3, 9}, {0, 0}, {0, 0}, {0, 0},
450     {5, 6}, {5, 9}, {5, 8}, {3, 7}, {2, 9}
451 Isibaar 1.1 };
452    
453 edgomez 1.10 static VLC const cbpy_tab[16] = {
454 edgomez 1.6 {3, 4}, {5, 5}, {4, 5}, {9, 4}, {3, 5}, {7, 4}, {2, 6}, {11, 4},
455     {2, 5}, {3, 6}, {5, 4}, {10, 4}, {4, 4}, {8, 4}, {6, 4}, {3, 2}
456 Isibaar 1.1 };
457    
458 edgomez 1.10 static VLC const dcy_tab[511] = {
459 edgomez 1.3 {0x100, 15}, {0x101, 15}, {0x102, 15}, {0x103, 15},
460     {0x104, 15}, {0x105, 15}, {0x106, 15}, {0x107, 15},
461     {0x108, 15}, {0x109, 15}, {0x10a, 15}, {0x10b, 15},
462     {0x10c, 15}, {0x10d, 15}, {0x10e, 15}, {0x10f, 15},
463     {0x110, 15}, {0x111, 15}, {0x112, 15}, {0x113, 15},
464     {0x114, 15}, {0x115, 15}, {0x116, 15}, {0x117, 15},
465     {0x118, 15}, {0x119, 15}, {0x11a, 15}, {0x11b, 15},
466     {0x11c, 15}, {0x11d, 15}, {0x11e, 15}, {0x11f, 15},
467     {0x120, 15}, {0x121, 15}, {0x122, 15}, {0x123, 15},
468     {0x124, 15}, {0x125, 15}, {0x126, 15}, {0x127, 15},
469     {0x128, 15}, {0x129, 15}, {0x12a, 15}, {0x12b, 15},
470     {0x12c, 15}, {0x12d, 15}, {0x12e, 15}, {0x12f, 15},
471     {0x130, 15}, {0x131, 15}, {0x132, 15}, {0x133, 15},
472     {0x134, 15}, {0x135, 15}, {0x136, 15}, {0x137, 15},
473     {0x138, 15}, {0x139, 15}, {0x13a, 15}, {0x13b, 15},
474     {0x13c, 15}, {0x13d, 15}, {0x13e, 15}, {0x13f, 15},
475     {0x140, 15}, {0x141, 15}, {0x142, 15}, {0x143, 15},
476     {0x144, 15}, {0x145, 15}, {0x146, 15}, {0x147, 15},
477     {0x148, 15}, {0x149, 15}, {0x14a, 15}, {0x14b, 15},
478     {0x14c, 15}, {0x14d, 15}, {0x14e, 15}, {0x14f, 15},
479     {0x150, 15}, {0x151, 15}, {0x152, 15}, {0x153, 15},
480     {0x154, 15}, {0x155, 15}, {0x156, 15}, {0x157, 15},
481     {0x158, 15}, {0x159, 15}, {0x15a, 15}, {0x15b, 15},
482     {0x15c, 15}, {0x15d, 15}, {0x15e, 15}, {0x15f, 15},
483     {0x160, 15}, {0x161, 15}, {0x162, 15}, {0x163, 15},
484     {0x164, 15}, {0x165, 15}, {0x166, 15}, {0x167, 15},
485     {0x168, 15}, {0x169, 15}, {0x16a, 15}, {0x16b, 15},
486     {0x16c, 15}, {0x16d, 15}, {0x16e, 15}, {0x16f, 15},
487     {0x170, 15}, {0x171, 15}, {0x172, 15}, {0x173, 15},
488     {0x174, 15}, {0x175, 15}, {0x176, 15}, {0x177, 15},
489     {0x178, 15}, {0x179, 15}, {0x17a, 15}, {0x17b, 15},
490     {0x17c, 15}, {0x17d, 15}, {0x17e, 15}, {0x17f, 15},
491     {0x80, 13}, {0x81, 13}, {0x82, 13}, {0x83, 13},
492     {0x84, 13}, {0x85, 13}, {0x86, 13}, {0x87, 13},
493     {0x88, 13}, {0x89, 13}, {0x8a, 13}, {0x8b, 13},
494     {0x8c, 13}, {0x8d, 13}, {0x8e, 13}, {0x8f, 13},
495     {0x90, 13}, {0x91, 13}, {0x92, 13}, {0x93, 13},
496     {0x94, 13}, {0x95, 13}, {0x96, 13}, {0x97, 13},
497     {0x98, 13}, {0x99, 13}, {0x9a, 13}, {0x9b, 13},
498     {0x9c, 13}, {0x9d, 13}, {0x9e, 13}, {0x9f, 13},
499     {0xa0, 13}, {0xa1, 13}, {0xa2, 13}, {0xa3, 13},
500     {0xa4, 13}, {0xa5, 13}, {0xa6, 13}, {0xa7, 13},
501     {0xa8, 13}, {0xa9, 13}, {0xaa, 13}, {0xab, 13},
502     {0xac, 13}, {0xad, 13}, {0xae, 13}, {0xaf, 13},
503     {0xb0, 13}, {0xb1, 13}, {0xb2, 13}, {0xb3, 13},
504     {0xb4, 13}, {0xb5, 13}, {0xb6, 13}, {0xb7, 13},
505     {0xb8, 13}, {0xb9, 13}, {0xba, 13}, {0xbb, 13},
506     {0xbc, 13}, {0xbd, 13}, {0xbe, 13}, {0xbf, 13},
507     {0x40, 11}, {0x41, 11}, {0x42, 11}, {0x43, 11},
508     {0x44, 11}, {0x45, 11}, {0x46, 11}, {0x47, 11},
509     {0x48, 11}, {0x49, 11}, {0x4a, 11}, {0x4b, 11},
510     {0x4c, 11}, {0x4d, 11}, {0x4e, 11}, {0x4f, 11},
511     {0x50, 11}, {0x51, 11}, {0x52, 11}, {0x53, 11},
512     {0x54, 11}, {0x55, 11}, {0x56, 11}, {0x57, 11},
513     {0x58, 11}, {0x59, 11}, {0x5a, 11}, {0x5b, 11},
514     {0x5c, 11}, {0x5d, 11}, {0x5e, 11}, {0x5f, 11},
515     {0x20, 9}, {0x21, 9}, {0x22, 9}, {0x23, 9},
516     {0x24, 9}, {0x25, 9}, {0x26, 9}, {0x27, 9},
517     {0x28, 9}, {0x29, 9}, {0x2a, 9}, {0x2b, 9},
518     {0x2c, 9}, {0x2d, 9}, {0x2e, 9}, {0x2f, 9},
519     {0x10, 7}, {0x11, 7}, {0x12, 7}, {0x13, 7},
520     {0x14, 7}, {0x15, 7}, {0x16, 7}, {0x17, 7},
521     {0x10, 6}, {0x11, 6}, {0x12, 6}, {0x13, 6},
522     {0x08, 4}, {0x09, 4}, {0x06, 3}, {0x03, 3},
523     {0x07, 3}, {0x0a, 4}, {0x0b, 4}, {0x14, 6},
524     {0x15, 6}, {0x16, 6}, {0x17, 6}, {0x18, 7},
525     {0x19, 7}, {0x1a, 7}, {0x1b, 7}, {0x1c, 7},
526     {0x1d, 7}, {0x1e, 7}, {0x1f, 7}, {0x30, 9},
527     {0x31, 9}, {0x32, 9}, {0x33, 9}, {0x34, 9},
528     {0x35, 9}, {0x36, 9}, {0x37, 9}, {0x38, 9},
529     {0x39, 9}, {0x3a, 9}, {0x3b, 9}, {0x3c, 9},
530     {0x3d, 9}, {0x3e, 9}, {0x3f, 9}, {0x60, 11},
531     {0x61, 11}, {0x62, 11}, {0x63, 11}, {0x64, 11},
532     {0x65, 11}, {0x66, 11}, {0x67, 11}, {0x68, 11},
533     {0x69, 11}, {0x6a, 11}, {0x6b, 11}, {0x6c, 11},
534     {0x6d, 11}, {0x6e, 11}, {0x6f, 11}, {0x70, 11},
535     {0x71, 11}, {0x72, 11}, {0x73, 11}, {0x74, 11},
536     {0x75, 11}, {0x76, 11}, {0x77, 11}, {0x78, 11},
537     {0x79, 11}, {0x7a, 11}, {0x7b, 11}, {0x7c, 11},
538     {0x7d, 11}, {0x7e, 11}, {0x7f, 11}, {0xc0, 13},
539     {0xc1, 13}, {0xc2, 13}, {0xc3, 13}, {0xc4, 13},
540     {0xc5, 13}, {0xc6, 13}, {0xc7, 13}, {0xc8, 13},
541     {0xc9, 13}, {0xca, 13}, {0xcb, 13}, {0xcc, 13},
542     {0xcd, 13}, {0xce, 13}, {0xcf, 13}, {0xd0, 13},
543     {0xd1, 13}, {0xd2, 13}, {0xd3, 13}, {0xd4, 13},
544     {0xd5, 13}, {0xd6, 13}, {0xd7, 13}, {0xd8, 13},
545     {0xd9, 13}, {0xda, 13}, {0xdb, 13}, {0xdc, 13},
546     {0xdd, 13}, {0xde, 13}, {0xdf, 13}, {0xe0, 13},
547     {0xe1, 13}, {0xe2, 13}, {0xe3, 13}, {0xe4, 13},
548     {0xe5, 13}, {0xe6, 13}, {0xe7, 13}, {0xe8, 13},
549     {0xe9, 13}, {0xea, 13}, {0xeb, 13}, {0xec, 13},
550     {0xed, 13}, {0xee, 13}, {0xef, 13}, {0xf0, 13},
551     {0xf1, 13}, {0xf2, 13}, {0xf3, 13}, {0xf4, 13},
552     {0xf5, 13}, {0xf6, 13}, {0xf7, 13}, {0xf8, 13},
553     {0xf9, 13}, {0xfa, 13}, {0xfb, 13}, {0xfc, 13},
554     {0xfd, 13}, {0xfe, 13}, {0xff, 13}, {0x180, 15},
555     {0x181, 15}, {0x182, 15}, {0x183, 15}, {0x184, 15},
556     {0x185, 15}, {0x186, 15}, {0x187, 15}, {0x188, 15},
557     {0x189, 15}, {0x18a, 15}, {0x18b, 15}, {0x18c, 15},
558     {0x18d, 15}, {0x18e, 15}, {0x18f, 15}, {0x190, 15},
559     {0x191, 15}, {0x192, 15}, {0x193, 15}, {0x194, 15},
560     {0x195, 15}, {0x196, 15}, {0x197, 15}, {0x198, 15},
561     {0x199, 15}, {0x19a, 15}, {0x19b, 15}, {0x19c, 15},
562     {0x19d, 15}, {0x19e, 15}, {0x19f, 15}, {0x1a0, 15},
563     {0x1a1, 15}, {0x1a2, 15}, {0x1a3, 15}, {0x1a4, 15},
564     {0x1a5, 15}, {0x1a6, 15}, {0x1a7, 15}, {0x1a8, 15},
565     {0x1a9, 15}, {0x1aa, 15}, {0x1ab, 15}, {0x1ac, 15},
566     {0x1ad, 15}, {0x1ae, 15}, {0x1af, 15}, {0x1b0, 15},
567     {0x1b1, 15}, {0x1b2, 15}, {0x1b3, 15}, {0x1b4, 15},
568     {0x1b5, 15}, {0x1b6, 15}, {0x1b7, 15}, {0x1b8, 15},
569     {0x1b9, 15}, {0x1ba, 15}, {0x1bb, 15}, {0x1bc, 15},
570     {0x1bd, 15}, {0x1be, 15}, {0x1bf, 15}, {0x1c0, 15},
571     {0x1c1, 15}, {0x1c2, 15}, {0x1c3, 15}, {0x1c4, 15},
572     {0x1c5, 15}, {0x1c6, 15}, {0x1c7, 15}, {0x1c8, 15},
573     {0x1c9, 15}, {0x1ca, 15}, {0x1cb, 15}, {0x1cc, 15},
574     {0x1cd, 15}, {0x1ce, 15}, {0x1cf, 15}, {0x1d0, 15},
575     {0x1d1, 15}, {0x1d2, 15}, {0x1d3, 15}, {0x1d4, 15},
576     {0x1d5, 15}, {0x1d6, 15}, {0x1d7, 15}, {0x1d8, 15},
577     {0x1d9, 15}, {0x1da, 15}, {0x1db, 15}, {0x1dc, 15},
578     {0x1dd, 15}, {0x1de, 15}, {0x1df, 15}, {0x1e0, 15},
579     {0x1e1, 15}, {0x1e2, 15}, {0x1e3, 15}, {0x1e4, 15},
580     {0x1e5, 15}, {0x1e6, 15}, {0x1e7, 15}, {0x1e8, 15},
581     {0x1e9, 15}, {0x1ea, 15}, {0x1eb, 15}, {0x1ec, 15},
582     {0x1ed, 15}, {0x1ee, 15}, {0x1ef, 15}, {0x1f0, 15},
583     {0x1f1, 15}, {0x1f2, 15}, {0x1f3, 15}, {0x1f4, 15},
584     {0x1f5, 15}, {0x1f6, 15}, {0x1f7, 15}, {0x1f8, 15},
585     {0x1f9, 15}, {0x1fa, 15}, {0x1fb, 15}, {0x1fc, 15},
586     {0x1fd, 15}, {0x1fe, 15}, {0x1ff, 15},
587 Isibaar 1.1 };
588    
589 edgomez 1.10 static VLC const dcc_tab[511] = {
590 edgomez 1.3 {0x100, 16}, {0x101, 16}, {0x102, 16}, {0x103, 16},
591     {0x104, 16}, {0x105, 16}, {0x106, 16}, {0x107, 16},
592     {0x108, 16}, {0x109, 16}, {0x10a, 16}, {0x10b, 16},
593     {0x10c, 16}, {0x10d, 16}, {0x10e, 16}, {0x10f, 16},
594     {0x110, 16}, {0x111, 16}, {0x112, 16}, {0x113, 16},
595     {0x114, 16}, {0x115, 16}, {0x116, 16}, {0x117, 16},
596     {0x118, 16}, {0x119, 16}, {0x11a, 16}, {0x11b, 16},
597     {0x11c, 16}, {0x11d, 16}, {0x11e, 16}, {0x11f, 16},
598     {0x120, 16}, {0x121, 16}, {0x122, 16}, {0x123, 16},
599     {0x124, 16}, {0x125, 16}, {0x126, 16}, {0x127, 16},
600     {0x128, 16}, {0x129, 16}, {0x12a, 16}, {0x12b, 16},
601     {0x12c, 16}, {0x12d, 16}, {0x12e, 16}, {0x12f, 16},
602     {0x130, 16}, {0x131, 16}, {0x132, 16}, {0x133, 16},
603     {0x134, 16}, {0x135, 16}, {0x136, 16}, {0x137, 16},
604     {0x138, 16}, {0x139, 16}, {0x13a, 16}, {0x13b, 16},
605     {0x13c, 16}, {0x13d, 16}, {0x13e, 16}, {0x13f, 16},
606     {0x140, 16}, {0x141, 16}, {0x142, 16}, {0x143, 16},
607     {0x144, 16}, {0x145, 16}, {0x146, 16}, {0x147, 16},
608     {0x148, 16}, {0x149, 16}, {0x14a, 16}, {0x14b, 16},
609     {0x14c, 16}, {0x14d, 16}, {0x14e, 16}, {0x14f, 16},
610     {0x150, 16}, {0x151, 16}, {0x152, 16}, {0x153, 16},
611     {0x154, 16}, {0x155, 16}, {0x156, 16}, {0x157, 16},
612     {0x158, 16}, {0x159, 16}, {0x15a, 16}, {0x15b, 16},
613     {0x15c, 16}, {0x15d, 16}, {0x15e, 16}, {0x15f, 16},
614     {0x160, 16}, {0x161, 16}, {0x162, 16}, {0x163, 16},
615     {0x164, 16}, {0x165, 16}, {0x166, 16}, {0x167, 16},
616     {0x168, 16}, {0x169, 16}, {0x16a, 16}, {0x16b, 16},
617     {0x16c, 16}, {0x16d, 16}, {0x16e, 16}, {0x16f, 16},
618     {0x170, 16}, {0x171, 16}, {0x172, 16}, {0x173, 16},
619     {0x174, 16}, {0x175, 16}, {0x176, 16}, {0x177, 16},
620     {0x178, 16}, {0x179, 16}, {0x17a, 16}, {0x17b, 16},
621     {0x17c, 16}, {0x17d, 16}, {0x17e, 16}, {0x17f, 16},
622     {0x80, 14}, {0x81, 14}, {0x82, 14}, {0x83, 14},
623     {0x84, 14}, {0x85, 14}, {0x86, 14}, {0x87, 14},
624     {0x88, 14}, {0x89, 14}, {0x8a, 14}, {0x8b, 14},
625     {0x8c, 14}, {0x8d, 14}, {0x8e, 14}, {0x8f, 14},
626     {0x90, 14}, {0x91, 14}, {0x92, 14}, {0x93, 14},
627     {0x94, 14}, {0x95, 14}, {0x96, 14}, {0x97, 14},
628     {0x98, 14}, {0x99, 14}, {0x9a, 14}, {0x9b, 14},
629     {0x9c, 14}, {0x9d, 14}, {0x9e, 14}, {0x9f, 14},
630     {0xa0, 14}, {0xa1, 14}, {0xa2, 14}, {0xa3, 14},
631     {0xa4, 14}, {0xa5, 14}, {0xa6, 14}, {0xa7, 14},
632     {0xa8, 14}, {0xa9, 14}, {0xaa, 14}, {0xab, 14},
633     {0xac, 14}, {0xad, 14}, {0xae, 14}, {0xaf, 14},
634     {0xb0, 14}, {0xb1, 14}, {0xb2, 14}, {0xb3, 14},
635     {0xb4, 14}, {0xb5, 14}, {0xb6, 14}, {0xb7, 14},
636     {0xb8, 14}, {0xb9, 14}, {0xba, 14}, {0xbb, 14},
637     {0xbc, 14}, {0xbd, 14}, {0xbe, 14}, {0xbf, 14},
638     {0x40, 12}, {0x41, 12}, {0x42, 12}, {0x43, 12},
639     {0x44, 12}, {0x45, 12}, {0x46, 12}, {0x47, 12},
640     {0x48, 12}, {0x49, 12}, {0x4a, 12}, {0x4b, 12},
641     {0x4c, 12}, {0x4d, 12}, {0x4e, 12}, {0x4f, 12},
642     {0x50, 12}, {0x51, 12}, {0x52, 12}, {0x53, 12},
643     {0x54, 12}, {0x55, 12}, {0x56, 12}, {0x57, 12},
644     {0x58, 12}, {0x59, 12}, {0x5a, 12}, {0x5b, 12},
645     {0x5c, 12}, {0x5d, 12}, {0x5e, 12}, {0x5f, 12},
646     {0x20, 10}, {0x21, 10}, {0x22, 10}, {0x23, 10},
647     {0x24, 10}, {0x25, 10}, {0x26, 10}, {0x27, 10},
648     {0x28, 10}, {0x29, 10}, {0x2a, 10}, {0x2b, 10},
649     {0x2c, 10}, {0x2d, 10}, {0x2e, 10}, {0x2f, 10},
650     {0x10, 8}, {0x11, 8}, {0x12, 8}, {0x13, 8},
651     {0x14, 8}, {0x15, 8}, {0x16, 8}, {0x17, 8},
652     {0x08, 6}, {0x09, 6}, {0x0a, 6}, {0x0b, 6},
653     {0x04, 4}, {0x05, 4}, {0x04, 3}, {0x03, 2},
654     {0x05, 3}, {0x06, 4}, {0x07, 4}, {0x0c, 6},
655     {0x0d, 6}, {0x0e, 6}, {0x0f, 6}, {0x18, 8},
656     {0x19, 8}, {0x1a, 8}, {0x1b, 8}, {0x1c, 8},
657     {0x1d, 8}, {0x1e, 8}, {0x1f, 8}, {0x30, 10},
658     {0x31, 10}, {0x32, 10}, {0x33, 10}, {0x34, 10},
659     {0x35, 10}, {0x36, 10}, {0x37, 10}, {0x38, 10},
660     {0x39, 10}, {0x3a, 10}, {0x3b, 10}, {0x3c, 10},
661     {0x3d, 10}, {0x3e, 10}, {0x3f, 10}, {0x60, 12},
662     {0x61, 12}, {0x62, 12}, {0x63, 12}, {0x64, 12},
663     {0x65, 12}, {0x66, 12}, {0x67, 12}, {0x68, 12},
664     {0x69, 12}, {0x6a, 12}, {0x6b, 12}, {0x6c, 12},
665     {0x6d, 12}, {0x6e, 12}, {0x6f, 12}, {0x70, 12},
666     {0x71, 12}, {0x72, 12}, {0x73, 12}, {0x74, 12},
667     {0x75, 12}, {0x76, 12}, {0x77, 12}, {0x78, 12},
668     {0x79, 12}, {0x7a, 12}, {0x7b, 12}, {0x7c, 12},
669     {0x7d, 12}, {0x7e, 12}, {0x7f, 12}, {0xc0, 14},
670     {0xc1, 14}, {0xc2, 14}, {0xc3, 14}, {0xc4, 14},
671     {0xc5, 14}, {0xc6, 14}, {0xc7, 14}, {0xc8, 14},
672     {0xc9, 14}, {0xca, 14}, {0xcb, 14}, {0xcc, 14},
673     {0xcd, 14}, {0xce, 14}, {0xcf, 14}, {0xd0, 14},
674     {0xd1, 14}, {0xd2, 14}, {0xd3, 14}, {0xd4, 14},
675     {0xd5, 14}, {0xd6, 14}, {0xd7, 14}, {0xd8, 14},
676     {0xd9, 14}, {0xda, 14}, {0xdb, 14}, {0xdc, 14},
677     {0xdd, 14}, {0xde, 14}, {0xdf, 14}, {0xe0, 14},
678     {0xe1, 14}, {0xe2, 14}, {0xe3, 14}, {0xe4, 14},
679     {0xe5, 14}, {0xe6, 14}, {0xe7, 14}, {0xe8, 14},
680     {0xe9, 14}, {0xea, 14}, {0xeb, 14}, {0xec, 14},
681     {0xed, 14}, {0xee, 14}, {0xef, 14}, {0xf0, 14},
682     {0xf1, 14}, {0xf2, 14}, {0xf3, 14}, {0xf4, 14},
683     {0xf5, 14}, {0xf6, 14}, {0xf7, 14}, {0xf8, 14},
684     {0xf9, 14}, {0xfa, 14}, {0xfb, 14}, {0xfc, 14},
685     {0xfd, 14}, {0xfe, 14}, {0xff, 14}, {0x180, 16},
686     {0x181, 16}, {0x182, 16}, {0x183, 16}, {0x184, 16},
687     {0x185, 16}, {0x186, 16}, {0x187, 16}, {0x188, 16},
688     {0x189, 16}, {0x18a, 16}, {0x18b, 16}, {0x18c, 16},
689     {0x18d, 16}, {0x18e, 16}, {0x18f, 16}, {0x190, 16},
690     {0x191, 16}, {0x192, 16}, {0x193, 16}, {0x194, 16},
691     {0x195, 16}, {0x196, 16}, {0x197, 16}, {0x198, 16},
692     {0x199, 16}, {0x19a, 16}, {0x19b, 16}, {0x19c, 16},
693     {0x19d, 16}, {0x19e, 16}, {0x19f, 16}, {0x1a0, 16},
694     {0x1a1, 16}, {0x1a2, 16}, {0x1a3, 16}, {0x1a4, 16},
695     {0x1a5, 16}, {0x1a6, 16}, {0x1a7, 16}, {0x1a8, 16},
696     {0x1a9, 16}, {0x1aa, 16}, {0x1ab, 16}, {0x1ac, 16},
697     {0x1ad, 16}, {0x1ae, 16}, {0x1af, 16}, {0x1b0, 16},
698     {0x1b1, 16}, {0x1b2, 16}, {0x1b3, 16}, {0x1b4, 16},
699     {0x1b5, 16}, {0x1b6, 16}, {0x1b7, 16}, {0x1b8, 16},
700     {0x1b9, 16}, {0x1ba, 16}, {0x1bb, 16}, {0x1bc, 16},
701     {0x1bd, 16}, {0x1be, 16}, {0x1bf, 16}, {0x1c0, 16},
702     {0x1c1, 16}, {0x1c2, 16}, {0x1c3, 16}, {0x1c4, 16},
703     {0x1c5, 16}, {0x1c6, 16}, {0x1c7, 16}, {0x1c8, 16},
704     {0x1c9, 16}, {0x1ca, 16}, {0x1cb, 16}, {0x1cc, 16},
705     {0x1cd, 16}, {0x1ce, 16}, {0x1cf, 16}, {0x1d0, 16},
706     {0x1d1, 16}, {0x1d2, 16}, {0x1d3, 16}, {0x1d4, 16},
707     {0x1d5, 16}, {0x1d6, 16}, {0x1d7, 16}, {0x1d8, 16},
708     {0x1d9, 16}, {0x1da, 16}, {0x1db, 16}, {0x1dc, 16},
709     {0x1dd, 16}, {0x1de, 16}, {0x1df, 16}, {0x1e0, 16},
710     {0x1e1, 16}, {0x1e2, 16}, {0x1e3, 16}, {0x1e4, 16},
711     {0x1e5, 16}, {0x1e6, 16}, {0x1e7, 16}, {0x1e8, 16},
712     {0x1e9, 16}, {0x1ea, 16}, {0x1eb, 16}, {0x1ec, 16},
713     {0x1ed, 16}, {0x1ee, 16}, {0x1ef, 16}, {0x1f0, 16},
714     {0x1f1, 16}, {0x1f2, 16}, {0x1f3, 16}, {0x1f4, 16},
715     {0x1f5, 16}, {0x1f6, 16}, {0x1f7, 16}, {0x1f8, 16},
716     {0x1f9, 16}, {0x1fa, 16}, {0x1fb, 16}, {0x1fc, 16},
717     {0x1fd, 16}, {0x1fe, 16}, {0x1ff, 16},
718 Isibaar 1.1 };
719    
720    
721 edgomez 1.10 static VLC const mb_motion_table[65] = {
722 edgomez 1.6 {0x05, 13}, {0x07, 13}, {0x05, 12}, {0x07, 12},
723     {0x09, 12}, {0x0b, 12}, {0x0d, 12}, {0x0f, 12},
724     {0x09, 11}, {0x0b, 11}, {0x0d, 11}, {0x0f, 11},
725     {0x11, 11}, {0x13, 11}, {0x15, 11}, {0x17, 11},
726     {0x19, 11}, {0x1b, 11}, {0x1d, 11}, {0x1f, 11},
727     {0x21, 11}, {0x23, 11}, {0x13, 10}, {0x15, 10},
728     {0x17, 10}, {0x07, 8}, {0x09, 8}, {0x0b, 8},
729     {0x07, 7}, {0x03, 5}, {0x03, 4}, {0x03, 3},
730     {0x01, 1}, {0x02, 3}, {0x02, 4}, {0x02, 5},
731     {0x06, 7}, {0x0a, 8}, {0x08, 8}, {0x06, 8},
732     {0x16, 10}, {0x14, 10}, {0x12, 10}, {0x22, 11},
733     {0x20, 11}, {0x1e, 11}, {0x1c, 11}, {0x1a, 11},
734     {0x18, 11}, {0x16, 11}, {0x14, 11}, {0x12, 11},
735     {0x10, 11}, {0x0e, 11}, {0x0c, 11}, {0x0a, 11},
736     {0x08, 11}, {0x0e, 12}, {0x0c, 12}, {0x0a, 12},
737     {0x08, 12}, {0x06, 12}, {0x04, 12}, {0x06, 13},
738 edgomez 1.3 {0x04, 13}
739 Isibaar 1.1 };
740    
741    
742     /******************************************************************
743 edgomez 1.2 * decoder tables *
744     ******************************************************************/
745 Isibaar 1.1
746 edgomez 1.10 static VLC const mcbpc_intra_table[64] = {
747 edgomez 1.7 {-1, 0}, {20, 6}, {36, 6}, {52, 6}, {4, 4}, {4, 4}, {4, 4}, {4, 4},
748     {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3},
749     {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3},
750     {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3},
751 edgomez 1.9 {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1},
752     {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1},
753 edgomez 1.7 {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1},
754     {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}
755 Isibaar 1.1 };
756    
757    
758 edgomez 1.10 static VLC const mcbpc_inter_table[257] = {
759     {VLC_ERROR, 0}, {255, 9}, {52, 9}, {36, 9}, {20, 9}, {49, 9}, {35, 8}, {35, 8},
760 edgomez 1.7 {19, 8}, {19, 8}, {50, 8}, {50, 8}, {51, 7}, {51, 7}, {51, 7}, {51, 7},
761     {34, 7}, {34, 7}, {34, 7}, {34, 7}, {18, 7}, {18, 7}, {18, 7}, {18, 7},
762     {33, 7}, {33, 7}, {33, 7}, {33, 7}, {17, 7}, {17, 7}, {17, 7}, {17, 7},
763 edgomez 1.9 {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6},
764 edgomez 1.7 {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6},
765 edgomez 1.9 {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5},
766 edgomez 1.7 {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5},
767     {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
768 edgomez 1.6 {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
769     {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
770     {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4},
771 edgomez 1.9 {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
772     {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
773 edgomez 1.6 {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
774     {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4},
775 edgomez 1.7 {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
776     {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
777     {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
778     {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
779     {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
780     {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
781     {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
782     {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3},
783     {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
784     {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
785     {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
786     {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
787     {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
788     {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
789     {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
790     {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3},
791     {0, 1}
792 edgomez 1.6 };
793    
794 edgomez 1.10 static VLC const cbpy_table[64] = {
795 edgomez 1.7 {-1, 0}, {-1, 0}, {6, 6}, {9, 6}, {8, 5}, {8, 5}, {4, 5}, {4, 5},
796     {2, 5}, {2, 5}, {1, 5}, {1, 5}, {0, 4}, {0, 4}, {0, 4}, {0, 4},
797 edgomez 1.6 {12, 4}, {12, 4}, {12, 4}, {12, 4}, {10, 4}, {10, 4}, {10, 4}, {10, 4},
798 edgomez 1.7 {14, 4}, {14, 4}, {14, 4}, {14, 4}, {5, 4}, {5, 4}, {5, 4}, {5, 4},
799     {13, 4}, {13, 4}, {13, 4}, {13, 4}, {3, 4}, {3, 4}, {3, 4}, {3, 4},
800     {11, 4}, {11, 4}, {11, 4}, {11, 4}, {7, 4}, {7, 4}, {7, 4}, {7, 4},
801     {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2},
802     {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}
803 Isibaar 1.1 };
804    
805    
806 edgomez 1.10 static VLC const TMNMVtab0[] = {
807 edgomez 1.7 {3, 4}, {-3, 4}, {2, 3}, {2, 3}, {-2, 3}, {-2, 3}, {1, 2},
808     {1, 2}, {1, 2}, {1, 2}, {-1, 2}, {-1, 2}, {-1, 2}, {-1, 2}
809 Isibaar 1.1 };
810    
811 edgomez 1.10 static VLC const TMNMVtab1[] = {
812 edgomez 1.7 {12, 10}, {-12, 10}, {11, 10}, {-11, 10},
813     {10, 9}, {10, 9}, {-10, 9}, {-10, 9},
814     {9, 9}, {9, 9}, {-9, 9}, {-9, 9},
815     {8, 9}, {8, 9}, {-8, 9}, {-8, 9},
816 edgomez 1.9 {7, 7}, {7, 7}, {7, 7}, {7, 7},
817 edgomez 1.7 {7, 7}, {7, 7}, {7, 7}, {7, 7},
818     {-7, 7}, {-7, 7}, {-7, 7}, {-7, 7},
819     {-7, 7}, {-7, 7}, {-7, 7}, {-7, 7},
820     {6, 7}, {6, 7}, {6, 7}, {6, 7},
821 edgomez 1.9 {6, 7}, {6, 7}, {6, 7}, {6, 7},
822 edgomez 1.7 {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7},
823     {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7},
824     {5, 7}, {5, 7}, {5, 7}, {5, 7},
825     {5, 7}, {5, 7}, {5, 7}, {5, 7},
826     {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7},
827     {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7},
828     {4, 6}, {4, 6}, {4, 6}, {4, 6},
829     {4, 6}, {4, 6}, {4, 6}, {4, 6},
830     {4, 6}, {4, 6}, {4, 6}, {4, 6},
831 edgomez 1.9 {4, 6}, {4, 6}, {4, 6}, {4, 6},
832 edgomez 1.7 {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6},
833     {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6},
834     {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6},
835 edgomez 1.9 {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}
836 Isibaar 1.1 };
837    
838 edgomez 1.10 static VLC const TMNMVtab2[] = {
839 edgomez 1.7 {32, 12}, {-32, 12}, {31, 12}, {-31, 12},
840     {30, 11}, {30, 11}, {-30, 11}, {-30, 11},
841     {29, 11}, {29, 11}, {-29, 11}, {-29, 11},
842     {28, 11}, {28, 11}, {-28, 11}, {-28, 11},
843     {27, 11}, {27, 11}, {-27, 11}, {-27, 11},
844     {26, 11}, {26, 11}, {-26, 11}, {-26, 11},
845     {25, 11}, {25, 11}, {-25, 11}, {-25, 11},
846     {24, 10}, {24, 10}, {24, 10}, {24, 10},
847     {-24, 10}, {-24, 10}, {-24, 10}, {-24, 10},
848     {23, 10}, {23, 10}, {23, 10}, {23, 10},
849     {-23, 10}, {-23, 10}, {-23, 10}, {-23, 10},
850     {22, 10}, {22, 10}, {22, 10}, {22, 10},
851     {-22, 10}, {-22, 10}, {-22, 10}, {-22, 10},
852     {21, 10}, {21, 10}, {21, 10}, {21, 10},
853     {-21, 10}, {-21, 10}, {-21, 10}, {-21, 10},
854     {20, 10}, {20, 10}, {20, 10}, {20, 10},
855     {-20, 10}, {-20, 10}, {-20, 10}, {-20, 10},
856     {19, 10}, {19, 10}, {19, 10}, {19, 10},
857     {-19, 10}, {-19, 10}, {-19, 10}, {-19, 10},
858     {18, 10}, {18, 10}, {18, 10}, {18, 10},
859     {-18, 10}, {-18, 10}, {-18, 10}, {-18, 10},
860     {17, 10}, {17, 10}, {17, 10}, {17, 10},
861     {-17, 10}, {-17, 10}, {-17, 10}, {-17, 10},
862     {16, 10}, {16, 10}, {16, 10}, {16, 10},
863     {-16, 10}, {-16, 10}, {-16, 10}, {-16, 10},
864     {15, 10}, {15, 10}, {15, 10}, {15, 10},
865     {-15, 10}, {-15, 10}, {-15, 10}, {-15, 10},
866     {14, 10}, {14, 10}, {14, 10}, {14, 10},
867     {-14, 10}, {-14, 10}, {-14, 10}, {-14, 10},
868     {13, 10}, {13, 10}, {13, 10}, {13, 10},
869 edgomez 1.6 {-13, 10}, {-13, 10}, {-13, 10}, {-13, 10}
870 Isibaar 1.1 };
871    
872 edgomez 1.10 static short const dc_threshold[] = {
873 edgomez 1.13 21514, 26984, 8307, 28531, 29798, 24951, 25970, 26912,
874     8307, 25956, 26994, 25974, 8292, 29286, 28015, 29728,
875     25960, 18208, 21838, 18208, 19536, 22560, 26998, 8260,
876     28515, 25956, 8291, 12328, 14638, 12334, 11817, 22794,
877     30063, 8306, 28531, 29798, 24951, 25970, 25632, 29545,
878     29300, 25193, 29813, 29295, 26656, 29537, 29728, 8303,
879     26983, 25974, 24864, 25443, 29541, 8307, 28532, 26912,
880     29556, 29472, 30063, 25458, 8293, 28515, 25956, 2606
881 Isibaar 1.1 };
882    
883 edgomez 1.10 static VLC const dc_lum_tab[] = {
884 edgomez 1.7 {0, 0}, {4, 3}, {3, 3}, {0, 3},
885 Isibaar 1.1 {2, 2}, {2, 2}, {1, 2}, {1, 2},
886     };
887    
888 edgomez 1.7 #endif /* _VLC_CODES_H */