3 * copyright (c) 2007 Konstantin Shishkov
5 * This file is part of FFmpeg.
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.
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.
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
24 * RV40 VLC tables used for macroblock information decoding
27 #ifndef AVCODEC_RV40VLC2_H
28 #define AVCODEC_RV40VLC2_H
33 * codes used for the first four block types
36 #define AIC_TOP_BITS 7
37 #define AIC_TOP_SIZE 16
38 static const uint8_t rv40_aic_top_vlc_codes[AIC_TOP_SIZE] = {
39 0x01, 0x05, 0x01, 0x00, 0x03, 0x3D, 0x1D, 0x02,
40 0x04, 0x3C, 0x3F, 0x1C, 0x0D, 0x3E, 0x0C, 0x01
43 static const uint8_t rv40_aic_top_vlc_bits[AIC_TOP_SIZE] = {
44 1, 4, 5, 5, 5, 7, 6, 5, 4, 7, 7, 6, 5, 7, 5, 3
49 * codes used for determining a pair of block types
52 #define AIC_MODE2_NUM 20
53 #define AIC_MODE2_SIZE 81
54 #define AIC_MODE2_BITS 9
56 static const uint8_t aic_mode2_vlc_syms[AIC_MODE2_NUM][AIC_MODE2_SIZE] = {
58 0x06, 0x01, 0x1A, 0x0A, 0x14, 0x12, 0x04, 0x07, 0x05, 0x0F, 0x08, 0x36,
59 0x02, 0x3C, 0x37, 0x15, 0x0E, 0x1C, 0x18, 0x46, 0x0B, 0x09, 0x26, 0x13,
60 0x41, 0x2D, 0x50, 0x4A, 0x19, 0x16, 0x28, 0x24, 0x38, 0x32, 0x11, 0x0C,
61 0x30, 0x2F, 0x3A, 0x2A, 0x25, 0x2E, 0x2B, 0x1E, 0x1D, 0x43, 0x3D, 0x0D,
62 0x03, 0x1B, 0x17, 0x21, 0x1F, 0x29, 0x22, 0x47, 0x4D, 0x4C, 0x44, 0x42,
63 0x34, 0x4E, 0x3B, 0x35, 0x40, 0x3E, 0x3F, 0x33, 0x31, 0x10, 0x45, 0x39,
64 0x4F, 0x49, 0x48, 0x23, 0x20, 0x2C, 0x27, 0x4B, 0x00,
67 0x46, 0x38, 0x2A, 0x1E, 0x3E, 0x2F, 0x11, 0x05, 0x1C, 0x17, 0x26, 0x04,
68 0x2E, 0x28, 0x24, 0x1D, 0x32, 0x25, 0x18, 0x16, 0x1B, 0x19, 0x34, 0x21,
69 0x4C, 0x45, 0x49, 0x4B, 0x47, 0x42, 0x29, 0x4D, 0x44, 0x4E, 0x4F, 0x33,
70 0x30, 0x48, 0x3D, 0x20, 0x1F, 0x27, 0x22, 0x4A, 0x3F, 0x3B, 0x43, 0x40,
71 0x31, 0x2C, 0x39, 0x35, 0x41, 0x3A, 0x07, 0x03, 0x2B, 0x23, 0x50, 0x12,
72 0x01, 0x36, 0x1A, 0x0F, 0x02, 0x37, 0x2D, 0x0C, 0x08, 0x15, 0x10, 0x3C,
73 0x0D, 0x06, 0x13, 0x0E, 0x09, 0x00, 0x14, 0x0B, 0x0A,
76 0x09, 0x01, 0x16, 0x0B, 0x50, 0x4B, 0x3F, 0x0D, 0x08, 0x2A, 0x17, 0x4F,
77 0x28, 0x26, 0x36, 0x2D, 0x37, 0x2E, 0x40, 0x3C, 0x0E, 0x04, 0x25, 0x1E,
78 0x10, 0x03, 0x1F, 0x11, 0x4E, 0x3E, 0x3D, 0x39, 0x34, 0x44, 0x3B, 0x29,
79 0x21, 0x35, 0x31, 0x27, 0x22, 0x33, 0x30, 0x43, 0x38, 0x4D, 0x47, 0x07,
80 0x05, 0x20, 0x0C, 0x4C, 0x3A, 0x32, 0x45, 0x42, 0x2B, 0x23, 0x2F, 0x2C,
81 0x0A, 0x00, 0x13, 0x12, 0x4A, 0x1A, 0x49, 0x48, 0x1C, 0x1B, 0x24, 0x1D,
82 0x0F, 0x06, 0x18, 0x15, 0x19, 0x02, 0x46, 0x41, 0x14,
85 0x50, 0x4A, 0x2D, 0x2B, 0x43, 0x27, 0x45, 0x44, 0x3E, 0x16, 0x00, 0x22,
86 0x1B, 0x31, 0x28, 0x3A, 0x35, 0x21, 0x1F, 0x3B, 0x24, 0x06, 0x03, 0x12,
87 0x10, 0x08, 0x04, 0x2C, 0x29, 0x4F, 0x4C, 0x40, 0x4D, 0x47, 0x48, 0x42,
88 0x07, 0x4E, 0x39, 0x34, 0x3F, 0x3D, 0x46, 0x41, 0x4B, 0x49, 0x1D, 0x1A,
89 0x11, 0x05, 0x26, 0x23, 0x2F, 0x0D, 0x02, 0x17, 0x15, 0x3C, 0x33, 0x30,
90 0x38, 0x36, 0x20, 0x1E, 0x2A, 0x25, 0x13, 0x0B, 0x09, 0x01, 0x18, 0x0C,
91 0x37, 0x14, 0x0F, 0x19, 0x0E, 0x32, 0x1C, 0x2E, 0x0A,
94 0x0C, 0x09, 0x19, 0x0D, 0x3C, 0x28, 0x25, 0x30, 0x2A, 0x17, 0x11, 0x20,
95 0x1E, 0x3E, 0x39, 0x50, 0x40, 0x1F, 0x16, 0x2D, 0x2B, 0x22, 0x08, 0x2C,
96 0x29, 0x4A, 0x43, 0x3F, 0x4C, 0x45, 0x1B, 0x04, 0x34, 0x27, 0x4B, 0x47,
97 0x4E, 0x4D, 0x42, 0x07, 0x48, 0x44, 0x4F, 0x3B, 0x33, 0x03, 0x00, 0x12,
98 0x06, 0x41, 0x2F, 0x1C, 0x38, 0x36, 0x13, 0x0E, 0x2E, 0x14, 0x0F, 0x0B,
99 0x02, 0x01, 0x15, 0x10, 0x32, 0x46, 0x3A, 0x35, 0x31, 0x49, 0x3D, 0x21,
100 0x05, 0x24, 0x23, 0x1A, 0x18, 0x26, 0x1D, 0x37, 0x0A,
103 0x14, 0x0A, 0x15, 0x0C, 0x1D, 0x17, 0x41, 0x29, 0x24, 0x34, 0x2D, 0x03,
104 0x00, 0x1B, 0x08, 0x4E, 0x44, 0x48, 0x3E, 0x27, 0x04, 0x2B, 0x07, 0x2C,
105 0x3B, 0x35, 0x4D, 0x4C, 0x47, 0x3A, 0x3D, 0x39, 0x43, 0x42, 0x06, 0x05,
106 0x28, 0x22, 0x4F, 0x4B, 0x2A, 0x26, 0x31, 0x30, 0x11, 0x10, 0x21, 0x1F,
107 0x3C, 0x32, 0x23, 0x16, 0x33, 0x25, 0x02, 0x01, 0x12, 0x0D, 0x0F, 0x0B,
108 0x37, 0x19, 0x18, 0x0E, 0x1C, 0x1A, 0x13, 0x50, 0x4A, 0x38, 0x36, 0x45,
109 0x3F, 0x1E, 0x09, 0x2F, 0x20, 0x40, 0x2E, 0x49, 0x46,
112 0x0F, 0x0B, 0x37, 0x14, 0x2E, 0x13, 0x0E, 0x2F, 0x1C, 0x32, 0x49, 0x3C,
113 0x2A, 0x26, 0x38, 0x31, 0x0D, 0x01, 0x17, 0x15, 0x19, 0x0C, 0x33, 0x25,
114 0x20, 0x1E, 0x35, 0x30, 0x18, 0x09, 0x1D, 0x1A, 0x4C, 0x46, 0x27, 0x00,
115 0x3E, 0x2B, 0x4D, 0x29, 0x1F, 0x34, 0x2D, 0x05, 0x03, 0x22, 0x1B, 0x4F,
116 0x4E, 0x45, 0x08, 0x07, 0x48, 0x44, 0x3F, 0x42, 0x04, 0x47, 0x43, 0x39,
117 0x2C, 0x40, 0x3D, 0x4A, 0x3B, 0x10, 0x06, 0x16, 0x12, 0x50, 0x4B, 0x36,
118 0x28, 0x24, 0x41, 0x3A, 0x11, 0x02, 0x23, 0x21, 0x0A,
121 0x3C, 0x01, 0x0D, 0x03, 0x16, 0x15, 0x38, 0x08, 0x04, 0x20, 0x12, 0x41,
122 0x39, 0x35, 0x3F, 0x3E, 0x2C, 0x29, 0x31, 0x30, 0x18, 0x17, 0x3B, 0x28,
123 0x0C, 0x05, 0x2E, 0x25, 0x37, 0x0F, 0x0B, 0x09, 0x06, 0x1A, 0x19, 0x36,
124 0x24, 0x1D, 0x33, 0x2F, 0x10, 0x00, 0x1C, 0x11, 0x42, 0x1B, 0x44, 0x43,
125 0x50, 0x4C, 0x4B, 0x4E, 0x48, 0x4D, 0x27, 0x23, 0x4F, 0x2B, 0x45, 0x40,
126 0x2D, 0x22, 0x47, 0x34, 0x4A, 0x46, 0x3D, 0x1E, 0x07, 0x21, 0x1F, 0x49,
127 0x2A, 0x26, 0x3A, 0x32, 0x0E, 0x02, 0x14, 0x13, 0x0A,
130 0x14, 0x00, 0x0A, 0x01, 0x12, 0x08, 0x50, 0x38, 0x19, 0x02, 0x07, 0x06,
131 0x13, 0x0B, 0x1A, 0x4F, 0x3C, 0x1D, 0x1B, 0x23, 0x1E, 0x0E, 0x0D, 0x17,
132 0x10, 0x18, 0x16, 0x36, 0x26, 0x47, 0x40, 0x4C, 0x49, 0x28, 0x15, 0x2F,
133 0x2D, 0x48, 0x3F, 0x20, 0x0C, 0x2C, 0x2A, 0x4B, 0x2E, 0x24, 0x3A, 0x37,
134 0x32, 0x2B, 0x43, 0x35, 0x11, 0x03, 0x25, 0x1C, 0x42, 0x3E, 0x27, 0x21,
135 0x34, 0x29, 0x4D, 0x33, 0x31, 0x3D, 0x3B, 0x45, 0x44, 0x22, 0x1F, 0x39,
136 0x30, 0x4E, 0x46, 0x41, 0x05, 0x04, 0x0F, 0x09, 0x4A,
139 0x14, 0x0B, 0x19, 0x13, 0x0D, 0x01, 0x12, 0x0E, 0x38, 0x02, 0x00, 0x0F,
140 0x09, 0x36, 0x10, 0x41, 0x3C, 0x1A, 0x07, 0x06, 0x11, 0x0C, 0x4A, 0x32,
141 0x24, 0x47, 0x40, 0x17, 0x15, 0x1D, 0x1C, 0x26, 0x18, 0x37, 0x2F, 0x16,
142 0x08, 0x2D, 0x28, 0x46, 0x22, 0x1F, 0x39, 0x34, 0x4F, 0x4C, 0x48, 0x4E,
143 0x4B, 0x29, 0x21, 0x4D, 0x42, 0x3F, 0x3E, 0x49, 0x43, 0x1E, 0x03, 0x23,
144 0x20, 0x50, 0x33, 0x31, 0x45, 0x44, 0x2A, 0x27, 0x30, 0x2C, 0x3A, 0x2E,
145 0x35, 0x2B, 0x3D, 0x3B, 0x05, 0x04, 0x25, 0x1B, 0x0A,
148 0x28, 0x24, 0x3C, 0x36, 0x15, 0x0F, 0x1D, 0x1B, 0x07, 0x06, 0x11, 0x0D,
149 0x4E, 0x2D, 0x2B, 0x44, 0x32, 0x1E, 0x1C, 0x25, 0x20, 0x48, 0x3F, 0x4C,
150 0x4B, 0x47, 0x40, 0x4F, 0x49, 0x46, 0x0B, 0x23, 0x17, 0x2F, 0x2E, 0x08,
151 0x01, 0x10, 0x0E, 0x35, 0x31, 0x3E, 0x3D, 0x1F, 0x0C, 0x2C, 0x2A, 0x04,
152 0x03, 0x21, 0x05, 0x4D, 0x33, 0x29, 0x3B, 0x34, 0x42, 0x27, 0x22, 0x39,
153 0x30, 0x3A, 0x37, 0x45, 0x43, 0x16, 0x09, 0x38, 0x26, 0x13, 0x0A, 0x02,
154 0x00, 0x18, 0x12, 0x50, 0x1A, 0x19, 0x4A, 0x41, 0x14,
157 0x1A, 0x19, 0x40, 0x3F, 0x4F, 0x47, 0x4A, 0x14, 0x46, 0x41, 0x07, 0x01,
158 0x0D, 0x08, 0x49, 0x3C, 0x38, 0x48, 0x44, 0x24, 0x17, 0x2E, 0x2D, 0x02,
159 0x00, 0x18, 0x12, 0x26, 0x16, 0x2F, 0x28, 0x0F, 0x09, 0x15, 0x10, 0x3A,
160 0x36, 0x4E, 0x4B, 0x2A, 0x25, 0x32, 0x31, 0x2C, 0x2B, 0x35, 0x33, 0x11,
161 0x04, 0x20, 0x1C, 0x34, 0x23, 0x1F, 0x03, 0x39, 0x30, 0x3D, 0x0C, 0x05,
162 0x21, 0x1E, 0x42, 0x37, 0x27, 0x22, 0x3E, 0x3B, 0x29, 0x4D, 0x45, 0x43,
163 0x0E, 0x06, 0x1D, 0x1B, 0x4C, 0x0B, 0x0A, 0x50, 0x13,
166 0x4A, 0x19, 0x08, 0x07, 0x0F, 0x09, 0x38, 0x45, 0x43, 0x2D, 0x25, 0x4E,
167 0x3D, 0x0E, 0x0D, 0x23, 0x10, 0x24, 0x15, 0x37, 0x26, 0x0A, 0x02, 0x18,
168 0x12, 0x41, 0x46, 0x1A, 0x0B, 0x01, 0x36, 0x16, 0x50, 0x2F, 0x28, 0x44,
169 0x3A, 0x17, 0x06, 0x1D, 0x1B, 0x32, 0x2E, 0x3E, 0x35, 0x2A, 0x1E, 0x2C,
170 0x2B, 0x27, 0x22, 0x33, 0x31, 0x0C, 0x03, 0x20, 0x1F, 0x4D, 0x42, 0x3B,
171 0x39, 0x29, 0x21, 0x34, 0x30, 0x4B, 0x48, 0x05, 0x04, 0x1C, 0x11, 0x4C,
172 0x3F, 0x3C, 0x4F, 0x49, 0x13, 0x00, 0x47, 0x40, 0x14,
175 0x4C, 0x49, 0x1D, 0x17, 0x4E, 0x4B, 0x09, 0x04, 0x15, 0x0D, 0x38, 0x18,
176 0x3F, 0x3C, 0x26, 0x16, 0x3A, 0x28, 0x4F, 0x44, 0x40, 0x4D, 0x48, 0x32,
177 0x2F, 0x3D, 0x37, 0x2D, 0x2C, 0x35, 0x2E, 0x11, 0x0E, 0x23, 0x1B, 0x1E,
178 0x1C, 0x3B, 0x25, 0x05, 0x03, 0x0C, 0x08, 0x22, 0x21, 0x30, 0x27, 0x36,
179 0x42, 0x3E, 0x39, 0x34, 0x29, 0x20, 0x33, 0x31, 0x47, 0x45, 0x24, 0x1F,
180 0x2B, 0x2A, 0x06, 0x01, 0x10, 0x07, 0x46, 0x1A, 0x02, 0x00, 0x0B, 0x0A,
181 0x50, 0x41, 0x19, 0x12, 0x0F, 0x43, 0x13, 0x4A, 0x14,
184 0x46, 0x0B, 0x49, 0x47, 0x41, 0x23, 0x1E, 0x2D, 0x28, 0x15, 0x01, 0x1C,
185 0x17, 0x1F, 0x0C, 0x22, 0x20, 0x4E, 0x35, 0x32, 0x42, 0x3E, 0x27, 0x04,
186 0x31, 0x30, 0x3A, 0x2A, 0x3B, 0x39, 0x34, 0x29, 0x3D, 0x05, 0x03, 0x33,
187 0x21, 0x38, 0x2F, 0x4B, 0x3C, 0x26, 0x1D, 0x48, 0x40, 0x09, 0x08, 0x16,
188 0x0F, 0x4F, 0x11, 0x10, 0x2B, 0x25, 0x07, 0x06, 0x0E, 0x0D, 0x44, 0x43,
189 0x4D, 0x45, 0x2E, 0x2C, 0x37, 0x36, 0x24, 0x1B, 0x4C, 0x3F, 0x14, 0x4A,
190 0x1A, 0x13, 0x0A, 0x02, 0x00, 0x18, 0x12, 0x19, 0x50,
193 0x41, 0x19, 0x4F, 0x49, 0x26, 0x1E, 0x2F, 0x2D, 0x0F, 0x08, 0x1C, 0x15,
194 0x02, 0x00, 0x47, 0x12, 0x4A, 0x50, 0x1A, 0x23, 0x1D, 0x40, 0x38, 0x16,
195 0x09, 0x1B, 0x18, 0x3A, 0x37, 0x45, 0x44, 0x28, 0x11, 0x35, 0x32, 0x31,
196 0x2C, 0x29, 0x27, 0x34, 0x2A, 0x42, 0x20, 0x1F, 0x22, 0x21, 0x04, 0x03,
197 0x0C, 0x05, 0x4D, 0x3B, 0x39, 0x3E, 0x3D, 0x2B, 0x25, 0x33, 0x30, 0x3F,
198 0x36, 0x07, 0x06, 0x0E, 0x0D, 0x4C, 0x4B, 0x48, 0x3C, 0x2E, 0x4E, 0x43,
199 0x10, 0x01, 0x24, 0x17, 0x0B, 0x0A, 0x46, 0x13, 0x14,
202 0x19, 0x13, 0x50, 0x41, 0x1A, 0x0B, 0x0A, 0x4B, 0x46, 0x4A, 0x48, 0x47,
203 0x17, 0x16, 0x23, 0x1D, 0x08, 0x01, 0x11, 0x0F, 0x12, 0x02, 0x18, 0x15,
204 0x49, 0x43, 0x4E, 0x4C, 0x09, 0x00, 0x38, 0x37, 0x04, 0x03, 0x0C, 0x06,
205 0x45, 0x35, 0x2E, 0x3A, 0x36, 0x1C, 0x10, 0x25, 0x20, 0x28, 0x26, 0x3F,
206 0x3C, 0x1E, 0x0E, 0x2C, 0x24, 0x4F, 0x3B, 0x32, 0x3D, 0x39, 0x31, 0x07,
207 0x34, 0x33, 0x2A, 0x29, 0x2D, 0x2B, 0x42, 0x3E, 0x1B, 0x0D, 0x30, 0x27,
208 0x44, 0x40, 0x2F, 0x1F, 0x05, 0x22, 0x21, 0x4D, 0x14,
211 0x13, 0x0D, 0x1D, 0x19, 0x09, 0x41, 0x3D, 0x4A, 0x46, 0x28, 0x24, 0x31,
212 0x29, 0x25, 0x22, 0x3E, 0x33, 0x08, 0x01, 0x16, 0x0C, 0x47, 0x2C, 0x04,
213 0x03, 0x27, 0x05, 0x49, 0x17, 0x07, 0x2B, 0x20, 0x1F, 0x06, 0x2A, 0x21,
214 0x50, 0x4C, 0x4B, 0x44, 0x43, 0x45, 0x42, 0x4E, 0x4D, 0x3F, 0x3B, 0x48,
215 0x40, 0x34, 0x30, 0x4F, 0x39, 0x2E, 0x2D, 0x15, 0x11, 0x1E, 0x1C, 0x37,
216 0x0B, 0x38, 0x14, 0x02, 0x00, 0x10, 0x0E, 0x3C, 0x32, 0x26, 0x3A, 0x35,
217 0x18, 0x12, 0x23, 0x1B, 0x1A, 0x0F, 0x36, 0x2F, 0x0A,
220 0x37, 0x0E, 0x19, 0x17, 0x1D, 0x1A, 0x06, 0x01, 0x16, 0x10, 0x47, 0x44,
221 0x4F, 0x48, 0x4D, 0x08, 0x07, 0x42, 0x3F, 0x2C, 0x2B, 0x4C, 0x4B, 0x49,
222 0x40, 0x50, 0x4E, 0x45, 0x43, 0x1B, 0x04, 0x27, 0x22, 0x4A, 0x41, 0x3D,
223 0x12, 0x03, 0x34, 0x29, 0x46, 0x2F, 0x21, 0x25, 0x23, 0x3E, 0x35, 0x05,
224 0x00, 0x1F, 0x1E, 0x32, 0x18, 0x36, 0x33, 0x0A, 0x3C, 0x0F, 0x3A, 0x2E,
225 0x09, 0x02, 0x15, 0x11, 0x38, 0x31, 0x30, 0x3B, 0x39, 0x24, 0x20, 0x2D,
226 0x26, 0x1C, 0x0C, 0x2A, 0x28, 0x0D, 0x0B, 0x14, 0x13,
229 0x14, 0x13, 0x0B, 0x01, 0x0F, 0x0E, 0x4A, 0x50, 0x4F, 0x26, 0x24, 0x36,
230 0x28, 0x06, 0x05, 0x1C, 0x09, 0x3C, 0x37, 0x4B, 0x45, 0x18, 0x17, 0x41,
231 0x19, 0x49, 0x0A, 0x2A, 0x25, 0x4C, 0x38, 0x0C, 0x02, 0x16, 0x12, 0x48,
232 0x44, 0x3B, 0x39, 0x3E, 0x31, 0x22, 0x07, 0x34, 0x1B, 0x2D, 0x2F, 0x2C,
233 0x42, 0x3D, 0x43, 0x32, 0x30, 0x2B, 0x35, 0x33, 0x1F, 0x04, 0x27, 0x23,
234 0x3F, 0x3A, 0x10, 0x00, 0x29, 0x21, 0x47, 0x4E, 0x4D, 0x1E, 0x1D, 0x2E,
235 0x20, 0x08, 0x03, 0x11, 0x0D, 0x1A, 0x15, 0x46, 0x40,
239 static const uint8_t aic_mode2_vlc_bits[AIC_MODE2_NUM][AIC_MODE2_SIZE] = {
241 5, 5, 5, 5, 3, 6, 6, 8, 8, 8, 8, 6, 4, 7, 7, 9, 9,
242 9, 9, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9,
243 11, 11, 11, 11, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
244 14, 14, 14, 14, 12, 13, 13, 15, 15, 14, 13, 12, 12, 12, 12, 11, 11,
245 13, 13, 13, 13, 11, 10, 10, 12, 12, 12, 12, 10, 1,
248 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 8, 8, 8, 8, 9, 9, 9,
249 9, 9, 9, 9, 9, 13, 13, 13, 13, 11, 12, 12, 14, 14, 15, 15, 14,
250 12, 11, 11, 11, 11, 12, 12, 12, 12, 10, 12, 12, 12, 12, 12, 12, 12,
251 12, 9, 9, 11, 11, 11, 11, 9, 6, 6, 6, 6, 5, 5, 7, 7, 9,
252 9, 9, 9, 7, 7, 7, 7, 7, 4, 4, 4, 4, 1,
255 7, 7, 7, 7, 5, 8, 8, 10, 10, 10, 10, 8, 8, 8, 8, 8, 9,
256 9, 9, 9, 9, 9, 9, 9, 12, 12, 12, 12, 10, 13, 13, 14, 14, 14,
257 14, 13, 13, 13, 13, 12, 12, 12, 12, 10, 10, 10, 10, 11, 11, 11, 11,
258 9, 11, 11, 11, 11, 11, 11, 11, 11, 5, 5, 5, 5, 4, 4, 6, 6,
259 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 1,
262 9, 9, 11, 11, 13, 13, 13, 13, 11, 11, 11, 11, 11, 9, 9, 9, 9,
263 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 10, 12, 12, 13, 13,
264 15, 15, 14, 13, 12, 12, 12, 12, 10, 10, 10, 10, 7, 7, 9, 9, 9,
265 9, 7, 8, 8, 8, 8, 6, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5,
266 7, 7, 7, 7, 5, 4, 4, 6, 6, 6, 6, 4, 1,
269 7, 7, 7, 7, 5, 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11,
270 11, 11, 11, 11, 12, 12, 12, 12, 10, 13, 13, 13, 13, 13, 13, 13, 13,
271 12, 12, 14, 14, 15, 15, 15, 15, 12, 9, 9, 11, 11, 11, 11, 9, 7,
272 7, 7, 7, 5, 5, 5, 5, 4, 4, 8, 8, 8, 8, 6, 8, 8, 10,
273 10, 10, 10, 10, 10, 10, 10, 8, 8, 8, 8, 4, 1,
276 2, 2, 7, 7, 7, 7, 5, 12, 12, 12, 12, 12, 12, 12, 12, 11, 11,
277 12, 12, 13, 13, 14, 14, 13, 10, 10, 10, 10, 9, 9, 11, 11, 11, 11,
278 11, 11, 11, 11, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 7, 7, 9,
279 9, 9, 9, 9, 9, 9, 9, 5, 5, 5, 5, 6, 6, 6, 6, 4, 6,
280 6, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6,
283 5, 5, 5, 5, 3, 6, 6, 6, 6, 4, 7, 7, 9, 9, 9, 9, 9,
284 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 11, 11,
285 13, 13, 13, 13, 11, 11, 11, 11, 11, 12, 12, 12, 12, 10, 12, 12, 15,
286 15, 15, 15, 13, 14, 14, 14, 14, 12, 12, 12, 12, 9, 9, 11, 11, 11,
287 11, 9, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 1,
290 5, 5, 9, 9, 9, 9, 7, 11, 11, 11, 11, 9, 11, 11, 11, 11, 11,
291 11, 11, 11, 9, 9, 9, 9, 7, 7, 7, 7, 3, 4, 4, 8, 8, 8,
292 8, 6, 10, 10, 10, 10, 10, 10, 10, 10, 14, 14, 14, 14, 12, 13, 13,
293 14, 14, 13, 12, 12, 12, 12, 11, 11, 13, 13, 13, 13, 11, 10, 10, 12,
294 12, 12, 12, 10, 8, 8, 8, 8, 6, 6, 6, 6, 1,
297 2, 2, 5, 5, 7, 7, 7, 7, 5, 3, 6, 6, 6, 6, 4, 8, 8,
298 10, 10, 10, 10, 10, 10, 10, 10, 8, 8, 8, 8, 9, 9, 9, 9, 9,
299 9, 9, 9, 10, 10, 12, 12, 12, 12, 10, 10, 10, 10, 10, 11, 11, 11,
300 11, 11, 11, 11, 11, 12, 12, 14, 14, 14, 14, 12, 12, 12, 12, 12, 11,
301 11, 13, 13, 13, 13, 11, 6, 6, 8, 8, 8, 8, 6,
304 3, 3, 6, 6, 8, 8, 8, 8, 6, 6, 6, 6, 6, 7, 7, 7, 7,
305 5, 10, 10, 10, 10, 8, 10, 10, 10, 10, 10, 10, 10, 10, 8, 8, 8,
306 8, 9, 9, 9, 9, 7, 13, 13, 13, 13, 11, 12, 12, 13, 13, 14, 14,
307 14, 14, 11, 11, 11, 11, 12, 12, 12, 12, 10, 12, 12, 12, 12, 12, 12,
308 12, 12, 9, 9, 11, 11, 11, 11, 11, 11, 11, 11, 1,
311 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 9, 11, 11, 11, 11,
312 11, 11, 11, 11, 9, 9, 9, 9, 7, 7, 7, 7, 6, 6, 10, 10, 10,
313 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
314 11, 14, 14, 14, 14, 12, 13, 13, 13, 13, 10, 10, 10, 10, 8, 8, 8,
315 8, 5, 5, 7, 7, 7, 7, 5, 4, 4, 4, 4, 1,
318 4, 4, 6, 6, 6, 6, 4, 2, 3, 3, 9, 9, 9, 9, 7, 9, 9,
319 9, 9, 9, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
320 8, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11,
321 12, 12, 14, 14, 14, 14, 12, 12, 12, 12, 12, 11, 11, 13, 13, 14, 14,
322 13, 11, 8, 8, 10, 10, 10, 10, 8, 5, 5, 5, 5,
325 5, 5, 9, 9, 9, 9, 7, 9, 9, 11, 11, 11, 11, 11, 11, 11, 11,
326 9, 9, 9, 9, 7, 7, 7, 7, 3, 4, 4, 8, 8, 8, 8, 6, 10,
327 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13,
328 13, 13, 13, 13, 13, 13, 12, 12, 13, 13, 14, 14, 14, 14, 10, 10, 12,
329 12, 12, 12, 10, 8, 8, 8, 8, 6, 6, 6, 6, 1,
332 7, 7, 9, 9, 9, 9, 9, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8,
333 8, 6, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11,
334 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 11, 12, 12, 13,
335 13, 14, 14, 14, 14, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 5, 5,
336 7, 7, 7, 7, 5, 4, 4, 6, 6, 6, 6, 4, 1,
339 6, 6, 6, 6, 4, 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11,
340 9, 12, 12, 12, 12, 12, 12, 12, 12, 11, 11, 13, 13, 14, 14, 13, 13,
341 13, 13, 13, 9, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 6, 10,
342 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8, 8,
343 8, 8, 2, 3, 3, 5, 5, 7, 7, 7, 7, 5, 3,
346 5, 5, 7, 7, 9, 9, 9, 9, 9, 9, 9, 9, 7, 7, 7, 7, 3,
347 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11, 11, 11,
348 11, 12, 12, 14, 14, 14, 14, 12, 12, 12, 12, 12, 13, 13, 13, 13, 11,
349 13, 13, 13, 13, 13, 13, 13, 13, 9, 9, 11, 11, 11, 11, 9, 8, 8,
350 10, 10, 10, 10, 10, 10, 10, 10, 6, 6, 6, 6, 1,
353 5, 5, 5, 5, 3, 6, 6, 6, 6, 4, 7, 7, 9, 9, 9, 9, 9,
354 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 11, 11,
355 11, 11, 9, 11, 11, 11, 11, 11, 11, 11, 11, 9, 9, 9, 9, 10, 10,
356 10, 10, 8, 12, 12, 13, 13, 14, 14, 14, 14, 12, 12, 12, 12, 11, 11,
357 13, 13, 13, 13, 11, 10, 10, 12, 12, 12, 12, 10, 1,
360 7, 7, 7, 7, 5, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
361 10, 10, 10, 10, 11, 11, 13, 13, 13, 13, 11, 11, 11, 11, 11, 12, 12,
362 12, 12, 10, 13, 13, 14, 14, 15, 15, 15, 15, 13, 13, 13, 13, 12, 12,
363 12, 12, 7, 7, 9, 9, 9, 9, 7, 3, 4, 4, 8, 8, 8, 8, 6,
364 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 1,
367 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 13, 13, 14, 14, 13, 13, 13,
368 13, 13, 12, 12, 12, 12, 11, 11, 11, 11, 10, 10, 12, 12, 12, 12, 10,
369 9, 9, 11, 11, 11, 11, 9, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10,
370 6, 6, 6, 6, 2, 3, 3, 5, 5, 9, 9, 9, 9, 7, 9, 9, 9,
371 9, 9, 9, 9, 9, 7, 7, 7, 7, 5, 5, 5, 5,
374 2, 2, 7, 7, 7, 7, 5, 7, 7, 9, 9, 9, 9, 9, 9, 9, 9,
375 7, 7, 7, 7, 5, 5, 5, 5, 4, 4, 8, 8, 8, 8, 8, 8, 8,
376 8, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 14, 11, 11, 11, 11, 10,
377 10, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 11, 11, 11, 11, 9, 8,
378 8, 10, 10, 10, 10, 10, 10, 10, 10, 6, 6, 6, 6,
384 * Codes used for determining block type
387 #define AIC_MODE1_NUM 90
388 #define AIC_MODE1_SIZE 9
389 #define AIC_MODE1_BITS 7
391 static const uint8_t aic_mode1_vlc_codes[AIC_MODE1_NUM][AIC_MODE1_SIZE] = {
392 { 0x01, 0x01, 0x01, 0x11, 0x00, 0x09, 0x03, 0x10, 0x05,},
393 { 0x09, 0x01, 0x01, 0x05, 0x11, 0x00, 0x03, 0x21, 0x20,},
394 { 0x01, 0x01, 0x01, 0x11, 0x09, 0x10, 0x05, 0x00, 0x03,},
395 { 0x01, 0x01, 0x00, 0x03, 0x21, 0x05, 0x09, 0x20, 0x11,},
396 { 0x01, 0x09, 0x00, 0x29, 0x08, 0x15, 0x03, 0x0B, 0x28,},
397 { 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x02,},
398 { 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x01, 0x09, 0x08,},
399 { 0x01, 0x01, 0x01, 0x09, 0x01, 0x08, 0x00, 0x03, 0x05,},
400 { 0x01, 0x01, 0x01, 0x00, 0x05, 0x11, 0x09, 0x10, 0x03,},
401 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
403 { 0x01, 0x01, 0x01, 0x05, 0x01, 0x00, 0x03, 0x09, 0x08,},
404 { 0x09, 0x01, 0x01, 0x05, 0x11, 0x00, 0x03, 0x21, 0x20,},
405 { 0x01, 0x01, 0x01, 0x0D, 0x05, 0x04, 0x00, 0x07, 0x0C,},
406 { 0x01, 0x01, 0x00, 0x05, 0x11, 0x03, 0x09, 0x21, 0x20,},
407 { 0x05, 0x01, 0x01, 0x11, 0x00, 0x09, 0x03, 0x21, 0x20,},
408 { 0x09, 0x01, 0x01, 0x00, 0x05, 0x01, 0x03, 0x11, 0x10,},
409 { 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x02,},
410 { 0x01, 0x01, 0x01, 0x09, 0x00, 0x05, 0x01, 0x03, 0x08,},
411 { 0x01, 0x01, 0x01, 0x09, 0x11, 0x05, 0x00, 0x10, 0x03,},
412 { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
414 { 0x01, 0x00, 0x01, 0x09, 0x08, 0x15, 0x14, 0x0B, 0x03,},
415 { 0x0D, 0x01, 0x01, 0x05, 0x0C, 0x04, 0x01, 0x00, 0x07,},
416 { 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x03, 0x01, 0x01,},
417 { 0x05, 0x01, 0x01, 0x04, 0x19, 0x07, 0x18, 0x0D, 0x00,},
418 { 0x11, 0x09, 0x01, 0x21, 0x05, 0x20, 0x01, 0x00, 0x03,},
419 { 0x41, 0x01, 0x00, 0x05, 0x40, 0x03, 0x09, 0x21, 0x11,},
420 { 0x29, 0x01, 0x00, 0x28, 0x09, 0x15, 0x03, 0x08, 0x0B,},
421 { 0x01, 0x00, 0x01, 0x11, 0x09, 0x10, 0x05, 0x01, 0x03,},
422 { 0x05, 0x01, 0x01, 0x04, 0x0D, 0x0C, 0x07, 0x00, 0x01,},
423 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
425 { 0x01, 0x00, 0x03, 0x05, 0x11, 0x10, 0x25, 0x24, 0x13,},
426 { 0x21, 0x01, 0x01, 0x00, 0x11, 0x03, 0x05, 0x20, 0x09,},
427 { 0x01, 0x01, 0x01, 0x00, 0x09, 0x11, 0x10, 0x05, 0x03,},
428 { 0x21, 0x05, 0x01, 0x01, 0x09, 0x00, 0x11, 0x20, 0x03,},
429 { 0x05, 0x01, 0x00, 0x04, 0x01, 0x19, 0x07, 0x18, 0x0D,},
430 { 0x11, 0x01, 0x00, 0x01, 0x09, 0x01, 0x03, 0x10, 0x05,},
431 { 0x1D, 0x01, 0x05, 0x0D, 0x0C, 0x04, 0x00, 0x1C, 0x0F,},
432 { 0x05, 0x19, 0x01, 0x04, 0x00, 0x18, 0x1B, 0x1A, 0x07,},
433 { 0x09, 0x01, 0x00, 0x01, 0x05, 0x03, 0x11, 0x10, 0x01,},
434 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
436 { 0x01, 0x00, 0x03, 0x41, 0x05, 0x40, 0x09, 0x11, 0x21,},
437 { 0x05, 0x01, 0x01, 0x19, 0x04, 0x07, 0x00, 0x18, 0x0D,},
438 { 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x01, 0x00, 0x03,},
439 { 0x01, 0x05, 0x00, 0x0D, 0x01, 0x04, 0x07, 0x19, 0x18,},
440 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
441 { 0x31, 0x01, 0x05, 0x19, 0x04, 0x07, 0x00, 0x30, 0x0D,},
442 { 0x01, 0x00, 0x03, 0x11, 0x01, 0x05, 0x01, 0x09, 0x10,},
443 { 0x01, 0x05, 0x01, 0x11, 0x01, 0x10, 0x00, 0x03, 0x09,},
444 { 0x01, 0x09, 0x00, 0x29, 0x03, 0x08, 0x28, 0x15, 0x0B,},
445 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
447 { 0x01, 0x01, 0x00, 0x09, 0x15, 0x03, 0x08, 0x14, 0x0B,},
448 { 0x11, 0x01, 0x01, 0x00, 0x09, 0x01, 0x03, 0x10, 0x05,},
449 { 0x01, 0x00, 0x03, 0x25, 0x11, 0x05, 0x10, 0x24, 0x13,},
450 { 0x11, 0x01, 0x00, 0x01, 0x09, 0x01, 0x05, 0x10, 0x03,},
451 { 0x05, 0x01, 0x00, 0x0D, 0x0C, 0x04, 0x0F, 0x1D, 0x1C,},
452 { 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x02,},
453 { 0x21, 0x01, 0x05, 0x09, 0x11, 0x00, 0x03, 0x41, 0x40,},
454 { 0x05, 0x01, 0x00, 0x1D, 0x1C, 0x0D, 0x0C, 0x0F, 0x04,},
455 { 0x05, 0x01, 0x00, 0x0D, 0x31, 0x04, 0x19, 0x30, 0x07,},
456 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
458 { 0x01, 0x01, 0x00, 0x21, 0x05, 0x11, 0x03, 0x09, 0x20,},
459 { 0x01, 0x01, 0x00, 0x11, 0x03, 0x05, 0x01, 0x09, 0x10,},
460 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
461 { 0x05, 0x01, 0x04, 0x19, 0x07, 0x0D, 0x00, 0x31, 0x30,},
462 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
463 { 0x05, 0x01, 0x01, 0x11, 0x09, 0x00, 0x03, 0x21, 0x20,},
464 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
465 { 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x01, 0x01, 0x02,},
466 { 0x09, 0x01, 0x00, 0x29, 0x08, 0x15, 0x03, 0x28, 0x0B,},
467 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
469 { 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x00, 0x01, 0x03,},
470 { 0x09, 0x01, 0x00, 0x29, 0x28, 0x15, 0x08, 0x03, 0x0B,},
471 { 0x01, 0x00, 0x01, 0x11, 0x05, 0x10, 0x09, 0x01, 0x03,},
472 { 0x05, 0x04, 0x01, 0x1D, 0x0D, 0x0C, 0x1C, 0x00, 0x0F,},
473 { 0x09, 0x11, 0x01, 0x41, 0x00, 0x40, 0x05, 0x03, 0x21,},
474 { 0x0D, 0x05, 0x01, 0x1D, 0x1C, 0x0C, 0x04, 0x00, 0x0F,},
475 { 0x41, 0x09, 0x01, 0x40, 0x00, 0x11, 0x05, 0x03, 0x21,},
476 { 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x00, 0x01, 0x03,},
477 { 0x05, 0x04, 0x01, 0x0D, 0x01, 0x0C, 0x07, 0x01, 0x00,},
478 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
480 { 0x05, 0x04, 0x01, 0x07, 0x19, 0x31, 0x30, 0x0D, 0x00,},
481 { 0x21, 0x01, 0x01, 0x00, 0x11, 0x09, 0x20, 0x05, 0x03,},
482 { 0x05, 0x01, 0x01, 0x04, 0x07, 0x0D, 0x0C, 0x00, 0x01,},
483 { 0x21, 0x09, 0x01, 0x00, 0x20, 0x05, 0x23, 0x22, 0x03,},
484 { 0x31, 0x0D, 0x01, 0x19, 0x05, 0x30, 0x04, 0x07, 0x00,},
485 { 0x31, 0x05, 0x01, 0x04, 0x19, 0x00, 0x0D, 0x30, 0x07,},
486 { 0x31, 0x01, 0x00, 0x0D, 0x05, 0x19, 0x04, 0x30, 0x07,},
487 { 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02, 0x01, 0x01,},
488 { 0x01, 0x00, 0x01, 0x01, 0x05, 0x09, 0x08, 0x03, 0x01,},
489 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
492 static const uint8_t aic_mode1_vlc_bits[AIC_MODE1_NUM][AIC_MODE1_SIZE] = {
493 { 1, 4, 2, 7, 4, 6, 4, 7, 5,},
494 { 5, 1, 3, 4, 6, 3, 3, 7, 7,},
495 { 1, 4, 2, 7, 6, 7, 5, 4, 4,},
496 { 1, 3, 3, 3, 7, 4, 5, 7, 6,},
497 { 2, 4, 2, 6, 4, 5, 2, 4, 6,},
498 { 7, 2, 3, 4, 7, 1, 5, 7, 7,},
499 { 5, 1, 3, 6, 5, 5, 2, 7, 7,},
500 { 2, 5, 1, 7, 3, 7, 5, 5, 6,},
501 { 2, 4, 1, 4, 5, 7, 6, 7, 4,},
502 { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
504 { 2, 1, 3, 6, 5, 5, 5, 7, 7,},
505 { 5, 1, 3, 4, 6, 3, 3, 7, 7,},
506 { 4, 1, 2, 6, 5, 5, 4, 5, 6,},
507 { 3, 1, 3, 4, 6, 3, 5, 7, 7,},
508 { 4, 1, 3, 6, 3, 5, 3, 7, 7,},
509 { 6, 1, 4, 4, 5, 2, 4, 7, 7,},
510 { 7, 1, 5, 7, 4, 3, 2, 7, 7,},
511 { 5, 3, 2, 7, 5, 6, 1, 5, 7,},
512 { 4, 1, 2, 6, 7, 5, 4, 7, 4,},
513 { 1, 0, 1, 0, 0, 0, 0, 0, 0,},
515 { 3, 3, 1, 5, 5, 6, 6, 5, 3,},
516 { 6, 2, 1, 5, 6, 5, 4, 4, 5,},
517 { 6, 4, 1, 7, 6, 7, 6, 3, 2,},
518 { 4, 3, 1, 4, 6, 4, 6, 5, 3,},
519 { 6, 5, 1, 7, 4, 7, 3, 3, 3,},
520 { 7, 2, 2, 3, 7, 2, 4, 6, 5,},
521 { 6, 2, 2, 6, 4, 5, 2, 4, 4,},
522 { 4, 4, 1, 7, 6, 7, 5, 2, 4,},
523 { 5, 4, 1, 5, 6, 6, 5, 4, 2,},
524 { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
526 { 2, 2, 2, 3, 5, 5, 6, 6, 5,},
527 { 7, 1, 3, 3, 6, 3, 4, 7, 5,},
528 { 2, 4, 1, 4, 6, 7, 7, 5, 4,},
529 { 7, 4, 3, 1, 5, 3, 6, 7, 3,},
530 { 4, 3, 3, 4, 1, 6, 4, 6, 5,},
531 { 7, 4, 4, 2, 6, 1, 4, 7, 5,},
532 { 5, 2, 3, 4, 4, 3, 2, 5, 4,},
533 { 3, 5, 2, 3, 2, 5, 5, 5, 3,},
534 { 6, 4, 4, 2, 5, 4, 7, 7, 1,},
535 { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
537 { 2, 2, 2, 7, 3, 7, 4, 5, 6,},
538 { 4, 1, 3, 6, 4, 4, 3, 6, 5,},
539 { 2, 4, 1, 7, 3, 7, 6, 6, 6,},
540 { 3, 4, 3, 5, 1, 4, 4, 6, 6,},
541 { 4, 5, 2, 7, 1, 7, 3, 7, 7,},
542 { 6, 2, 3, 5, 3, 3, 2, 6, 4,},
543 { 4, 4, 4, 7, 2, 5, 1, 6, 7,},
544 { 4, 5, 2, 7, 1, 7, 4, 4, 6,},
545 { 2, 4, 2, 6, 2, 4, 6, 5, 4,},
546 { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
548 { 1, 3, 3, 5, 6, 3, 5, 6, 5,},
549 { 7, 1, 4, 4, 6, 2, 4, 7, 5,},
550 { 2, 2, 2, 6, 5, 3, 5, 6, 5,},
551 { 7, 4, 4, 2, 6, 1, 5, 7, 4,},
552 { 3, 2, 2, 4, 4, 3, 4, 5, 5,},
553 { 7, 2, 5, 3, 7, 1, 4, 7, 7,},
554 { 6, 2, 3, 4, 5, 2, 2, 7, 7,},
555 { 3, 2, 2, 5, 5, 4, 4, 4, 3,},
556 { 3, 2, 2, 4, 6, 3, 5, 6, 3,},
557 { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
559 { 1, 3, 3, 7, 4, 6, 3, 5, 7,},
560 { 4, 1, 4, 7, 4, 5, 2, 6, 7,},
561 { 2, 4, 1, 7, 5, 7, 3, 7, 7,},
562 { 3, 2, 3, 5, 3, 4, 2, 6, 6,},
563 { 3, 5, 4, 7, 2, 7, 1, 7, 7,},
564 { 4, 1, 3, 6, 5, 3, 3, 7, 7,},
565 { 4, 2, 5, 7, 3, 7, 1, 7, 7,},
566 { 7, 4, 1, 7, 3, 7, 2, 5, 7,},
567 { 4, 2, 2, 6, 4, 5, 2, 6, 4,},
568 { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
570 { 3, 4, 1, 7, 6, 7, 6, 2, 6,},
571 { 4, 2, 2, 6, 6, 5, 4, 2, 4,},
572 { 4, 4, 1, 7, 5, 7, 6, 2, 4,},
573 { 3, 3, 2, 5, 4, 4, 5, 2, 4,},
574 { 4, 5, 2, 7, 2, 7, 3, 2, 6,},
575 { 4, 3, 2, 5, 5, 4, 3, 2, 4,},
576 { 7, 4, 2, 7, 2, 5, 3, 2, 6,},
577 { 4, 6, 2, 7, 3, 7, 6, 1, 6,},
578 { 5, 5, 1, 6, 4, 6, 5, 2, 4,},
579 { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
581 { 3, 3, 2, 3, 5, 6, 6, 4, 2,},
582 { 7, 1, 3, 3, 6, 5, 7, 4, 3,},
583 { 5, 4, 1, 5, 5, 6, 6, 4, 2,},
584 { 6, 4, 2, 2, 6, 3, 6, 6, 2,},
585 { 6, 4, 2, 5, 3, 6, 3, 3, 2,},
586 { 6, 3, 2, 3, 5, 2, 4, 6, 3,},
587 { 6, 2, 2, 4, 3, 5, 3, 6, 3,},
588 { 7, 5, 1, 7, 4, 7, 7, 3, 2,},
589 { 5, 5, 2, 3, 6, 7, 7, 5, 1,},
590 { 0, 0, 0, 0, 0, 0, 0, 0, 0,},
595 #define PBTYPE_ESCAPE 0xFF
597 /** tables used for P-frame macroblock type decoding */
599 #define NUM_PTYPE_VLCS 7
600 #define PTYPE_VLC_SIZE 8
601 #define PTYPE_VLC_BITS 7
603 static const uint8_t ptype_vlc_tabs[NUM_PTYPE_VLCS][PTYPE_VLC_SIZE][2] = {
604 { { PBTYPE_ESCAPE, 7 }, { 11, 7 }, { 3, 6 }, { 8, 5 },
605 { 9, 4 }, { 2, 3 }, { 1, 2 }, { 0, 1 } },
606 { { PBTYPE_ESCAPE, 7 }, { 3, 7 }, { 8, 6 }, { 9, 5 },
607 { 11, 4 }, { 0, 3 }, { 2, 2 }, { 1, 1 } },
608 { { 9, 3 }, { 8, 3 }, { 3, 4 }, { 1, 4 }, { PBTYPE_ESCAPE, 5 },
609 { 0, 5 }, { 11, 4 }, { 2, 1 } },
610 { { 3, 2 }, { 2, 2 }, { PBTYPE_ESCAPE, 6 }, { 11, 6 },
611 { 1, 5 }, { 0, 4 }, { 8, 3 }, { 9, 2 } },
612 { { PBTYPE_ESCAPE, 7 }, { 11, 7 }, { 1, 6 }, { 0, 5 },
613 { 3, 4 }, { 9, 3 }, { 8, 2 }, { 2, 1 } },
614 { { PBTYPE_ESCAPE, 7 }, { 11, 7 }, { 1, 6 }, { 0, 5 },
615 { 3, 4 }, { 8, 3 }, { 9, 2 }, { 2, 1 } },
616 { { PBTYPE_ESCAPE, 7 }, { 3, 7 }, { 0, 6 }, { 8, 5 },
617 { 9, 4 }, { 1, 3 }, { 2, 2 }, { 11, 1 } },
620 static const uint8_t block_num_to_ptype_vlc_num[12] = {
621 0, 1, 2, 3, 0, 0, 2, 0, 4, 5, 0, 6
625 /** tables used for P-frame macroblock type decoding */
627 #define NUM_BTYPE_VLCS 6
628 #define BTYPE_VLC_SIZE 7
629 #define BTYPE_VLC_BITS 6
631 static const uint8_t btype_vlc_tabs[NUM_BTYPE_VLCS][BTYPE_VLC_SIZE][2] = {
632 { { 4, 2 }, { 0, 2 }, { PBTYPE_ESCAPE, 5 },
633 { 10, 5 }, { 7, 4 }, { 1, 3 }, { 5, 2 } },
634 { { PBTYPE_ESCAPE, 6 }, { 10, 6 }, { 7, 5 },
635 { 0, 4 }, { 4, 3 }, { 5, 2 }, { 1, 1 } },
636 { { PBTYPE_ESCAPE, 6 }, { 0, 6 }, { 10, 5 },
637 { 1, 4 }, { 7, 3 }, { 5, 2 }, { 4, 1 } },
638 { { 4, 3 }, { 1, 3 }, { PBTYPE_ESCAPE, 5 },
639 { 0, 5 }, { 10, 4 }, { 7, 3 }, { 5, 1 } },
640 { { PBTYPE_ESCAPE, 6 }, { 0, 6 }, { 1, 5 },
641 { 10, 4 }, { 4, 3 }, { 5, 2 }, { 7, 1 } },
642 { { PBTYPE_ESCAPE, 6 }, { 0, 6 }, { 1, 5 },
643 { 10, 4 }, { 4, 3 }, { 7, 2 }, { 5, 1 } },
646 static const uint8_t block_num_to_btype_vlc_num[12] = {
647 0, 1, 0, 0, 2, 3, 0, 5, 0, 0, 4, 0
650 #endif /* AVCODEC_RV40VLC2_H */