rv40vlc2.h
Go to the documentation of this file.
1 /*
2  * RealVideo 4 decoder
3  * copyright (c) 2007 Konstantin Shishkov
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 /**
23  * @file
24  * RV40 VLC tables used for macroblock information decoding
25  */
26 
27 #ifndef AVCODEC_RV40VLC2_H
28 #define AVCODEC_RV40VLC2_H
29 
30 #include <stdint.h>
31 
32 /**
33  * codes used for the first four block types
34  */
35 //@{
36 #define AIC_TOP_BITS 8
37 #define AIC_TOP_SIZE 16
39  0x01, 0x05, 0x01, 0x00, 0x03, 0x3D, 0x1D, 0x02,
40  0x04, 0x3C, 0x3F, 0x1C, 0x0D, 0x3E, 0x0C, 0x01
41 };
42 
44  1, 4, 5, 5, 5, 7, 6, 5, 4, 7, 7, 6, 5, 7, 5, 3
45 };
46 //@}
47 
48 /**
49  * codes used for determining a pair of block types
50  */
51 //@{
52 #define AIC_MODE2_NUM 20
53 #define AIC_MODE2_SIZE 81
54 #define AIC_MODE2_BITS 9
55 
57 { 0x0001, 0x0001, 0x0005, 0x01F5, 0x0011, 0x0049, 0x0000, 0x0048, 0x004B,
58  0x0035, 0x0003, 0x0034, 0x03C9, 0x01F4, 0x00C9, 0x004A, 0x0FD9, 0x03C8,
59  0x0010, 0x0037, 0x0001, 0x00C8, 0x0075, 0x01F7, 0x00CB, 0x0074, 0x0002,
60  0x01F6, 0x00CA, 0x01F1, 0x01F0, 0x1F81, 0x07F9, 0x1F80, 0x1F83, 0x07F8,
61  0x0077, 0x00F5, 0x0036, 0x07FB, 0x0076, 0x1F82, 0x00F4, 0x00F7, 0x07FA,
62  0x0071, 0x00F6, 0x03CB, 0x03CA, 0x0FD8, 0x00F1, 0x03F5, 0x1F8D, 0x07E5,
63  0x0013, 0x0031, 0x00F0, 0x0FDB, 0x00F3, 0x07E4, 0x0030, 0x01F3, 0x07E7,
64  0x03F4, 0x07E6, 0x0070, 0x3F19, 0x01F2, 0x3F18, 0x0FDA, 0x0033, 0x07E1,
65  0x01FD, 0x01FC, 0x0073, 0x01FF, 0x0FC5, 0x0FC4, 0x0FC7, 0x03F7, 0x0072, },
66 { 0x0005, 0x0005, 0x0005, 0x0079, 0x0005, 0x000D, 0x001D, 0x0078, 0x0069,
67  0x0004, 0x0001, 0x0007, 0x0068, 0x001C, 0x001F, 0x0004, 0x006B, 0x000C,
68  0x0004, 0x001E, 0x0006, 0x006A, 0x0015, 0x000F, 0x0014, 0x0017, 0x0007,
69  0x0016, 0x000E, 0x0011, 0x0009, 0x00D1, 0x00D0, 0x0181, 0x00D3, 0x007B,
70  0x0010, 0x0013, 0x0004, 0x00D2, 0x0007, 0x0319, 0x0008, 0x007A, 0x00DD,
71  0x0019, 0x0006, 0x000B, 0x0065, 0x00DC, 0x0012, 0x0064, 0x0180, 0x00DF,
72  0x0006, 0x0018, 0x0001, 0x00DE, 0x001D, 0x00D9, 0x001B, 0x0067, 0x000A,
73  0x00D8, 0x00DB, 0x001C, 0x0318, 0x00DA, 0x0635, 0x0183, 0x0000, 0x00C5,
74  0x0066, 0x0061, 0x0035, 0x00C4, 0x0182, 0x0634, 0x031B, 0x00C7, 0x001F, },
75 { 0x0005, 0x0001, 0x001D, 0x01C1, 0x0035, 0x00F1, 0x006D, 0x00F0, 0x0049,
76  0x0000, 0x0004, 0x0003, 0x00F3, 0x0048, 0x0034, 0x006C, 0x01C0, 0x01C3,
77  0x0007, 0x0006, 0x0001, 0x006F, 0x0002, 0x004B, 0x006E, 0x001C, 0x0005,
78  0x0069, 0x0068, 0x006B, 0x0037, 0x01C2, 0x00F2, 0x0395, 0x01CD, 0x00FD,
79  0x006A, 0x0036, 0x0015, 0x01CC, 0x0014, 0x0394, 0x004A, 0x00FC, 0x00FF,
80  0x0017, 0x0031, 0x00FE, 0x01CF, 0x0397, 0x00F9, 0x01CE, 0x0725, 0x0396,
81  0x0016, 0x0030, 0x0075, 0x0724, 0x00F8, 0x0727, 0x0033, 0x0391, 0x0390,
82  0x0011, 0x0032, 0x001F, 0x00FB, 0x0074, 0x0726, 0x00FA, 0x001E, 0x0077,
83  0x0019, 0x0018, 0x0004, 0x0010, 0x003D, 0x0076, 0x0071, 0x0013, 0x0001, },
84 { 0x000D, 0x0019, 0x0011, 0x0015, 0x0061, 0x0019, 0x0014, 0x01AD, 0x0060,
85  0x0018, 0x0001, 0x0005, 0x001B, 0x0010, 0x0019, 0x0005, 0x0017, 0x0018,
86  0x0016, 0x0004, 0x0004, 0x0013, 0x000C, 0x0012, 0x001A, 0x0018, 0x0005,
87  0x000F, 0x001B, 0x0004, 0x001D, 0x0011, 0x001C, 0x0010, 0x000E, 0x001B,
88  0x0013, 0x001F, 0x001A, 0x0029, 0x0005, 0x0063, 0x001E, 0x0009, 0x0062,
89  0x0008, 0x0007, 0x0007, 0x0019, 0x0004, 0x001A, 0x0018, 0x006D, 0x0007,
90  0x001B, 0x0007, 0x001A, 0x006C, 0x0006, 0x0012, 0x0005, 0x006F, 0x000B,
91  0x006E, 0x0069, 0x001D, 0x0359, 0x0028, 0x002B, 0x002A, 0x001C, 0x00D5,
92  0x0358, 0x001F, 0x0001, 0x001E, 0x0068, 0x00D4, 0x00D7, 0x0019, 0x0000, },
93 { 0x00B9, 0x0061, 0x0060, 0x00B8, 0x02B5, 0x01AD, 0x00BB, 0x0AF5, 0x0151,
94  0x0001, 0x0001, 0x0005, 0x0000, 0x0003, 0x0005, 0x0004, 0x0063, 0x0025,
95  0x00BA, 0x0004, 0x0007, 0x0062, 0x00A5, 0x0024, 0x006D, 0x0002, 0x006C,
96  0x02B4, 0x000D, 0x006F, 0x0027, 0x00A4, 0x0026, 0x01AC, 0x0150, 0x01AF,
97  0x01AE, 0x0021, 0x006E, 0x02B7, 0x0020, 0x0153, 0x0023, 0x00A7, 0x0152,
98  0x00A6, 0x0006, 0x000C, 0x0022, 0x01A9, 0x0019, 0x002D, 0x02B6, 0x01A8,
99  0x000F, 0x0007, 0x000E, 0x00A1, 0x0069, 0x002C, 0x0001, 0x01AB, 0x00A0,
100  0x02B1, 0x00A3, 0x002F, 0x0AF4, 0x02B0, 0x0AF7, 0x02B3, 0x0068, 0x015D,
101  0x0AF6, 0x01AA, 0x0055, 0x015C, 0x02B2, 0x0579, 0x0578, 0x015F, 0x00A2, },
102 { 0x0905, 0x013D, 0x013C, 0x0904, 0x121D, 0x049D, 0x049C, 0x243D, 0x0907,
103  0x00ED, 0x0001, 0x0015, 0x0041, 0x013F, 0x0031, 0x0014, 0x025D, 0x025C,
104  0x013E, 0x000D, 0x0000, 0x0040, 0x0139, 0x0043, 0x0030, 0x0017, 0x0033,
105  0x0906, 0x0032, 0x0042, 0x00EC, 0x025F, 0x00EF, 0x025E, 0x049F, 0x0138,
106  0x0901, 0x013B, 0x0259, 0x121C, 0x049E, 0x0900, 0x0258, 0x243C, 0x121F,
107  0x0903, 0x003D, 0x00EE, 0x025B, 0x025A, 0x004D, 0x013A, 0x0902, 0x0245,
108  0x00E9, 0x0016, 0x00E8, 0x0499, 0x0125, 0x0244, 0x004C, 0x0498, 0x090D,
109  0x00EB, 0x003C, 0x0011, 0x049B, 0x049A, 0x0485, 0x00EA, 0x003F, 0x0124,
110  0x090C, 0x003E, 0x0039, 0x0095, 0x0247, 0x0246, 0x0484, 0x0094, 0x0038, },
111 { 0x0F09, 0x00CD, 0x01FD, 0x0791, 0x1E6D, 0x0790, 0x03D9, 0x3CD1, 0x3CD0,
112  0x0075, 0x0001, 0x0001, 0x0035, 0x00CC, 0x0011, 0x0000, 0x03D8, 0x01FC,
113  0x03DB, 0x0010, 0x0003, 0x00CF, 0x03DA, 0x00CE, 0x0074, 0x0034, 0x0077,
114  0x0793, 0x0013, 0x0076, 0x0071, 0x03C5, 0x0070, 0x01FF, 0x0792, 0x01FE,
115  0x01F9, 0x0037, 0x00C9, 0x0F08, 0x01F8, 0x03C4, 0x00C8, 0x0F0B, 0x079D,
116  0x03C7, 0x0001, 0x0012, 0x0073, 0x00CB, 0x0005, 0x0036, 0x03C6, 0x0072,
117  0x007D, 0x0002, 0x00CA, 0x079C, 0x01FB, 0x00F5, 0x0031, 0x079F, 0x0F0A,
118  0x0F35, 0x079E, 0x01FA, 0x1E6C, 0x1E6F, 0x3CD3, 0x0799, 0x03C1, 0x1E6E,
119  0x3CD2, 0x0030, 0x00F4, 0x007C, 0x03C0, 0x03C3, 0x0798, 0x01E5, 0x00F7, },
120 { 0x01A5, 0x0001, 0x001D, 0x0021, 0x00A1, 0x000D, 0x0061, 0x06B9, 0x00A0,
121  0x0060, 0x0001, 0x0005, 0x000C, 0x0020, 0x001C, 0x0004, 0x01A4, 0x01A7,
122  0x00A3, 0x001F, 0x001E, 0x0023, 0x0022, 0x002D, 0x002C, 0x0063, 0x0062,
123  0x1A81, 0x01A6, 0x01A1, 0x06B8, 0x06BB, 0x00A2, 0x06BA, 0x0D59, 0x06A5,
124  0x01A0, 0x000F, 0x006D, 0x06A4, 0x002F, 0x00AD, 0x006C, 0x06A7, 0x00AC,
125  0x0D58, 0x000E, 0x01A3, 0x00AF, 0x00AE, 0x006F, 0x01A2, 0x0D5B, 0x00A9,
126  0x0019, 0x0001, 0x0009, 0x00A8, 0x006E, 0x002E, 0x0000, 0x01AD, 0x00AB,
127  0x00AA, 0x0355, 0x0029, 0x1A80, 0x1A83, 0x1A82, 0x0354, 0x01AC, 0x0D5A,
128  0x1A8D, 0x01AF, 0x0357, 0x0D45, 0x0D44, 0x0D47, 0x1A8C, 0x06A6, 0x06A1, },
129 { 0x0001, 0x0011, 0x0005, 0x0775, 0x00F9, 0x00F8, 0x0031, 0x0030, 0x0049,
130  0x00FB, 0x0010, 0x0033, 0x0EC9, 0x038D, 0x038C, 0x00FA, 0x038F, 0x0774,
131  0x0048, 0x0032, 0x0000, 0x01D5, 0x00E5, 0x038E, 0x00E4, 0x0013, 0x000D,
132  0x0389, 0x0777, 0x0388, 0x038B, 0x1DF9, 0x0EC8, 0x3BC9, 0x1DF8, 0x038A,
133  0x03B5, 0x0776, 0x00E7, 0x3BC8, 0x01D4, 0x3BCB, 0x0ECB, 0x0771, 0x0ECA,
134  0x01D7, 0x03B4, 0x01D6, 0x1DFB, 0x0EF5, 0x0770, 0x0EF4, 0x3BCA, 0x0773,
135  0x00E6, 0x03B7, 0x004B, 0x1DFA, 0x03B6, 0x0EF7, 0x00E1, 0x0EF6, 0x0EF1,
136  0x03B1, 0x01D1, 0x003D, 0x0EF0, 0x0772, 0x077D, 0x077C, 0x003C, 0x01D0,
137  0x03B0, 0x01D3, 0x003F, 0x03B3, 0x01D2, 0x0EF3, 0x077F, 0x00E0, 0x004A, },
138 { 0x0015, 0x0049, 0x0014, 0x07D1, 0x03FD, 0x03FC, 0x01C1, 0x01C0, 0x00F1,
139  0x0017, 0x0001, 0x0001, 0x01C3, 0x0048, 0x004B, 0x0016, 0x0031, 0x01C2,
140  0x004A, 0x0011, 0x0000, 0x01CD, 0x00F0, 0x01CC, 0x0075, 0x0010, 0x000D,
141  0x03FF, 0x01CF, 0x01CE, 0x07D0, 0x0F81, 0x07D3, 0x1F1D, 0x0F80, 0x07D2,
142  0x01C9, 0x03FE, 0x0074, 0x07DD, 0x00F3, 0x1F1C, 0x07DC, 0x03F9, 0x07DF,
143  0x00F2, 0x00FD, 0x0077, 0x07DE, 0x07D9, 0x01C8, 0x07D8, 0x0F83, 0x03F8,
144  0x0030, 0x0076, 0x0013, 0x0F82, 0x00FC, 0x03FB, 0x0033, 0x03FA, 0x03E5,
145  0x03E4, 0x01CB, 0x0032, 0x1F1F, 0x03E7, 0x07DB, 0x07DA, 0x003D, 0x01CA,
146  0x07C5, 0x03E6, 0x0071, 0x0F8D, 0x07C4, 0x1F1E, 0x0F8C, 0x03E1, 0x01F5, },
147 { 0x0019, 0x0065, 0x0018, 0x0351, 0x0350, 0x0353, 0x0021, 0x0020, 0x0064,
148  0x001D, 0x0005, 0x0005, 0x01A5, 0x0023, 0x0067, 0x0005, 0x0066, 0x0022,
149  0x001B, 0x0004, 0x0001, 0x0004, 0x001C, 0x0061, 0x001A, 0x0005, 0x0004,
150  0x0007, 0x002D, 0x0006, 0x002C, 0x01A4, 0x002F, 0x0352, 0x035D, 0x0060,
151  0x0001, 0x002E, 0x001F, 0x035C, 0x0000, 0x06B1, 0x01A7, 0x0029, 0x01A6,
152  0x0028, 0x0063, 0x0062, 0x035F, 0x01A1, 0x002B, 0x06B0, 0x06B3, 0x01A0,
153  0x0003, 0x006D, 0x001E, 0x035E, 0x006C, 0x06B2, 0x0002, 0x01A3, 0x01A2,
154  0x000D, 0x0005, 0x0007, 0x01AD, 0x006F, 0x002A, 0x006E, 0x0004, 0x0004,
155  0x000C, 0x0007, 0x0006, 0x000F, 0x000E, 0x00D5, 0x0009, 0x0006, 0x0007, },
156 { 0x0065, 0x0181, 0x0064, 0x36C9, 0x06D5, 0x0DB5, 0x0379, 0x0180, 0x0183,
157  0x00D5, 0x001D, 0x001C, 0x0DB4, 0x0182, 0x0378, 0x00D4, 0x00D7, 0x06D4,
158  0x0067, 0x001F, 0x0001, 0x00D6, 0x00D1, 0x018D, 0x0066, 0x0001, 0x0000,
159  0x037B, 0x06D7, 0x037A, 0x0DB7, 0x36C8, 0x06D6, 0x0DB6, 0x1B79, 0x0DB1,
160  0x018C, 0x0365, 0x00D0, 0x1B78, 0x00D3, 0x1B7B, 0x0364, 0x06D1, 0x06D0,
161  0x018F, 0x018E, 0x00D2, 0x36CB, 0x0367, 0x0366, 0x06D3, 0x0DB0, 0x06D2,
162  0x0361, 0x06DD, 0x0189, 0x36CA, 0x0360, 0x36F5, 0x0188, 0x0DB3, 0x36F4,
163  0x0009, 0x0008, 0x0005, 0x06DC, 0x00DD, 0x018B, 0x00DC, 0x0004, 0x000B,
164  0x018A, 0x0061, 0x0003, 0x0363, 0x00DF, 0x06DF, 0x0362, 0x000A, 0x001E, },
165 { 0x001D, 0x0061, 0x000D, 0x0D55, 0x06B9, 0x06B8, 0x01A5, 0x0021, 0x0020,
166  0x0023, 0x000C, 0x0060, 0x0D54, 0x00AD, 0x00AC, 0x0022, 0x00AF, 0x06BB,
167  0x000F, 0x001C, 0x0001, 0x002D, 0x0063, 0x01A4, 0x000E, 0x0001, 0x0005,
168  0x01A7, 0x06BA, 0x01A6, 0x06A5, 0x0D57, 0x0D56, 0x1ABD, 0x0D51, 0x00AE,
169  0x002C, 0x00A9, 0x002F, 0x0D50, 0x01A1, 0x1ABC, 0x06A4, 0x06A7, 0x06A6,
170  0x00A8, 0x06A1, 0x01A0, 0x1ABF, 0x0D53, 0x06A0, 0x0D52, 0x1ABE, 0x06A3,
171  0x0062, 0x002E, 0x0009, 0x0D5D, 0x01A3, 0x0D5C, 0x006D, 0x00AB, 0x06A2,
172  0x006C, 0x001F, 0x0001, 0x06AD, 0x0029, 0x01A2, 0x0028, 0x0004, 0x001E,
173  0x01AD, 0x006F, 0x0000, 0x01AC, 0x01AF, 0x06AC, 0x00AA, 0x006E, 0x0019, },
174 { 0x0019, 0x007D, 0x0018, 0x01B5, 0x000D, 0x01B4, 0x007C, 0x007F, 0x01B7,
175  0x000C, 0x001B, 0x001A, 0x01B6, 0x000F, 0x00D5, 0x0019, 0x007E, 0x00D4,
176  0x0018, 0x001B, 0x0001, 0x000E, 0x0011, 0x0009, 0x0005, 0x0005, 0x0005,
177  0x00D7, 0x01B1, 0x0008, 0x01B0, 0x0079, 0x06FD, 0x0371, 0x0370, 0x00D6,
178  0x0078, 0x01B3, 0x0010, 0x0373, 0x0013, 0x06FC, 0x007B, 0x007A, 0x00D1,
179  0x00D0, 0x00D3, 0x0065, 0x0372, 0x06FF, 0x0064, 0x06FE, 0x037D, 0x00D2,
180  0x00DD, 0x0067, 0x0004, 0x037C, 0x0012, 0x01B2, 0x0007, 0x0066, 0x01BD,
181  0x0006, 0x0061, 0x0004, 0x01BC, 0x001A, 0x0060, 0x001D, 0x0004, 0x001C,
182  0x0063, 0x0001, 0x0007, 0x000B, 0x0000, 0x0062, 0x000A, 0x0005, 0x0007, },
183 { 0x0069, 0x0045, 0x0068, 0x04BD, 0x0255, 0x04BC, 0x00E5, 0x00E4, 0x0031,
184  0x0030, 0x0019, 0x0001, 0x0121, 0x00E7, 0x00E6, 0x0033, 0x00E1, 0x00E0,
185  0x006B, 0x0018, 0x0001, 0x0044, 0x0032, 0x0047, 0x006A, 0x001B, 0x0005,
186  0x003D, 0x0046, 0x0015, 0x0041, 0x0120, 0x0123, 0x04BF, 0x0122, 0x0040,
187  0x003C, 0x00E3, 0x0014, 0x0254, 0x0043, 0x0975, 0x012D, 0x00E2, 0x00ED,
188  0x0042, 0x00EC, 0x004D, 0x0257, 0x0256, 0x0251, 0x04BE, 0x0974, 0x0250,
189  0x00EF, 0x00EE, 0x004C, 0x04B9, 0x012C, 0x04B8, 0x004F, 0x04BB, 0x0253,
190  0x003F, 0x0017, 0x0001, 0x0252, 0x00E9, 0x00E8, 0x00EB, 0x0000, 0x0003,
191  0x0016, 0x0002, 0x0004, 0x004E, 0x003E, 0x00EA, 0x0049, 0x000D, 0x0007, },
192 { 0x000D, 0x01BD, 0x000C, 0x0D31, 0x0D30, 0x0D33, 0x0359, 0x0358, 0x002D,
193  0x0065, 0x001D, 0x001C, 0x0D32, 0x035B, 0x035A, 0x002C, 0x01BC, 0x0345,
194  0x000F, 0x001F, 0x0001, 0x002F, 0x0064, 0x01BF, 0x0067, 0x0001, 0x0005,
195  0x0066, 0x002E, 0x0061, 0x0029, 0x0695, 0x0694, 0x0697, 0x0696, 0x0060,
196  0x01BE, 0x0D3D, 0x0028, 0x1A49, 0x0344, 0x1A48, 0x1A4B, 0x0D3C, 0x0691,
197  0x002B, 0x01B9, 0x002A, 0x0D3F, 0x0690, 0x0347, 0x0D3E, 0x1A4A, 0x0346,
198  0x00D5, 0x0341, 0x0063, 0x0D39, 0x0340, 0x0D38, 0x01B8, 0x0D3B, 0x0D3A,
199  0x00D4, 0x0062, 0x0000, 0x0693, 0x01BB, 0x0343, 0x0342, 0x001E, 0x000E,
200  0x006D, 0x0009, 0x0001, 0x006C, 0x00D7, 0x034D, 0x01BA, 0x0008, 0x0004, },
201 { 0x0075, 0x00CD, 0x0035, 0x03C1, 0x03C0, 0x07F9, 0x03C3, 0x1F8D, 0x00CC,
202  0x0074, 0x0011, 0x0010, 0x03C2, 0x0FD9, 0x01F1, 0x00CF, 0x03CD, 0x00CE,
203  0x0034, 0x0001, 0x0001, 0x0037, 0x00C9, 0x00C8, 0x0036, 0x0000, 0x0001,
204  0x0FD8, 0x03CC, 0x00CB, 0x01F0, 0x07F8, 0x03CF, 0x07FB, 0x07FA, 0x00CA,
205  0x01F3, 0x03CE, 0x00F5, 0x0FDB, 0x00F4, 0x07E5, 0x07E4, 0x07E7, 0x01F2,
206  0x07E6, 0x03C9, 0x01FD, 0x0FDA, 0x1F8C, 0x07E1, 0x1F8F, 0x1F8E, 0x03C8,
207  0x03CB, 0x0077, 0x0076, 0x0FC5, 0x03CA, 0x07E0, 0x00F7, 0x0FC4, 0x03F5,
208  0x00F6, 0x01FC, 0x0003, 0x03F4, 0x0071, 0x03F7, 0x00F1, 0x0013, 0x0031,
209  0x0030, 0x0070, 0x0005, 0x0012, 0x0073, 0x01FF, 0x0072, 0x007D, 0x0002, },
210 { 0x0061, 0x0055, 0x0060, 0x02C9, 0x02C8, 0x02CB, 0x0171, 0x00B5, 0x0054,
211  0x0001, 0x0001, 0x0001, 0x0057, 0x0001, 0x0063, 0x001D, 0x0062, 0x0039,
212  0x006D, 0x0000, 0x0005, 0x0038, 0x0056, 0x00B4, 0x006C, 0x0003, 0x001C,
213  0x006F, 0x003B, 0x0002, 0x003A, 0x0170, 0x00B7, 0x0173, 0x0051, 0x006E,
214  0x0025, 0x0050, 0x0069, 0x02CA, 0x0024, 0x0027, 0x0172, 0x00B6, 0x00B1,
215  0x000D, 0x000C, 0x001F, 0x017D, 0x0026, 0x0068, 0x0053, 0x017C, 0x006B,
216  0x001E, 0x000F, 0x0004, 0x017F, 0x006A, 0x02F5, 0x0019, 0x0021, 0x0052,
217  0x02F4, 0x02F7, 0x0020, 0x0BCD, 0x05E5, 0x05E4, 0x0BCC, 0x0023, 0x00B0,
218  0x02F6, 0x00B3, 0x0022, 0x02F1, 0x02F0, 0x0BCF, 0x0BCE, 0x017E, 0x005D, },
219 { 0x00BD, 0x0025, 0x01A1, 0x0159, 0x0299, 0x00BC, 0x0024, 0x0505, 0x0504,
220  0x01A0, 0x0001, 0x001D, 0x006D, 0x001C, 0x0001, 0x0005, 0x0027, 0x01A3,
221  0x0158, 0x001F, 0x001E, 0x01A2, 0x0026, 0x0021, 0x000D, 0x0020, 0x0023,
222  0x0298, 0x006C, 0x0022, 0x00BF, 0x00BE, 0x01AD, 0x002D, 0x029B, 0x00B9,
223  0x01AC, 0x00B8, 0x01AF, 0x029A, 0x006F, 0x015B, 0x006E, 0x0285, 0x0284,
224  0x01AE, 0x0019, 0x002C, 0x01A9, 0x01A8, 0x000C, 0x000F, 0x015A, 0x00BB,
225  0x000E, 0x0000, 0x0069, 0x01AB, 0x0018, 0x01AA, 0x0004, 0x0055, 0x00BA,
226  0x0507, 0x0145, 0x0054, 0x0506, 0x00A5, 0x0501, 0x00A4, 0x0057, 0x0500,
227  0x0A05, 0x0144, 0x00A7, 0x0287, 0x0286, 0x0503, 0x0147, 0x0A04, 0x0146, },
228 { 0x0759, 0x0041, 0x00E5, 0x03BD, 0x0E9D, 0x012D, 0x012C, 0x3A1D, 0x03BC,
229  0x012F, 0x000D, 0x0040, 0x00E4, 0x03BF, 0x0043, 0x0042, 0x0758, 0x03BE,
230  0x00E7, 0x0001, 0x0000, 0x003D, 0x00E6, 0x0015, 0x0014, 0x0017, 0x003C,
231  0x743D, 0x012E, 0x03B9, 0x03B8, 0x0E9C, 0x03BB, 0x075B, 0x3A1C, 0x0E9F,
232  0x0129, 0x00E1, 0x0128, 0x0E9E, 0x012B, 0x075A, 0x00E0, 0x0E99, 0x0745,
233  0x3A1F, 0x03BA, 0x0744, 0x0E98, 0x1D0D, 0x03A5, 0x0E9B, 0x743C, 0x0E9A,
234  0x012A, 0x004D, 0x00E3, 0x0E85, 0x01D5, 0x0E84, 0x004C, 0x0747, 0x1D0C,
235  0x01D4, 0x003F, 0x0016, 0x0746, 0x03A4, 0x0741, 0x004F, 0x003E, 0x01D7,
236  0x0740, 0x000C, 0x0011, 0x004E, 0x00E2, 0x00ED, 0x00EC, 0x0049, 0x0048, },
237 };
238 
240 { 1, 5, 4, 10, 6, 8, 5, 8, 8,
241  7, 5, 7, 11, 10, 9, 8, 13, 11,
242  6, 7, 3, 9, 8, 10, 9, 8, 5,
243  10, 9, 10, 10, 14, 12, 14, 14, 12,
244  8, 9, 7, 12, 8, 14, 9, 9, 12,
245  8, 9, 11, 11, 13, 9, 11, 14, 12,
246  6, 7, 9, 13, 9, 12, 7, 10, 12,
247  11, 12, 8, 15, 10, 15, 13, 7, 12,
248  10, 10, 8, 10, 13, 13, 13, 11, 8, },
249 { 4, 6, 5, 11, 8, 10, 7, 11, 9,
250  4, 1, 4, 9, 7, 7, 5, 9, 10,
251  6, 7, 4, 9, 9, 10, 9, 9, 6,
252  9, 10, 9, 10, 12, 12, 13, 12, 11,
253  9, 9, 8, 12, 8, 14, 10, 11, 12,
254  7, 8, 10, 11, 12, 9, 11, 13, 12,
255  6, 7, 8, 12, 9, 12, 7, 11, 10,
256  12, 12, 9, 14, 12, 15, 13, 8, 12,
257  11, 11, 10, 12, 13, 15, 14, 12, 9, },
258 { 5, 7, 6, 12, 9, 11, 8, 11, 10,
259  7, 5, 7, 11, 10, 9, 8, 12, 12,
260  5, 5, 1, 8, 7, 10, 8, 6, 4,
261  8, 8, 8, 9, 12, 11, 13, 12, 11,
262  8, 9, 8, 12, 8, 13, 10, 11, 11,
263  8, 9, 11, 12, 13, 11, 12, 14, 13,
264  8, 9, 10, 14, 11, 14, 9, 13, 13,
265  8, 9, 6, 11, 10, 14, 11, 6, 10,
266  6, 6, 4, 8, 9, 10, 10, 8, 5, },
267 { 11, 7, 8, 10, 12, 9, 10, 14, 12,
268  7, 1, 5, 7, 8, 6, 4, 10, 9,
269  10, 5, 4, 8, 11, 8, 7, 6, 7,
270  11, 6, 7, 8, 10, 8, 10, 11, 9,
271  10, 8, 9, 13, 9, 12, 8, 11, 12,
272  11, 4, 7, 8, 9, 6, 8, 12, 9,
273  8, 5, 8, 12, 9, 10, 6, 12, 11,
274  12, 12, 10, 15, 13, 13, 13, 10, 13,
275  15, 10, 9, 10, 12, 13, 13, 10, 9, },
276 { 11, 8, 8, 11, 13, 10, 11, 15, 12,
277  7, 1, 4, 7, 7, 5, 4, 8, 9,
278  11, 5, 5, 8, 11, 9, 8, 7, 8,
279  13, 7, 8, 9, 11, 9, 10, 12, 10,
280  10, 9, 8, 13, 9, 12, 9, 11, 12,
281  11, 5, 7, 9, 10, 6, 9, 13, 10,
282  7, 4, 7, 11, 8, 9, 5, 10, 11,
283  13, 11, 9, 15, 13, 15, 13, 8, 12,
284  15, 10, 10, 12, 13, 14, 14, 12, 11, },
285 { 12, 9, 9, 12, 13, 11, 11, 14, 12,
286  8, 2, 5, 7, 9, 6, 5, 10, 10,
287  9, 4, 2, 7, 9, 7, 6, 5, 6,
288  12, 6, 7, 8, 10, 8, 10, 11, 9,
289  12, 9, 10, 13, 11, 12, 10, 14, 13,
290  12, 6, 8, 10, 10, 7, 9, 12, 10,
291  8, 5, 8, 11, 9, 10, 7, 11, 12,
292  8, 6, 5, 11, 11, 11, 8, 6, 9,
293  12, 6, 6, 8, 10, 10, 11, 8, 6, },
294 { 13, 9, 10, 12, 14, 12, 11, 15, 15,
295  8, 1, 5, 7, 9, 6, 5, 11, 10,
296  11, 6, 5, 9, 11, 9, 8, 7, 8,
297  12, 6, 8, 8, 11, 8, 10, 12, 10,
298  10, 7, 9, 13, 10, 11, 9, 13, 12,
299  11, 3, 6, 8, 9, 4, 7, 11, 8,
300  8, 5, 9, 12, 10, 9, 7, 12, 13,
301  13, 12, 10, 14, 14, 15, 12, 11, 14,
302  15, 7, 9, 8, 11, 11, 12, 10, 9, },
303 { 10, 5, 6, 9, 11, 7, 8, 12, 11,
304  8, 1, 4, 7, 9, 6, 4, 10, 10,
305  11, 6, 6, 9, 9, 9, 9, 8, 8,
306  14, 10, 10, 12, 12, 11, 12, 13, 12,
307  10, 7, 8, 12, 9, 11, 8, 12, 11,
308  13, 7, 10, 11, 11, 8, 10, 13, 11,
309  6, 3, 7, 11, 8, 9, 5, 10, 11,
310  11, 11, 9, 14, 14, 14, 11, 10, 13,
311  14, 10, 11, 13, 13, 13, 14, 12, 12, },
312 { 2, 5, 3, 11, 8, 8, 6, 6, 7,
313  8, 5, 6, 12, 10, 10, 8, 10, 11,
314  7, 6, 2, 9, 8, 10, 8, 5, 4,
315  10, 11, 10, 10, 13, 12, 14, 13, 10,
316  10, 11, 8, 14, 9, 14, 12, 11, 12,
317  9, 10, 9, 13, 12, 11, 12, 14, 11,
318  8, 10, 7, 13, 10, 12, 8, 12, 12,
319  10, 9, 6, 12, 11, 11, 11, 6, 9,
320  10, 9, 6, 10, 9, 12, 11, 8, 7, },
321 { 6, 8, 6, 12, 11, 11, 10, 10, 9,
322  6, 1, 3, 10, 8, 8, 6, 7, 10,
323  8, 6, 3, 10, 9, 10, 8, 6, 5,
324  11, 10, 10, 12, 13, 12, 14, 13, 12,
325  10, 11, 8, 12, 9, 14, 12, 11, 12,
326  9, 9, 8, 12, 12, 10, 12, 13, 11,
327  7, 8, 6, 13, 9, 11, 7, 11, 11,
328  11, 10, 7, 14, 11, 12, 12, 7, 10,
329  12, 11, 8, 13, 12, 14, 13, 11, 10, },
330 { 7, 10, 7, 13, 13, 13, 11, 11, 10,
331  8, 5, 6, 12, 11, 10, 9, 10, 11,
332  7, 5, 1, 9, 8, 10, 7, 4, 4,
333  9, 11, 9, 11, 12, 11, 13, 13, 10,
334  9, 11, 8, 13, 9, 14, 12, 11, 12,
335  11, 10, 10, 13, 12, 11, 14, 14, 12,
336  9, 10, 8, 13, 10, 14, 9, 12, 12,
337  9, 7, 4, 12, 10, 11, 10, 6, 7,
338  9, 7, 4, 9, 9, 11, 9, 7, 5, },
339 { 7, 9, 7, 14, 11, 12, 10, 9, 9,
340  8, 5, 5, 12, 9, 10, 8, 8, 11,
341  7, 5, 2, 8, 8, 9, 7, 4, 4,
342  10, 11, 10, 12, 14, 11, 12, 13, 12,
343  9, 10, 8, 13, 8, 13, 10, 11, 11,
344  9, 9, 8, 14, 10, 10, 11, 12, 11,
345  10, 11, 9, 14, 10, 14, 9, 12, 14,
346  6, 6, 3, 11, 8, 9, 8, 3, 6,
347  9, 7, 4, 10, 8, 11, 10, 6, 5, },
348 { 6, 8, 7, 13, 12, 12, 10, 9, 9,
349  9, 7, 8, 13, 11, 11, 9, 11, 12,
350  7, 6, 1, 9, 8, 10, 7, 5, 4,
351  10, 12, 10, 12, 13, 13, 14, 13, 11,
352  9, 11, 9, 13, 10, 14, 12, 12, 12,
353  11, 12, 10, 14, 13, 12, 13, 14, 12,
354  8, 9, 7, 13, 10, 13, 8, 11, 12,
355  8, 6, 3, 12, 9, 10, 9, 4, 6,
356  10, 8, 5, 10, 10, 12, 11, 8, 6, },
357 { 7, 10, 7, 12, 9, 12, 10, 10, 12,
358  9, 7, 7, 12, 9, 11, 6, 10, 11,
359  6, 6, 1, 9, 8, 9, 7, 4, 5,
360  11, 12, 9, 12, 10, 14, 13, 13, 11,
361  10, 12, 8, 13, 8, 14, 10, 10, 11,
362  11, 11, 10, 13, 14, 10, 14, 13, 11,
363  11, 10, 7, 13, 8, 12, 7, 10, 12,
364  7, 10, 4, 12, 6, 10, 8, 5, 8,
365  10, 7, 4, 9, 7, 10, 9, 6, 5, },
366 { 7, 9, 7, 13, 12, 13, 10, 10, 8,
367  8, 5, 6, 11, 10, 10, 8, 10, 10,
368  7, 5, 2, 9, 8, 9, 7, 5, 3,
369  8, 9, 7, 9, 11, 11, 13, 11, 9,
370  8, 10, 7, 12, 9, 14, 11, 10, 10,
371  9, 10, 9, 12, 12, 12, 13, 14, 12,
372  10, 10, 9, 13, 11, 13, 9, 13, 12,
373  8, 7, 4, 12, 10, 10, 10, 6, 6,
374  7, 6, 3, 9, 8, 10, 9, 6, 3, },
375 { 7, 10, 7, 13, 13, 13, 11, 11, 9,
376  8, 6, 6, 13, 11, 11, 9, 10, 11,
377  7, 6, 1, 9, 8, 10, 8, 5, 4,
378  8, 9, 8, 9, 12, 12, 12, 12, 8,
379  10, 13, 9, 14, 11, 14, 14, 13, 12,
380  9, 10, 9, 13, 12, 11, 13, 14, 11,
381  9, 11, 8, 13, 11, 13, 10, 13, 13,
382  9, 8, 5, 12, 10, 11, 11, 6, 7,
383  8, 7, 3, 8, 9, 11, 10, 7, 4, },
384 { 8, 9, 7, 11, 11, 12, 11, 14, 9,
385  8, 6, 6, 11, 13, 10, 9, 11, 9,
386  7, 5, 1, 7, 9, 9, 7, 5, 3,
387  13, 11, 9, 10, 12, 11, 12, 12, 9,
388  10, 11, 9, 13, 9, 12, 12, 12, 10,
389  12, 11, 10, 13, 14, 12, 14, 14, 11,
390  11, 8, 8, 13, 11, 12, 9, 13, 11,
391  9, 10, 5, 11, 8, 11, 9, 6, 7,
392  7, 8, 4, 6, 8, 10, 8, 8, 5, },
393 { 8, 10, 8, 13, 13, 13, 12, 11, 10,
394  5, 1, 3, 10, 7, 8, 6, 8, 9,
395  8, 7, 4, 9, 10, 11, 8, 7, 6,
396  8, 9, 7, 9, 12, 11, 12, 10, 8,
397  9, 10, 8, 13, 9, 9, 12, 11, 11,
398  7, 7, 6, 12, 9, 8, 10, 12, 8,
399  6, 7, 4, 12, 8, 13, 6, 9, 10,
400  13, 13, 9, 15, 14, 14, 15, 9, 11,
401  13, 11, 9, 13, 13, 15, 15, 12, 10, },
402 { 10, 8, 9, 11, 12, 10, 8, 13, 13,
403  9, 2, 5, 7, 5, 4, 3, 8, 9,
404  11, 5, 5, 9, 8, 8, 6, 8, 8,
405  12, 7, 8, 10, 10, 9, 8, 12, 10,
406  9, 10, 9, 12, 7, 11, 7, 12, 12,
407  9, 5, 8, 9, 9, 6, 6, 11, 10,
408  6, 4, 7, 9, 5, 9, 3, 9, 10,
409  13, 11, 9, 13, 10, 13, 10, 9, 13,
410  14, 11, 10, 12, 12, 13, 11, 14, 11, },
411 { 11, 7, 8, 10, 12, 9, 9, 14, 10,
412  9, 4, 7, 8, 10, 7, 7, 11, 10,
413  8, 2, 2, 6, 8, 5, 5, 5, 6,
414  15, 9, 10, 10, 12, 10, 11, 14, 12,
415  9, 8, 9, 12, 9, 11, 8, 12, 11,
416  14, 10, 11, 12, 13, 10, 12, 15, 12,
417  9, 7, 8, 12, 9, 12, 7, 11, 13,
418  9, 6, 5, 11, 10, 11, 7, 6, 9,
419  11, 4, 5, 7, 8, 8, 8, 7, 7, },
420 };
421 //@}
422 
423 /**
424  * Codes used for determining block type
425  */
426 //@{
427 #define AIC_MODE1_NUM 90
428 #define AIC_MODE1_SIZE 9
429 #define AIC_MODE1_BITS 7
430 
432  { 0x01, 0x01, 0x01, 0x11, 0x00, 0x09, 0x03, 0x10, 0x05,},
433  { 0x09, 0x01, 0x01, 0x05, 0x11, 0x00, 0x03, 0x21, 0x20,},
434  { 0x01, 0x01, 0x01, 0x11, 0x09, 0x10, 0x05, 0x00, 0x03,},
435  { 0x01, 0x01, 0x00, 0x03, 0x21, 0x05, 0x09, 0x20, 0x11,},
436  { 0x01, 0x09, 0x00, 0x29, 0x08, 0x15, 0x03, 0x0B, 0x28,},
437  { 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x02,},
438  { 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x01, 0x09, 0x08,},
439  { 0x01, 0x01, 0x01, 0x09, 0x01, 0x08, 0x00, 0x03, 0x05,},
440  { 0x01, 0x01, 0x01, 0x00, 0x05, 0x11, 0x09, 0x10, 0x03,},
441  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
442 
443  { 0x01, 0x01, 0x01, 0x05, 0x01, 0x00, 0x03, 0x09, 0x08,},
444  { 0x09, 0x01, 0x01, 0x05, 0x11, 0x00, 0x03, 0x21, 0x20,},
445  { 0x01, 0x01, 0x01, 0x0D, 0x05, 0x04, 0x00, 0x07, 0x0C,},
446  { 0x01, 0x01, 0x00, 0x05, 0x11, 0x03, 0x09, 0x21, 0x20,},
447  { 0x05, 0x01, 0x01, 0x11, 0x00, 0x09, 0x03, 0x21, 0x20,},
448  { 0x09, 0x01, 0x01, 0x00, 0x05, 0x01, 0x03, 0x11, 0x10,},
449  { 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x02,},
450  { 0x01, 0x01, 0x01, 0x09, 0x00, 0x05, 0x01, 0x03, 0x08,},
451  { 0x01, 0x01, 0x01, 0x09, 0x11, 0x05, 0x00, 0x10, 0x03,},
452  { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
453 
454  { 0x01, 0x00, 0x01, 0x09, 0x08, 0x15, 0x14, 0x0B, 0x03,},
455  { 0x0D, 0x01, 0x01, 0x05, 0x0C, 0x04, 0x01, 0x00, 0x07,},
456  { 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x03, 0x01, 0x01,},
457  { 0x05, 0x01, 0x01, 0x04, 0x19, 0x07, 0x18, 0x0D, 0x00,},
458  { 0x11, 0x09, 0x01, 0x21, 0x05, 0x20, 0x01, 0x00, 0x03,},
459  { 0x41, 0x01, 0x00, 0x05, 0x40, 0x03, 0x09, 0x21, 0x11,},
460  { 0x29, 0x01, 0x00, 0x28, 0x09, 0x15, 0x03, 0x08, 0x0B,},
461  { 0x01, 0x00, 0x01, 0x11, 0x09, 0x10, 0x05, 0x01, 0x03,},
462  { 0x05, 0x01, 0x01, 0x04, 0x0D, 0x0C, 0x07, 0x00, 0x01,},
463  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
464 
465  { 0x01, 0x00, 0x03, 0x05, 0x11, 0x10, 0x25, 0x24, 0x13,},
466  { 0x21, 0x01, 0x01, 0x00, 0x11, 0x03, 0x05, 0x20, 0x09,},
467  { 0x01, 0x01, 0x01, 0x00, 0x09, 0x11, 0x10, 0x05, 0x03,},
468  { 0x21, 0x05, 0x01, 0x01, 0x09, 0x00, 0x11, 0x20, 0x03,},
469  { 0x05, 0x01, 0x00, 0x04, 0x01, 0x19, 0x07, 0x18, 0x0D,},
470  { 0x11, 0x01, 0x00, 0x01, 0x09, 0x01, 0x03, 0x10, 0x05,},
471  { 0x1D, 0x01, 0x05, 0x0D, 0x0C, 0x04, 0x00, 0x1C, 0x0F,},
472  { 0x05, 0x19, 0x01, 0x04, 0x00, 0x18, 0x1B, 0x1A, 0x07,},
473  { 0x09, 0x01, 0x00, 0x01, 0x05, 0x03, 0x11, 0x10, 0x01,},
474  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
475 
476  { 0x01, 0x00, 0x03, 0x41, 0x05, 0x40, 0x09, 0x11, 0x21,},
477  { 0x05, 0x01, 0x01, 0x19, 0x04, 0x07, 0x00, 0x18, 0x0D,},
478  { 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x01, 0x00, 0x03,},
479  { 0x01, 0x05, 0x00, 0x0D, 0x01, 0x04, 0x07, 0x19, 0x18,},
480  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
481  { 0x31, 0x01, 0x05, 0x19, 0x04, 0x07, 0x00, 0x30, 0x0D,},
482  { 0x01, 0x00, 0x03, 0x11, 0x01, 0x05, 0x01, 0x09, 0x10,},
483  { 0x01, 0x05, 0x01, 0x11, 0x01, 0x10, 0x00, 0x03, 0x09,},
484  { 0x01, 0x09, 0x00, 0x29, 0x03, 0x08, 0x28, 0x15, 0x0B,},
485  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
486 
487  { 0x01, 0x01, 0x00, 0x09, 0x15, 0x03, 0x08, 0x14, 0x0B,},
488  { 0x11, 0x01, 0x01, 0x00, 0x09, 0x01, 0x03, 0x10, 0x05,},
489  { 0x01, 0x00, 0x03, 0x25, 0x11, 0x05, 0x10, 0x24, 0x13,},
490  { 0x11, 0x01, 0x00, 0x01, 0x09, 0x01, 0x05, 0x10, 0x03,},
491  { 0x05, 0x01, 0x00, 0x0D, 0x0C, 0x04, 0x0F, 0x1D, 0x1C,},
492  { 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x02,},
493  { 0x21, 0x01, 0x05, 0x09, 0x11, 0x00, 0x03, 0x41, 0x40,},
494  { 0x05, 0x01, 0x00, 0x1D, 0x1C, 0x0D, 0x0C, 0x0F, 0x04,},
495  { 0x05, 0x01, 0x00, 0x0D, 0x31, 0x04, 0x19, 0x30, 0x07,},
496  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
497 
498  { 0x01, 0x01, 0x00, 0x21, 0x05, 0x11, 0x03, 0x09, 0x20,},
499  { 0x01, 0x01, 0x00, 0x11, 0x03, 0x05, 0x01, 0x09, 0x10,},
500  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
501  { 0x05, 0x01, 0x04, 0x19, 0x07, 0x0D, 0x00, 0x31, 0x30,},
502  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
503  { 0x05, 0x01, 0x01, 0x11, 0x09, 0x00, 0x03, 0x21, 0x20,},
504  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
505  { 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x01, 0x01, 0x02,},
506  { 0x09, 0x01, 0x00, 0x29, 0x08, 0x15, 0x03, 0x28, 0x0B,},
507  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
508 
509  { 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x00, 0x01, 0x03,},
510  { 0x09, 0x01, 0x00, 0x29, 0x28, 0x15, 0x08, 0x03, 0x0B,},
511  { 0x01, 0x00, 0x01, 0x11, 0x05, 0x10, 0x09, 0x01, 0x03,},
512  { 0x05, 0x04, 0x01, 0x1D, 0x0D, 0x0C, 0x1C, 0x00, 0x0F,},
513  { 0x09, 0x11, 0x01, 0x41, 0x00, 0x40, 0x05, 0x03, 0x21,},
514  { 0x0D, 0x05, 0x01, 0x1D, 0x1C, 0x0C, 0x04, 0x00, 0x0F,},
515  { 0x41, 0x09, 0x01, 0x40, 0x00, 0x11, 0x05, 0x03, 0x21,},
516  { 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x00, 0x01, 0x03,},
517  { 0x05, 0x04, 0x01, 0x0D, 0x01, 0x0C, 0x07, 0x01, 0x00,},
518  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
519 
520  { 0x05, 0x04, 0x01, 0x07, 0x19, 0x31, 0x30, 0x0D, 0x00,},
521  { 0x21, 0x01, 0x01, 0x00, 0x11, 0x09, 0x20, 0x05, 0x03,},
522  { 0x05, 0x01, 0x01, 0x04, 0x07, 0x0D, 0x0C, 0x00, 0x01,},
523  { 0x21, 0x09, 0x01, 0x00, 0x20, 0x05, 0x23, 0x22, 0x03,},
524  { 0x31, 0x0D, 0x01, 0x19, 0x05, 0x30, 0x04, 0x07, 0x00,},
525  { 0x31, 0x05, 0x01, 0x04, 0x19, 0x00, 0x0D, 0x30, 0x07,},
526  { 0x31, 0x01, 0x00, 0x0D, 0x05, 0x19, 0x04, 0x30, 0x07,},
527  { 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02, 0x01, 0x01,},
528  { 0x01, 0x00, 0x01, 0x01, 0x05, 0x09, 0x08, 0x03, 0x01,},
529  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
530 };
531 
533  { 1, 4, 2, 7, 4, 6, 4, 7, 5,},
534  { 5, 1, 3, 4, 6, 3, 3, 7, 7,},
535  { 1, 4, 2, 7, 6, 7, 5, 4, 4,},
536  { 1, 3, 3, 3, 7, 4, 5, 7, 6,},
537  { 2, 4, 2, 6, 4, 5, 2, 4, 6,},
538  { 7, 2, 3, 4, 7, 1, 5, 7, 7,},
539  { 5, 1, 3, 6, 5, 5, 2, 7, 7,},
540  { 2, 5, 1, 7, 3, 7, 5, 5, 6,},
541  { 2, 4, 1, 4, 5, 7, 6, 7, 4,},
542  { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
543 
544  { 2, 1, 3, 6, 5, 5, 5, 7, 7,},
545  { 5, 1, 3, 4, 6, 3, 3, 7, 7,},
546  { 4, 1, 2, 6, 5, 5, 4, 5, 6,},
547  { 3, 1, 3, 4, 6, 3, 5, 7, 7,},
548  { 4, 1, 3, 6, 3, 5, 3, 7, 7,},
549  { 6, 1, 4, 4, 5, 2, 4, 7, 7,},
550  { 7, 1, 5, 7, 4, 3, 2, 7, 7,},
551  { 5, 3, 2, 7, 5, 6, 1, 5, 7,},
552  { 4, 1, 2, 6, 7, 5, 4, 7, 4,},
553  { 1, 0, 1, 0, 0, 0, 0, 0, 0,},
554 
555  { 3, 3, 1, 5, 5, 6, 6, 5, 3,},
556  { 6, 2, 1, 5, 6, 5, 4, 4, 5,},
557  { 6, 4, 1, 7, 6, 7, 6, 3, 2,},
558  { 4, 3, 1, 4, 6, 4, 6, 5, 3,},
559  { 6, 5, 1, 7, 4, 7, 3, 3, 3,},
560  { 7, 2, 2, 3, 7, 2, 4, 6, 5,},
561  { 6, 2, 2, 6, 4, 5, 2, 4, 4,},
562  { 4, 4, 1, 7, 6, 7, 5, 2, 4,},
563  { 5, 4, 1, 5, 6, 6, 5, 4, 2,},
564  { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
565 
566  { 2, 2, 2, 3, 5, 5, 6, 6, 5,},
567  { 7, 1, 3, 3, 6, 3, 4, 7, 5,},
568  { 2, 4, 1, 4, 6, 7, 7, 5, 4,},
569  { 7, 4, 3, 1, 5, 3, 6, 7, 3,},
570  { 4, 3, 3, 4, 1, 6, 4, 6, 5,},
571  { 7, 4, 4, 2, 6, 1, 4, 7, 5,},
572  { 5, 2, 3, 4, 4, 3, 2, 5, 4,},
573  { 3, 5, 2, 3, 2, 5, 5, 5, 3,},
574  { 6, 4, 4, 2, 5, 4, 7, 7, 1,},
575  { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
576 
577  { 2, 2, 2, 7, 3, 7, 4, 5, 6,},
578  { 4, 1, 3, 6, 4, 4, 3, 6, 5,},
579  { 2, 4, 1, 7, 3, 7, 6, 6, 6,},
580  { 3, 4, 3, 5, 1, 4, 4, 6, 6,},
581  { 4, 5, 2, 7, 1, 7, 3, 7, 7,},
582  { 6, 2, 3, 5, 3, 3, 2, 6, 4,},
583  { 4, 4, 4, 7, 2, 5, 1, 6, 7,},
584  { 4, 5, 2, 7, 1, 7, 4, 4, 6,},
585  { 2, 4, 2, 6, 2, 4, 6, 5, 4,},
586  { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
587 
588  { 1, 3, 3, 5, 6, 3, 5, 6, 5,},
589  { 7, 1, 4, 4, 6, 2, 4, 7, 5,},
590  { 2, 2, 2, 6, 5, 3, 5, 6, 5,},
591  { 7, 4, 4, 2, 6, 1, 5, 7, 4,},
592  { 3, 2, 2, 4, 4, 3, 4, 5, 5,},
593  { 7, 2, 5, 3, 7, 1, 4, 7, 7,},
594  { 6, 2, 3, 4, 5, 2, 2, 7, 7,},
595  { 3, 2, 2, 5, 5, 4, 4, 4, 3,},
596  { 3, 2, 2, 4, 6, 3, 5, 6, 3,},
597  { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
598 
599  { 1, 3, 3, 7, 4, 6, 3, 5, 7,},
600  { 4, 1, 4, 7, 4, 5, 2, 6, 7,},
601  { 2, 4, 1, 7, 5, 7, 3, 7, 7,},
602  { 3, 2, 3, 5, 3, 4, 2, 6, 6,},
603  { 3, 5, 4, 7, 2, 7, 1, 7, 7,},
604  { 4, 1, 3, 6, 5, 3, 3, 7, 7,},
605  { 4, 2, 5, 7, 3, 7, 1, 7, 7,},
606  { 7, 4, 1, 7, 3, 7, 2, 5, 7,},
607  { 4, 2, 2, 6, 4, 5, 2, 6, 4,},
608  { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
609 
610  { 3, 4, 1, 7, 6, 7, 6, 2, 6,},
611  { 4, 2, 2, 6, 6, 5, 4, 2, 4,},
612  { 4, 4, 1, 7, 5, 7, 6, 2, 4,},
613  { 3, 3, 2, 5, 4, 4, 5, 2, 4,},
614  { 4, 5, 2, 7, 2, 7, 3, 2, 6,},
615  { 4, 3, 2, 5, 5, 4, 3, 2, 4,},
616  { 7, 4, 2, 7, 2, 5, 3, 2, 6,},
617  { 4, 6, 2, 7, 3, 7, 6, 1, 6,},
618  { 5, 5, 1, 6, 4, 6, 5, 2, 4,},
619  { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
620 
621  { 3, 3, 2, 3, 5, 6, 6, 4, 2,},
622  { 7, 1, 3, 3, 6, 5, 7, 4, 3,},
623  { 5, 4, 1, 5, 5, 6, 6, 4, 2,},
624  { 6, 4, 2, 2, 6, 3, 6, 6, 2,},
625  { 6, 4, 2, 5, 3, 6, 3, 3, 2,},
626  { 6, 3, 2, 3, 5, 2, 4, 6, 3,},
627  { 6, 2, 2, 4, 3, 5, 3, 6, 3,},
628  { 7, 5, 1, 7, 4, 7, 7, 3, 2,},
629  { 5, 5, 2, 3, 6, 7, 7, 5, 1,},
630  { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
631 };
632 
633 //@}
634 
635 #define PBTYPE_ESCAPE 0xFF
636 
637 /** tables used for P-frame macroblock type decoding */
638 //@{
639 #define NUM_PTYPE_VLCS 7
640 #define PTYPE_VLC_SIZE 8
641 #define PTYPE_VLC_BITS 7
642 
644  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
645  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
646  { 0x0D, 0x05, 0x01, 0x04, 0x01, 0x00, 0x07, 0x0C },
647  { 0x09, 0x11, 0x01, 0x00, 0x05, 0x03, 0x21, 0x20 },
648  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
649  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
650  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 }
651 };
652 
654  { 1, 2, 3, 6, 5, 4, 7, 7 },
655  { 3, 1, 2, 7, 6, 5, 4, 7 },
656  { 5, 4, 1, 4, 3, 3, 4, 5 },
657  { 4, 5, 2, 2, 3, 2, 6, 6 },
658  { 5, 6, 1, 4, 2, 3, 7, 7 },
659  { 5, 6, 1, 4, 3, 2, 7, 7 },
660  { 6, 3, 2, 7, 5, 4, 1, 7 }
661 };
662 
664  0, 1, 2, 3, 8, 9, 11, PBTYPE_ESCAPE
665 };
666 
667 /** reverse of ptype_vlc_syms */
669  0, 1, 2, 3, 0, 0, 2, 0, 4, 5, 0, 6
670 };
671 //@}
672 
673 /** tables used for P-frame macroblock type decoding */
674 //@{
675 #define NUM_BTYPE_VLCS 6
676 #define BTYPE_VLC_SIZE 7
677 #define BTYPE_VLC_BITS 6
678 
680  { 0x01, 0x05, 0x00, 0x03, 0x11, 0x09, 0x10 },
681  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
682  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
683  { 0x09, 0x01, 0x00, 0x01, 0x05, 0x03, 0x08 },
684  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
685  { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 }
686 };
687 
689  { 2, 3, 2, 2, 5, 4, 5 },
690  { 4, 1, 3, 2, 6, 5, 6 },
691  { 6, 4, 1, 2, 5, 3, 6 },
692  { 5, 3, 3, 1, 4, 3, 5 },
693  { 6, 5, 3, 2, 4, 1, 6 },
694  { 6, 5, 3, 1, 4, 2, 6 }
695 };
696 
698  0, 1, 4, 5, 10, 7, PBTYPE_ESCAPE
699 };
700 
701 /** reverse of btype_vlc_syms */
703  0, 1, 0, 0, 2, 3, 0, 5, 0, 0, 4, 0
704 };
705 //@}
706 #endif /* AVCODEC_RV40VLC2_H */
static const uint8_t btype_vlc_codes[NUM_BTYPE_VLCS][BTYPE_VLC_SIZE]
Definition: rv40vlc2.h:679
#define PBTYPE_ESCAPE
Definition: rv40vlc2.h:635
#define PTYPE_VLC_SIZE
Definition: rv40vlc2.h:640
#define BTYPE_VLC_SIZE
Definition: rv40vlc2.h:676
#define AIC_MODE1_SIZE
Definition: rv40vlc2.h:428
static const uint8_t btype_vlc_syms[BTYPE_VLC_SIZE]
Definition: rv40vlc2.h:697
static const uint8_t block_num_to_ptype_vlc_num[12]
reverse of ptype_vlc_syms
Definition: rv40vlc2.h:668
uint8_t
static const uint8_t aic_mode1_vlc_bits[AIC_MODE1_NUM][AIC_MODE1_SIZE]
Definition: rv40vlc2.h:532
static const uint8_t block_num_to_btype_vlc_num[12]
reverse of btype_vlc_syms
Definition: rv40vlc2.h:702
static const uint8_t ptype_vlc_syms[PTYPE_VLC_SIZE]
Definition: rv40vlc2.h:663
static const uint8_t ptype_vlc_bits[NUM_PTYPE_VLCS][PTYPE_VLC_SIZE]
Definition: rv40vlc2.h:653
#define AIC_MODE2_NUM
codes used for determining a pair of block types
Definition: rv40vlc2.h:52
static const uint8_t rv40_aic_top_vlc_bits[AIC_TOP_SIZE]
Definition: rv40vlc2.h:43
static const uint8_t ptype_vlc_codes[NUM_PTYPE_VLCS][PTYPE_VLC_SIZE]
Definition: rv40vlc2.h:643
static const uint16_t aic_mode2_vlc_codes[AIC_MODE2_NUM][AIC_MODE2_SIZE]
Definition: rv40vlc2.h:56
#define AIC_TOP_SIZE
Definition: rv40vlc2.h:37
static const uint8_t aic_mode1_vlc_codes[AIC_MODE1_NUM][AIC_MODE1_SIZE]
Definition: rv40vlc2.h:431
#define AIC_MODE2_SIZE
Definition: rv40vlc2.h:53
#define NUM_BTYPE_VLCS
tables used for P-frame macroblock type decoding
Definition: rv40vlc2.h:675
static const uint8_t btype_vlc_bits[NUM_BTYPE_VLCS][PTYPE_VLC_SIZE]
Definition: rv40vlc2.h:688
#define AIC_MODE1_NUM
Codes used for determining block type.
Definition: rv40vlc2.h:427
#define NUM_PTYPE_VLCS
tables used for P-frame macroblock type decoding
Definition: rv40vlc2.h:639
static const uint8_t rv40_aic_top_vlc_codes[AIC_TOP_SIZE]
Definition: rv40vlc2.h:38
static const uint8_t aic_mode2_vlc_bits[AIC_MODE2_NUM][AIC_MODE2_SIZE]
Definition: rv40vlc2.h:239