2 * MSMPEG4 backend for ffmpeg encoder and decoder
3 * copyright (c) 2001 Fabrice Bellard
4 * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 * msmpeg4v1 & v2 stuff by Michael Niedermayer <michaelni@gmx.at>
25 * MSMPEG4 data tables.
28 /* intra picture macro block coded block pattern */
29 const uint16_t ff_msmp4_mb_i_table[64][2] = {
30 { 0x1, 1 },{ 0x17, 6 },{ 0x9, 5 },{ 0x5, 5 },
31 { 0x6, 5 },{ 0x47, 9 },{ 0x20, 7 },{ 0x10, 7 },
32 { 0x2, 5 },{ 0x7c, 9 },{ 0x3a, 7 },{ 0x1d, 7 },
33 { 0x2, 6 },{ 0xec, 9 },{ 0x77, 8 },{ 0x0, 8 },
34 { 0x3, 5 },{ 0xb7, 9 },{ 0x2c, 7 },{ 0x13, 7 },
35 { 0x1, 6 },{ 0x168, 10 },{ 0x46, 8 },{ 0x3f, 8 },
36 { 0x1e, 6 },{ 0x712, 13 },{ 0xb5, 9 },{ 0x42, 8 },
37 { 0x22, 7 },{ 0x1c5, 11 },{ 0x11e, 10 },{ 0x87, 9 },
38 { 0x6, 4 },{ 0x3, 9 },{ 0x1e, 7 },{ 0x1c, 6 },
39 { 0x12, 7 },{ 0x388, 12 },{ 0x44, 9 },{ 0x70, 9 },
40 { 0x1f, 6 },{ 0x23e, 11 },{ 0x39, 8 },{ 0x8e, 9 },
41 { 0x1, 7 },{ 0x1c6, 11 },{ 0xb6, 9 },{ 0x45, 9 },
42 { 0x14, 6 },{ 0x23f, 11 },{ 0x7d, 9 },{ 0x18, 9 },
43 { 0x7, 7 },{ 0x1c7, 11 },{ 0x86, 9 },{ 0x19, 9 },
44 { 0x15, 6 },{ 0x1db, 10 },{ 0x2, 9 },{ 0x46, 9 },
45 { 0xd, 8 },{ 0x713, 13 },{ 0x1da, 10 },{ 0x169, 10 },
48 /* non intra picture macro block coded block pattern + mb type */
49 static const uint32_t table_mb_non_intra[128][2] = {
50 { 0x40, 7 },{ 0x13c9, 13 },{ 0x9fd, 12 },{ 0x1fc, 15 },
51 { 0x9fc, 12 },{ 0xa83, 18 },{ 0x12d34, 17 },{ 0x83bc, 16 },
52 { 0x83a, 12 },{ 0x7f8, 17 },{ 0x3fd, 16 },{ 0x3ff, 16 },
53 { 0x79, 13 },{ 0xa82, 18 },{ 0x969d, 16 },{ 0x2a4, 16 },
54 { 0x978, 12 },{ 0x543, 17 },{ 0x41df, 15 },{ 0x7f9, 17 },
55 { 0x12f3, 13 },{ 0x25a6b, 18 },{ 0x25ef9, 18 },{ 0x3fa, 16 },
56 { 0x20ee, 14 },{ 0x969ab, 20 },{ 0x969c, 16 },{ 0x25ef8, 18 },
57 { 0x12d2, 13 },{ 0xa85, 18 },{ 0x969e, 16 },{ 0x4bc8, 15 },
58 { 0x3d, 12 },{ 0x12f7f, 17 },{ 0x2a2, 16 },{ 0x969f, 16 },
59 { 0x25ee, 14 },{ 0x12d355, 21 },{ 0x12f7d, 17 },{ 0x12f7e, 17 },
60 { 0x9e5, 12 },{ 0xa81, 18 },{ 0x4b4d4, 19 },{ 0x83bd, 16 },
61 { 0x78, 13 },{ 0x969b, 16 },{ 0x3fe, 16 },{ 0x2a5, 16 },
62 { 0x7e, 13 },{ 0xa80, 18 },{ 0x2a3, 16 },{ 0x3fb, 16 },
63 { 0x1076, 13 },{ 0xa84, 18 },{ 0x153, 15 },{ 0x4bc9, 15 },
64 { 0x55, 13 },{ 0x12d354, 21 },{ 0x4bde, 15 },{ 0x25e5, 14 },
65 { 0x25b, 10 },{ 0x4b4c, 15 },{ 0x96b, 12 },{ 0x96a, 12 },
66 { 0x1, 2 },{ 0x0, 7 },{ 0x26, 6 },{ 0x12b, 9 },
67 { 0x7, 3 },{ 0x20f, 10 },{ 0x4, 9 },{ 0x28, 12 },
68 { 0x6, 3 },{ 0x20a, 10 },{ 0x128, 9 },{ 0x2b, 12 },
69 { 0x11, 5 },{ 0x1b, 11 },{ 0x13a, 9 },{ 0x4ff, 11 },
70 { 0x3, 4 },{ 0x277, 10 },{ 0x106, 9 },{ 0x839, 12 },
71 { 0xb, 4 },{ 0x27b, 10 },{ 0x12c, 9 },{ 0x4bf, 11 },
72 { 0x9, 6 },{ 0x35, 12 },{ 0x27e, 10 },{ 0x13c8, 13 },
73 { 0x1, 6 },{ 0x4aa, 11 },{ 0x208, 10 },{ 0x29, 12 },
74 { 0x1, 4 },{ 0x254, 10 },{ 0x12e, 9 },{ 0x838, 12 },
75 { 0x24, 6 },{ 0x4f3, 11 },{ 0x276, 10 },{ 0x12f6, 13 },
76 { 0x1, 5 },{ 0x27a, 10 },{ 0x13e, 9 },{ 0x3e, 12 },
77 { 0x8, 6 },{ 0x413, 11 },{ 0xc, 10 },{ 0x4be, 11 },
78 { 0x14, 5 },{ 0x412, 11 },{ 0x253, 10 },{ 0x97a, 12 },
79 { 0x21, 6 },{ 0x4ab, 11 },{ 0x20b, 10 },{ 0x34, 12 },
80 { 0x15, 5 },{ 0x278, 10 },{ 0x252, 10 },{ 0x968, 12 },
81 { 0x5, 5 },{ 0xb, 10 },{ 0x9c, 8 },{ 0xe, 10 },
86 const uint32_t ff_table0_dc_lum[120][2] = {
87 { 0x1, 1 },{ 0x1, 2 },{ 0x1, 4 },{ 0x1, 5 },
88 { 0x5, 5 },{ 0x7, 5 },{ 0x8, 6 },{ 0xc, 6 },
89 { 0x0, 7 },{ 0x2, 7 },{ 0x12, 7 },{ 0x1a, 7 },
90 { 0x3, 8 },{ 0x7, 8 },{ 0x27, 8 },{ 0x37, 8 },
91 { 0x5, 9 },{ 0x4c, 9 },{ 0x6c, 9 },{ 0x6d, 9 },
92 { 0x8, 10 },{ 0x19, 10 },{ 0x9b, 10 },{ 0x1b, 10 },
93 { 0x9a, 10 },{ 0x13, 11 },{ 0x34, 11 },{ 0x35, 11 },
94 { 0x61, 12 },{ 0x48, 13 },{ 0xc4, 13 },{ 0x4a, 13 },
95 { 0xc6, 13 },{ 0xc7, 13 },{ 0x92, 14 },{ 0x18b, 14 },
96 { 0x93, 14 },{ 0x183, 14 },{ 0x182, 14 },{ 0x96, 14 },
97 { 0x97, 14 },{ 0x180, 14 },{ 0x314, 15 },{ 0x315, 15 },
98 { 0x605, 16 },{ 0x604, 16 },{ 0x606, 16 },{ 0xc0e, 17 },
99 { 0x303cd, 23 },{ 0x303c9, 23 },{ 0x303c8, 23 },{ 0x303ca, 23 },
100 { 0x303cb, 23 },{ 0x303cc, 23 },{ 0x303ce, 23 },{ 0x303cf, 23 },
101 { 0x303d0, 23 },{ 0x303d1, 23 },{ 0x303d2, 23 },{ 0x303d3, 23 },
102 { 0x303d4, 23 },{ 0x303d5, 23 },{ 0x303d6, 23 },{ 0x303d7, 23 },
103 { 0x303d8, 23 },{ 0x303d9, 23 },{ 0x303da, 23 },{ 0x303db, 23 },
104 { 0x303dc, 23 },{ 0x303dd, 23 },{ 0x303de, 23 },{ 0x303df, 23 },
105 { 0x303e0, 23 },{ 0x303e1, 23 },{ 0x303e2, 23 },{ 0x303e3, 23 },
106 { 0x303e4, 23 },{ 0x303e5, 23 },{ 0x303e6, 23 },{ 0x303e7, 23 },
107 { 0x303e8, 23 },{ 0x303e9, 23 },{ 0x303ea, 23 },{ 0x303eb, 23 },
108 { 0x303ec, 23 },{ 0x303ed, 23 },{ 0x303ee, 23 },{ 0x303ef, 23 },
109 { 0x303f0, 23 },{ 0x303f1, 23 },{ 0x303f2, 23 },{ 0x303f3, 23 },
110 { 0x303f4, 23 },{ 0x303f5, 23 },{ 0x303f6, 23 },{ 0x303f7, 23 },
111 { 0x303f8, 23 },{ 0x303f9, 23 },{ 0x303fa, 23 },{ 0x303fb, 23 },
112 { 0x303fc, 23 },{ 0x303fd, 23 },{ 0x303fe, 23 },{ 0x303ff, 23 },
113 { 0x60780, 24 },{ 0x60781, 24 },{ 0x60782, 24 },{ 0x60783, 24 },
114 { 0x60784, 24 },{ 0x60785, 24 },{ 0x60786, 24 },{ 0x60787, 24 },
115 { 0x60788, 24 },{ 0x60789, 24 },{ 0x6078a, 24 },{ 0x6078b, 24 },
116 { 0x6078c, 24 },{ 0x6078d, 24 },{ 0x6078e, 24 },{ 0x6078f, 24 },
119 const uint32_t ff_table0_dc_chroma[120][2] = {
120 { 0x0, 2 },{ 0x1, 2 },{ 0x5, 3 },{ 0x9, 4 },
121 { 0xd, 4 },{ 0x11, 5 },{ 0x1d, 5 },{ 0x1f, 5 },
122 { 0x21, 6 },{ 0x31, 6 },{ 0x38, 6 },{ 0x33, 6 },
123 { 0x39, 6 },{ 0x3d, 6 },{ 0x61, 7 },{ 0x79, 7 },
124 { 0x80, 8 },{ 0xc8, 8 },{ 0xca, 8 },{ 0xf0, 8 },
125 { 0x81, 8 },{ 0xc0, 8 },{ 0xc9, 8 },{ 0x107, 9 },
126 { 0x106, 9 },{ 0x196, 9 },{ 0x183, 9 },{ 0x1e3, 9 },
127 { 0x1e2, 9 },{ 0x20a, 10 },{ 0x20b, 10 },{ 0x609, 11 },
128 { 0x412, 11 },{ 0x413, 11 },{ 0x60b, 11 },{ 0x411, 11 },
129 { 0x60a, 11 },{ 0x65f, 11 },{ 0x410, 11 },{ 0x65d, 11 },
130 { 0x65e, 11 },{ 0xcb8, 12 },{ 0xc10, 12 },{ 0xcb9, 12 },
131 { 0x1823, 13 },{ 0x3045, 14 },{ 0x6089, 15 },{ 0xc110, 16 },
132 { 0x304448, 22 },{ 0x304449, 22 },{ 0x30444a, 22 },{ 0x30444b, 22 },
133 { 0x30444c, 22 },{ 0x30444d, 22 },{ 0x30444e, 22 },{ 0x30444f, 22 },
134 { 0x304450, 22 },{ 0x304451, 22 },{ 0x304452, 22 },{ 0x304453, 22 },
135 { 0x304454, 22 },{ 0x304455, 22 },{ 0x304456, 22 },{ 0x304457, 22 },
136 { 0x304458, 22 },{ 0x304459, 22 },{ 0x30445a, 22 },{ 0x30445b, 22 },
137 { 0x30445c, 22 },{ 0x30445d, 22 },{ 0x30445e, 22 },{ 0x30445f, 22 },
138 { 0x304460, 22 },{ 0x304461, 22 },{ 0x304462, 22 },{ 0x304463, 22 },
139 { 0x304464, 22 },{ 0x304465, 22 },{ 0x304466, 22 },{ 0x304467, 22 },
140 { 0x304468, 22 },{ 0x304469, 22 },{ 0x30446a, 22 },{ 0x30446b, 22 },
141 { 0x30446c, 22 },{ 0x30446d, 22 },{ 0x30446e, 22 },{ 0x30446f, 22 },
142 { 0x304470, 22 },{ 0x304471, 22 },{ 0x304472, 22 },{ 0x304473, 22 },
143 { 0x304474, 22 },{ 0x304475, 22 },{ 0x304476, 22 },{ 0x304477, 22 },
144 { 0x304478, 22 },{ 0x304479, 22 },{ 0x30447a, 22 },{ 0x30447b, 22 },
145 { 0x30447c, 22 },{ 0x30447d, 22 },{ 0x30447e, 22 },{ 0x30447f, 22 },
146 { 0x608880, 23 },{ 0x608881, 23 },{ 0x608882, 23 },{ 0x608883, 23 },
147 { 0x608884, 23 },{ 0x608885, 23 },{ 0x608886, 23 },{ 0x608887, 23 },
148 { 0x608888, 23 },{ 0x608889, 23 },{ 0x60888a, 23 },{ 0x60888b, 23 },
149 { 0x60888c, 23 },{ 0x60888d, 23 },{ 0x60888e, 23 },{ 0x60888f, 23 },
154 const uint32_t ff_table1_dc_lum[120][2] = {
155 { 0x2, 2 },{ 0x3, 2 },{ 0x3, 3 },{ 0x2, 4 },
156 { 0x5, 4 },{ 0x1, 5 },{ 0x3, 5 },{ 0x8, 5 },
157 { 0x0, 6 },{ 0x5, 6 },{ 0xd, 6 },{ 0xf, 6 },
158 { 0x13, 6 },{ 0x8, 7 },{ 0x18, 7 },{ 0x1c, 7 },
159 { 0x24, 7 },{ 0x4, 8 },{ 0x6, 8 },{ 0x12, 8 },
160 { 0x32, 8 },{ 0x3b, 8 },{ 0x4a, 8 },{ 0x4b, 8 },
161 { 0xb, 9 },{ 0x26, 9 },{ 0x27, 9 },{ 0x66, 9 },
162 { 0x74, 9 },{ 0x75, 9 },{ 0x14, 10 },{ 0x1c, 10 },
163 { 0x1f, 10 },{ 0x1d, 10 },{ 0x2b, 11 },{ 0x3d, 11 },
164 { 0x19d, 11 },{ 0x19f, 11 },{ 0x54, 12 },{ 0x339, 12 },
165 { 0x338, 12 },{ 0x33d, 12 },{ 0xab, 13 },{ 0xf1, 13 },
166 { 0x678, 13 },{ 0xf2, 13 },{ 0x1e0, 14 },{ 0x1e1, 14 },
167 { 0x154, 14 },{ 0xcf2, 14 },{ 0x3cc, 15 },{ 0x2ab, 15 },
168 { 0x19e7, 15 },{ 0x3ce, 15 },{ 0x19e6, 15 },{ 0x554, 16 },
169 { 0x79f, 16 },{ 0x555, 16 },{ 0xf3d, 17 },{ 0xf37, 17 },
170 { 0xf3c, 17 },{ 0xf35, 17 },{ 0x1e6d, 18 },{ 0x1e68, 18 },
171 { 0x3cd8, 19 },{ 0x3cd3, 19 },{ 0x3cd9, 19 },{ 0x79a4, 20 },
172 { 0xf34ba, 25 },{ 0xf34b4, 25 },{ 0xf34b5, 25 },{ 0xf34b6, 25 },
173 { 0xf34b7, 25 },{ 0xf34b8, 25 },{ 0xf34b9, 25 },{ 0xf34bb, 25 },
174 { 0xf34bc, 25 },{ 0xf34bd, 25 },{ 0xf34be, 25 },{ 0xf34bf, 25 },
175 { 0x1e6940, 26 },{ 0x1e6941, 26 },{ 0x1e6942, 26 },{ 0x1e6943, 26 },
176 { 0x1e6944, 26 },{ 0x1e6945, 26 },{ 0x1e6946, 26 },{ 0x1e6947, 26 },
177 { 0x1e6948, 26 },{ 0x1e6949, 26 },{ 0x1e694a, 26 },{ 0x1e694b, 26 },
178 { 0x1e694c, 26 },{ 0x1e694d, 26 },{ 0x1e694e, 26 },{ 0x1e694f, 26 },
179 { 0x1e6950, 26 },{ 0x1e6951, 26 },{ 0x1e6952, 26 },{ 0x1e6953, 26 },
180 { 0x1e6954, 26 },{ 0x1e6955, 26 },{ 0x1e6956, 26 },{ 0x1e6957, 26 },
181 { 0x1e6958, 26 },{ 0x1e6959, 26 },{ 0x1e695a, 26 },{ 0x1e695b, 26 },
182 { 0x1e695c, 26 },{ 0x1e695d, 26 },{ 0x1e695e, 26 },{ 0x1e695f, 26 },
183 { 0x1e6960, 26 },{ 0x1e6961, 26 },{ 0x1e6962, 26 },{ 0x1e6963, 26 },
184 { 0x1e6964, 26 },{ 0x1e6965, 26 },{ 0x1e6966, 26 },{ 0x1e6967, 26 },
187 const uint32_t ff_table1_dc_chroma[120][2] = {
188 { 0x0, 2 },{ 0x1, 2 },{ 0x4, 3 },{ 0x7, 3 },
189 { 0xb, 4 },{ 0xd, 4 },{ 0x15, 5 },{ 0x28, 6 },
190 { 0x30, 6 },{ 0x32, 6 },{ 0x52, 7 },{ 0x62, 7 },
191 { 0x66, 7 },{ 0xa6, 8 },{ 0xc6, 8 },{ 0xcf, 8 },
192 { 0x14f, 9 },{ 0x18e, 9 },{ 0x19c, 9 },{ 0x29d, 10 },
193 { 0x33a, 10 },{ 0x538, 11 },{ 0x63c, 11 },{ 0x63e, 11 },
194 { 0x63f, 11 },{ 0x676, 11 },{ 0xa73, 12 },{ 0xc7a, 12 },
195 { 0xcef, 12 },{ 0x14e5, 13 },{ 0x19dd, 13 },{ 0x29c8, 14 },
196 { 0x29c9, 14 },{ 0x63dd, 15 },{ 0x33b8, 14 },{ 0x33b9, 14 },
197 { 0xc7b6, 16 },{ 0x63d8, 15 },{ 0x63df, 15 },{ 0xc7b3, 16 },
198 { 0xc7b4, 16 },{ 0xc7b5, 16 },{ 0x63de, 15 },{ 0xc7b7, 16 },
199 { 0xc7b8, 16 },{ 0xc7b9, 16 },{ 0x18f65, 17 },{ 0x31ec8, 18 },
200 { 0xc7b248, 24 },{ 0xc7b249, 24 },{ 0xc7b24a, 24 },{ 0xc7b24b, 24 },
201 { 0xc7b24c, 24 },{ 0xc7b24d, 24 },{ 0xc7b24e, 24 },{ 0xc7b24f, 24 },
202 { 0xc7b250, 24 },{ 0xc7b251, 24 },{ 0xc7b252, 24 },{ 0xc7b253, 24 },
203 { 0xc7b254, 24 },{ 0xc7b255, 24 },{ 0xc7b256, 24 },{ 0xc7b257, 24 },
204 { 0xc7b258, 24 },{ 0xc7b259, 24 },{ 0xc7b25a, 24 },{ 0xc7b25b, 24 },
205 { 0xc7b25c, 24 },{ 0xc7b25d, 24 },{ 0xc7b25e, 24 },{ 0xc7b25f, 24 },
206 { 0xc7b260, 24 },{ 0xc7b261, 24 },{ 0xc7b262, 24 },{ 0xc7b263, 24 },
207 { 0xc7b264, 24 },{ 0xc7b265, 24 },{ 0xc7b266, 24 },{ 0xc7b267, 24 },
208 { 0xc7b268, 24 },{ 0xc7b269, 24 },{ 0xc7b26a, 24 },{ 0xc7b26b, 24 },
209 { 0xc7b26c, 24 },{ 0xc7b26d, 24 },{ 0xc7b26e, 24 },{ 0xc7b26f, 24 },
210 { 0xc7b270, 24 },{ 0xc7b271, 24 },{ 0xc7b272, 24 },{ 0xc7b273, 24 },
211 { 0xc7b274, 24 },{ 0xc7b275, 24 },{ 0xc7b276, 24 },{ 0xc7b277, 24 },
212 { 0xc7b278, 24 },{ 0xc7b279, 24 },{ 0xc7b27a, 24 },{ 0xc7b27b, 24 },
213 { 0xc7b27c, 24 },{ 0xc7b27d, 24 },{ 0xc7b27e, 24 },{ 0xc7b27f, 24 },
214 { 0x18f6480, 25 },{ 0x18f6481, 25 },{ 0x18f6482, 25 },{ 0x18f6483, 25 },
215 { 0x18f6484, 25 },{ 0x18f6485, 25 },{ 0x18f6486, 25 },{ 0x18f6487, 25 },
216 { 0x18f6488, 25 },{ 0x18f6489, 25 },{ 0x18f648a, 25 },{ 0x18f648b, 25 },
217 { 0x18f648c, 25 },{ 0x18f648d, 25 },{ 0x18f648e, 25 },{ 0x18f648f, 25 },
220 /* vlc table 0, for intra luma */
222 static const uint16_t table0_vlc[133][2] = {
223 { 0x1, 2 },{ 0x6, 3 },{ 0xf, 4 },{ 0x16, 5 },
224 { 0x20, 6 },{ 0x18, 7 },{ 0x8, 8 },{ 0x9a, 8 },
225 { 0x56, 9 },{ 0x13e, 9 },{ 0xf0, 10 },{ 0x3a5, 10 },
226 { 0x77, 11 },{ 0x1ef, 11 },{ 0x9a, 12 },{ 0x5d, 13 },
227 { 0x1, 4 },{ 0x11, 5 },{ 0x2, 7 },{ 0xb, 8 },
228 { 0x12, 9 },{ 0x1d6, 9 },{ 0x27e, 10 },{ 0x191, 11 },
229 { 0xea, 12 },{ 0x3dc, 12 },{ 0x13b, 13 },{ 0x4, 5 },
230 { 0x14, 7 },{ 0x9e, 8 },{ 0x9, 10 },{ 0x1ac, 11 },
231 { 0x1e2, 11 },{ 0x3ca, 12 },{ 0x5f, 13 },{ 0x17, 5 },
232 { 0x4e, 7 },{ 0x5e, 9 },{ 0xf3, 10 },{ 0x1ad, 11 },
233 { 0xec, 12 },{ 0x5f0, 13 },{ 0xe, 6 },{ 0xe1, 8 },
234 { 0x3a4, 10 },{ 0x9c, 12 },{ 0x13d, 13 },{ 0x3b, 6 },
235 { 0x1c, 9 },{ 0x14, 11 },{ 0x9be, 12 },{ 0x6, 7 },
236 { 0x7a, 9 },{ 0x190, 11 },{ 0x137, 13 },{ 0x1b, 7 },
237 { 0x8, 10 },{ 0x75c, 11 },{ 0x71, 7 },{ 0xd7, 10 },
238 { 0x9bf, 12 },{ 0x7, 8 },{ 0xaf, 10 },{ 0x4cc, 11 },
239 { 0x34, 8 },{ 0x265, 10 },{ 0x9f, 12 },{ 0xe0, 8 },
240 { 0x16, 11 },{ 0x327, 12 },{ 0x15, 9 },{ 0x17d, 11 },
241 { 0xebb, 12 },{ 0x14, 9 },{ 0xf6, 10 },{ 0x1e4, 11 },
242 { 0xcb, 10 },{ 0x99d, 12 },{ 0xca, 10 },{ 0x2fc, 12 },
243 { 0x17f, 11 },{ 0x4cd, 11 },{ 0x2fd, 12 },{ 0x4fe, 11 },
244 { 0x13a, 13 },{ 0xa, 4 },{ 0x42, 7 },{ 0x1d3, 9 },
245 { 0x4dd, 11 },{ 0x12, 5 },{ 0xe8, 8 },{ 0x4c, 11 },
246 { 0x136, 13 },{ 0x39, 6 },{ 0x264, 10 },{ 0xeba, 12 },
247 { 0x0, 7 },{ 0xae, 10 },{ 0x99c, 12 },{ 0x1f, 7 },
248 { 0x4de, 11 },{ 0x43, 7 },{ 0x4dc, 11 },{ 0x3, 8 },
249 { 0x3cb, 12 },{ 0x6, 8 },{ 0x99e, 12 },{ 0x2a, 8 },
250 { 0x5f1, 13 },{ 0xf, 8 },{ 0x9fe, 12 },{ 0x33, 8 },
251 { 0x9ff, 12 },{ 0x98, 8 },{ 0x99f, 12 },{ 0xea, 8 },
252 { 0x13c, 13 },{ 0x2e, 8 },{ 0x192, 11 },{ 0x136, 9 },
253 { 0x6a, 9 },{ 0x15, 11 },{ 0x3af, 10 },{ 0x1e3, 11 },
254 { 0x74, 11 },{ 0xeb, 12 },{ 0x2f9, 12 },{ 0x5c, 13 },
255 { 0xed, 12 },{ 0x3dd, 12 },{ 0x326, 12 },{ 0x5e, 13 },
259 static const int8_t table0_level[132] = {
260 1, 2, 3, 4, 5, 6, 7, 8,
261 9, 10, 11, 12, 13, 14, 15, 16,
262 1, 2, 3, 4, 5, 6, 7, 8,
263 9, 10, 11, 1, 2, 3, 4, 5,
264 6, 7, 8, 1, 2, 3, 4, 5,
265 6, 7, 1, 2, 3, 4, 5, 1,
266 2, 3, 4, 1, 2, 3, 4, 1,
267 2, 3, 1, 2, 3, 1, 2, 3,
268 1, 2, 3, 1, 2, 3, 1, 2,
269 3, 1, 2, 3, 1, 2, 1, 2,
270 1, 1, 1, 1, 1, 1, 2, 3,
271 4, 1, 2, 3, 4, 1, 2, 3,
272 1, 2, 3, 1, 2, 1, 2, 1,
273 2, 1, 2, 1, 2, 1, 2, 1,
274 2, 1, 2, 1, 2, 1, 2, 1,
275 1, 1, 1, 1, 1, 1, 1, 1,
279 static const int8_t table0_run[132] = {
280 0, 0, 0, 0, 0, 0, 0, 0,
281 0, 0, 0, 0, 0, 0, 0, 0,
282 1, 1, 1, 1, 1, 1, 1, 1,
283 1, 1, 1, 2, 2, 2, 2, 2,
284 2, 2, 2, 3, 3, 3, 3, 3,
285 3, 3, 4, 4, 4, 4, 4, 5,
286 5, 5, 5, 6, 6, 6, 6, 7,
287 7, 7, 8, 8, 8, 9, 9, 9,
288 10, 10, 10, 11, 11, 11, 12, 12,
289 12, 13, 13, 13, 14, 14, 15, 15,
290 16, 17, 18, 19, 20, 0, 0, 0,
291 0, 1, 1, 1, 1, 2, 2, 2,
292 3, 3, 3, 4, 4, 5, 5, 6,
293 6, 7, 7, 8, 8, 9, 9, 10,
294 10, 11, 11, 12, 12, 13, 13, 14,
295 15, 16, 17, 18, 19, 20, 21, 22,
299 /* vlc table 1, for intra chroma and P macro blocks */
301 static const uint16_t table1_vlc[149][2] = {
302 { 0x4, 3 },{ 0x14, 5 },{ 0x17, 7 },{ 0x7f, 8 },
303 { 0x154, 9 },{ 0x1f2, 10 },{ 0xbf, 11 },{ 0x65, 12 },
304 { 0xaaa, 12 },{ 0x630, 13 },{ 0x1597, 13 },{ 0x3b7, 14 },
305 { 0x2b22, 14 },{ 0xbe6, 15 },{ 0xb, 4 },{ 0x37, 7 },
306 { 0x62, 9 },{ 0x7, 11 },{ 0x166, 12 },{ 0xce, 13 },
307 { 0x1590, 13 },{ 0x5f6, 14 },{ 0xbe7, 15 },{ 0x7, 5 },
308 { 0x6d, 8 },{ 0x3, 11 },{ 0x31f, 12 },{ 0x5f2, 14 },
309 { 0x2, 6 },{ 0x61, 9 },{ 0x55, 12 },{ 0x1df, 14 },
310 { 0x1a, 6 },{ 0x1e, 10 },{ 0xac9, 12 },{ 0x2b23, 14 },
311 { 0x1e, 6 },{ 0x1f, 10 },{ 0xac3, 12 },{ 0x2b2b, 14 },
312 { 0x6, 7 },{ 0x4, 11 },{ 0x2f8, 13 },{ 0x19, 7 },
313 { 0x6, 11 },{ 0x63d, 13 },{ 0x57, 7 },{ 0x182, 11 },
314 { 0x2aa2, 14 },{ 0x4, 8 },{ 0x180, 11 },{ 0x59c, 14 },
315 { 0x7d, 8 },{ 0x164, 12 },{ 0x76d, 15 },{ 0x2, 9 },
316 { 0x18d, 11 },{ 0x1581, 13 },{ 0xad, 8 },{ 0x60, 12 },
317 { 0xc67, 14 },{ 0x1c, 9 },{ 0xee, 13 },{ 0x3, 9 },
318 { 0x2cf, 13 },{ 0xd9, 9 },{ 0x1580, 13 },{ 0x2, 11 },
319 { 0x183, 11 },{ 0x57, 12 },{ 0x61, 12 },{ 0x31, 11 },
320 { 0x66, 12 },{ 0x631, 13 },{ 0x632, 13 },{ 0xac, 13 },
321 { 0x31d, 12 },{ 0x76, 12 },{ 0x3a, 11 },{ 0x165, 12 },
322 { 0xc66, 14 },{ 0x3, 2 },{ 0x54, 7 },{ 0x2ab, 10 },
323 { 0x16, 13 },{ 0x5f7, 14 },{ 0x5, 4 },{ 0xf8, 9 },
324 { 0xaa9, 12 },{ 0x5f, 15 },{ 0x4, 4 },{ 0x1c, 10 },
325 { 0x1550, 13 },{ 0x4, 5 },{ 0x77, 11 },{ 0x76c, 15 },
326 { 0xe, 5 },{ 0xa, 12 },{ 0xc, 5 },{ 0x562, 11 },
327 { 0x4, 6 },{ 0x31c, 12 },{ 0x6, 6 },{ 0xc8, 13 },
328 { 0xd, 6 },{ 0x1da, 13 },{ 0x7, 6 },{ 0xc9, 13 },
329 { 0x1, 7 },{ 0x2e, 14 },{ 0x14, 7 },{ 0x1596, 13 },
330 { 0xa, 7 },{ 0xac2, 12 },{ 0x16, 7 },{ 0x15b, 14 },
331 { 0x15, 7 },{ 0x15a, 14 },{ 0xf, 8 },{ 0x5e, 15 },
332 { 0x7e, 8 },{ 0xab, 8 },{ 0x2d, 9 },{ 0xd8, 9 },
333 { 0xb, 9 },{ 0x14, 10 },{ 0x2b3, 10 },{ 0x1f3, 10 },
334 { 0x3a, 10 },{ 0x0, 10 },{ 0x58, 10 },{ 0x2e, 9 },
335 { 0x5e, 10 },{ 0x563, 11 },{ 0xec, 12 },{ 0x54, 12 },
336 { 0xac1, 12 },{ 0x1556, 13 },{ 0x2fa, 13 },{ 0x181, 11 },
337 { 0x1557, 13 },{ 0x59d, 14 },{ 0x2aa3, 14 },{ 0x2b2a, 14 },
338 { 0x1de, 14 },{ 0x63c, 13 },{ 0xcf, 13 },{ 0x1594, 13 },
342 static const int8_t table1_level[148] = {
343 1, 2, 3, 4, 5, 6, 7, 8,
344 9, 10, 11, 12, 13, 14, 1, 2,
345 3, 4, 5, 6, 7, 8, 9, 1,
346 2, 3, 4, 5, 1, 2, 3, 4,
347 1, 2, 3, 4, 1, 2, 3, 4,
348 1, 2, 3, 1, 2, 3, 1, 2,
349 3, 1, 2, 3, 1, 2, 3, 1,
350 2, 3, 1, 2, 3, 1, 2, 1,
351 2, 1, 2, 1, 1, 1, 1, 1,
352 1, 1, 1, 1, 1, 1, 1, 1,
353 1, 1, 2, 3, 4, 5, 1, 2,
354 3, 4, 1, 2, 3, 1, 2, 3,
355 1, 2, 1, 2, 1, 2, 1, 2,
356 1, 2, 1, 2, 1, 2, 1, 2,
357 1, 2, 1, 2, 1, 2, 1, 2,
358 1, 1, 1, 1, 1, 1, 1, 1,
359 1, 1, 1, 1, 1, 1, 1, 1,
360 1, 1, 1, 1, 1, 1, 1, 1,
364 static const int8_t table1_run[148] = {
365 0, 0, 0, 0, 0, 0, 0, 0,
366 0, 0, 0, 0, 0, 0, 1, 1,
367 1, 1, 1, 1, 1, 1, 1, 2,
368 2, 2, 2, 2, 3, 3, 3, 3,
369 4, 4, 4, 4, 5, 5, 5, 5,
370 6, 6, 6, 7, 7, 7, 8, 8,
371 8, 9, 9, 9, 10, 10, 10, 11,
372 11, 11, 12, 12, 12, 13, 13, 14,
373 14, 15, 15, 16, 17, 18, 19, 20,
374 21, 22, 23, 24, 25, 26, 27, 28,
375 29, 0, 0, 0, 0, 0, 1, 1,
376 1, 1, 2, 2, 2, 3, 3, 3,
377 4, 4, 5, 5, 6, 6, 7, 7,
378 8, 8, 9, 9, 10, 10, 11, 11,
379 12, 12, 13, 13, 14, 14, 15, 15,
380 16, 17, 18, 19, 20, 21, 22, 23,
381 24, 25, 26, 27, 28, 29, 30, 31,
382 32, 33, 34, 35, 36, 37, 38, 39,
386 /* third vlc table */
388 static const uint16_t table2_vlc[186][2] = {
389 { 0x1, 2 },{ 0x5, 3 },{ 0xd, 4 },{ 0x12, 5 },
390 { 0xe, 6 },{ 0x15, 7 },{ 0x13, 8 },{ 0x3f, 8 },
391 { 0x4b, 9 },{ 0x11f, 9 },{ 0xb8, 10 },{ 0x3e3, 10 },
392 { 0x172, 11 },{ 0x24d, 12 },{ 0x3da, 12 },{ 0x2dd, 13 },
393 { 0x1f55, 13 },{ 0x5b9, 14 },{ 0x3eae, 14 },{ 0x0, 4 },
394 { 0x10, 5 },{ 0x8, 7 },{ 0x20, 8 },{ 0x29, 9 },
395 { 0x1f4, 9 },{ 0x233, 10 },{ 0x1e0, 11 },{ 0x12a, 12 },
396 { 0x3dd, 12 },{ 0x50a, 13 },{ 0x1f29, 13 },{ 0xa42, 14 },
397 { 0x1272, 15 },{ 0x1737, 15 },{ 0x3, 5 },{ 0x11, 7 },
398 { 0xc4, 8 },{ 0x4b, 10 },{ 0xb4, 11 },{ 0x7d4, 11 },
399 { 0x345, 12 },{ 0x2d7, 13 },{ 0x7bf, 13 },{ 0x938, 14 },
400 { 0xbbb, 14 },{ 0x95e, 15 },{ 0x13, 5 },{ 0x78, 7 },
401 { 0x69, 9 },{ 0x232, 10 },{ 0x461, 11 },{ 0x3ec, 12 },
402 { 0x520, 13 },{ 0x1f2a, 13 },{ 0x3e50, 14 },{ 0x3e51, 14 },
403 { 0x1486, 15 },{ 0xc, 6 },{ 0x24, 9 },{ 0x94, 11 },
404 { 0x8c0, 12 },{ 0xf09, 14 },{ 0x1ef0, 15 },{ 0x3d, 6 },
405 { 0x53, 9 },{ 0x1a0, 11 },{ 0x2d6, 13 },{ 0xf08, 14 },
406 { 0x13, 7 },{ 0x7c, 9 },{ 0x7c1, 11 },{ 0x4ac, 14 },
407 { 0x1b, 7 },{ 0xa0, 10 },{ 0x344, 12 },{ 0xf79, 14 },
408 { 0x79, 7 },{ 0x3e1, 10 },{ 0x2d4, 13 },{ 0x2306, 14 },
409 { 0x21, 8 },{ 0x23c, 10 },{ 0xfae, 12 },{ 0x23de, 14 },
410 { 0x35, 8 },{ 0x175, 11 },{ 0x7b3, 13 },{ 0xc5, 8 },
411 { 0x174, 11 },{ 0x785, 13 },{ 0x48, 9 },{ 0x1a3, 11 },
412 { 0x49e, 13 },{ 0x2c, 9 },{ 0xfa, 10 },{ 0x7d6, 11 },
413 { 0x92, 10 },{ 0x5cc, 13 },{ 0x1ef1, 15 },{ 0xa3, 10 },
414 { 0x3ed, 12 },{ 0x93e, 14 },{ 0x1e2, 11 },{ 0x1273, 15 },
415 { 0x7c4, 11 },{ 0x1487, 15 },{ 0x291, 12 },{ 0x293, 12 },
416 { 0xf8a, 12 },{ 0x509, 13 },{ 0x508, 13 },{ 0x78d, 13 },
417 { 0x7be, 13 },{ 0x78c, 13 },{ 0x4ae, 14 },{ 0xbba, 14 },
418 { 0x2307, 14 },{ 0xb9a, 14 },{ 0x1736, 15 },{ 0xe, 4 },
419 { 0x45, 7 },{ 0x1f3, 9 },{ 0x47a, 11 },{ 0x5dc, 13 },
420 { 0x23df, 14 },{ 0x19, 5 },{ 0x28, 9 },{ 0x176, 11 },
421 { 0x49d, 13 },{ 0x23dd, 14 },{ 0x30, 6 },{ 0xa2, 10 },
422 { 0x2ef, 12 },{ 0x5b8, 14 },{ 0x3f, 6 },{ 0xa5, 10 },
423 { 0x3db, 12 },{ 0x93f, 14 },{ 0x44, 7 },{ 0x7cb, 11 },
424 { 0x95f, 15 },{ 0x63, 7 },{ 0x3c3, 12 },{ 0x15, 8 },
425 { 0x8f6, 12 },{ 0x17, 8 },{ 0x498, 13 },{ 0x2c, 8 },
426 { 0x7b2, 13 },{ 0x2f, 8 },{ 0x1f54, 13 },{ 0x8d, 8 },
427 { 0x7bd, 13 },{ 0x8e, 8 },{ 0x1182, 13 },{ 0xfb, 8 },
428 { 0x50b, 13 },{ 0x2d, 8 },{ 0x7c0, 11 },{ 0x79, 9 },
429 { 0x1f5f, 13 },{ 0x7a, 9 },{ 0x1f56, 13 },{ 0x231, 10 },
430 { 0x3e4, 10 },{ 0x1a1, 11 },{ 0x143, 11 },{ 0x1f7, 11 },
431 { 0x16f, 12 },{ 0x292, 12 },{ 0x2e7, 12 },{ 0x16c, 12 },
432 { 0x16d, 12 },{ 0x3dc, 12 },{ 0xf8b, 12 },{ 0x499, 13 },
433 { 0x3d8, 12 },{ 0x78e, 13 },{ 0x2d5, 13 },{ 0x1f5e, 13 },
434 { 0x1f2b, 13 },{ 0x78f, 13 },{ 0x4ad, 14 },{ 0x3eaf, 14 },
435 { 0x23dc, 14 },{ 0x4a, 9 },
438 static const int8_t table2_level[185] = {
439 1, 2, 3, 4, 5, 6, 7, 8,
440 9, 10, 11, 12, 13, 14, 15, 16,
441 17, 18, 19, 1, 2, 3, 4, 5,
442 6, 7, 8, 9, 10, 11, 12, 13,
443 14, 15, 1, 2, 3, 4, 5, 6,
444 7, 8, 9, 10, 11, 12, 1, 2,
445 3, 4, 5, 6, 7, 8, 9, 10,
446 11, 1, 2, 3, 4, 5, 6, 1,
447 2, 3, 4, 5, 1, 2, 3, 4,
448 1, 2, 3, 4, 1, 2, 3, 4,
449 1, 2, 3, 4, 1, 2, 3, 1,
450 2, 3, 1, 2, 3, 1, 2, 3,
451 1, 2, 3, 1, 2, 3, 1, 2,
452 1, 2, 1, 1, 1, 1, 1, 1,
453 1, 1, 1, 1, 1, 1, 1, 1,
454 2, 3, 4, 5, 6, 1, 2, 3,
455 4, 5, 1, 2, 3, 4, 1, 2,
456 3, 4, 1, 2, 3, 1, 2, 1,
457 2, 1, 2, 1, 2, 1, 2, 1,
458 2, 1, 2, 1, 2, 1, 2, 1,
459 2, 1, 2, 1, 1, 1, 1, 1,
460 1, 1, 1, 1, 1, 1, 1, 1,
461 1, 1, 1, 1, 1, 1, 1, 1,
465 static const int8_t table2_run[185] = {
466 0, 0, 0, 0, 0, 0, 0, 0,
467 0, 0, 0, 0, 0, 0, 0, 0,
468 0, 0, 0, 1, 1, 1, 1, 1,
469 1, 1, 1, 1, 1, 1, 1, 1,
470 1, 1, 2, 2, 2, 2, 2, 2,
471 2, 2, 2, 2, 2, 2, 3, 3,
472 3, 3, 3, 3, 3, 3, 3, 3,
473 3, 4, 4, 4, 4, 4, 4, 5,
474 5, 5, 5, 5, 6, 6, 6, 6,
475 7, 7, 7, 7, 8, 8, 8, 8,
476 9, 9, 9, 9, 10, 10, 10, 11,
477 11, 11, 12, 12, 12, 13, 13, 13,
478 14, 14, 14, 15, 15, 15, 16, 16,
479 17, 17, 18, 19, 20, 21, 22, 23,
480 24, 25, 26, 27, 28, 29, 30, 0,
481 0, 0, 0, 0, 0, 1, 1, 1,
482 1, 1, 2, 2, 2, 2, 3, 3,
483 3, 3, 4, 4, 4, 5, 5, 6,
484 6, 7, 7, 8, 8, 9, 9, 10,
485 10, 11, 11, 12, 12, 13, 13, 14,
486 14, 15, 15, 16, 17, 18, 19, 20,
487 21, 22, 23, 24, 25, 26, 27, 28,
488 29, 30, 31, 32, 33, 34, 35, 36,
492 /* second non intra vlc table */
493 static const uint16_t table4_vlc[169][2] = {
494 { 0x0, 3 },{ 0x3, 4 },{ 0xb, 5 },{ 0x14, 6 },
495 { 0x3f, 6 },{ 0x5d, 7 },{ 0xa2, 8 },{ 0xac, 9 },
496 { 0x16e, 9 },{ 0x20a, 10 },{ 0x2e2, 10 },{ 0x432, 11 },
497 { 0x5c9, 11 },{ 0x827, 12 },{ 0xb54, 12 },{ 0x4e6, 13 },
498 { 0x105f, 13 },{ 0x172a, 13 },{ 0x20b2, 14 },{ 0x2d4e, 14 },
499 { 0x39f0, 14 },{ 0x4175, 15 },{ 0x5a9e, 15 },{ 0x4, 4 },
500 { 0x1e, 5 },{ 0x42, 7 },{ 0xb6, 8 },{ 0x173, 9 },
501 { 0x395, 10 },{ 0x72e, 11 },{ 0xb94, 12 },{ 0x16a4, 13 },
502 { 0x20b3, 14 },{ 0x2e45, 14 },{ 0x5, 5 },{ 0x40, 7 },
503 { 0x49, 9 },{ 0x28f, 10 },{ 0x5cb, 11 },{ 0x48a, 13 },
504 { 0x9dd, 14 },{ 0x73e2, 15 },{ 0x18, 5 },{ 0x25, 8 },
505 { 0x8a, 10 },{ 0x51b, 11 },{ 0xe5f, 12 },{ 0x9c9, 14 },
506 { 0x139c, 15 },{ 0x29, 6 },{ 0x4f, 9 },{ 0x412, 11 },
507 { 0x48d, 13 },{ 0x2e41, 14 },{ 0x38, 6 },{ 0x10e, 9 },
508 { 0x5a8, 11 },{ 0x105c, 13 },{ 0x39f2, 14 },{ 0x58, 7 },
509 { 0x21f, 10 },{ 0xe7e, 12 },{ 0x39ff, 14 },{ 0x23, 8 },
510 { 0x2e3, 10 },{ 0x4e5, 13 },{ 0x2e40, 14 },{ 0xa1, 8 },
511 { 0x5be, 11 },{ 0x9c8, 14 },{ 0x83, 8 },{ 0x13a, 11 },
512 { 0x1721, 13 },{ 0x44, 9 },{ 0x276, 12 },{ 0x39f6, 14 },
513 { 0x8b, 10 },{ 0x4ef, 13 },{ 0x5a9b, 15 },{ 0x208, 10 },
514 { 0x1cfe, 13 },{ 0x399, 10 },{ 0x1cb4, 13 },{ 0x39e, 10 },
515 { 0x39f3, 14 },{ 0x5ab, 11 },{ 0x73e3, 15 },{ 0x737, 11 },
516 { 0x5a9f, 15 },{ 0x82d, 12 },{ 0xe69, 12 },{ 0xe68, 12 },
517 { 0x433, 11 },{ 0xb7b, 12 },{ 0x2df8, 14 },{ 0x2e56, 14 },
518 { 0x2e57, 14 },{ 0x39f7, 14 },{ 0x51a5, 15 },{ 0x3, 3 },
519 { 0x2a, 6 },{ 0xe4, 8 },{ 0x28e, 10 },{ 0x735, 11 },
520 { 0x1058, 13 },{ 0x1cfa, 13 },{ 0x2df9, 14 },{ 0x4174, 15 },
521 { 0x9, 4 },{ 0x54, 8 },{ 0x398, 10 },{ 0x48b, 13 },
522 { 0x139d, 15 },{ 0xd, 4 },{ 0xad, 9 },{ 0x826, 12 },
523 { 0x2d4c, 14 },{ 0x11, 5 },{ 0x16b, 9 },{ 0xb7f, 12 },
524 { 0x51a4, 15 },{ 0x19, 5 },{ 0x21b, 10 },{ 0x16fd, 13 },
525 { 0x1d, 5 },{ 0x394, 10 },{ 0x28d3, 14 },{ 0x2b, 6 },
526 { 0x5bc, 11 },{ 0x5a9a, 15 },{ 0x2f, 6 },{ 0x247, 12 },
527 { 0x10, 7 },{ 0xa35, 12 },{ 0x3e, 6 },{ 0xb7a, 12 },
528 { 0x59, 7 },{ 0x105e, 13 },{ 0x26, 8 },{ 0x9cf, 14 },
529 { 0x55, 8 },{ 0x1cb5, 13 },{ 0x57, 8 },{ 0xe5b, 12 },
530 { 0xa0, 8 },{ 0x1468, 13 },{ 0x170, 9 },{ 0x90, 10 },
531 { 0x1ce, 9 },{ 0x21a, 10 },{ 0x218, 10 },{ 0x168, 9 },
532 { 0x21e, 10 },{ 0x244, 12 },{ 0x736, 11 },{ 0x138, 11 },
533 { 0x519, 11 },{ 0xe5e, 12 },{ 0x72c, 11 },{ 0xb55, 12 },
534 { 0x9dc, 14 },{ 0x20bb, 14 },{ 0x48c, 13 },{ 0x1723, 13 },
535 { 0x2e44, 14 },{ 0x16a5, 13 },{ 0x518, 11 },{ 0x39fe, 14 },
539 static const int8_t table4_level[168] = {
540 1, 2, 3, 4, 5, 6, 7, 8,
541 9, 10, 11, 12, 13, 14, 15, 16,
542 17, 18, 19, 20, 21, 22, 23, 1,
543 2, 3, 4, 5, 6, 7, 8, 9,
544 10, 11, 1, 2, 3, 4, 5, 6,
545 7, 8, 1, 2, 3, 4, 5, 6,
546 7, 1, 2, 3, 4, 5, 1, 2,
547 3, 4, 5, 1, 2, 3, 4, 1,
548 2, 3, 4, 1, 2, 3, 1, 2,
549 3, 1, 2, 3, 1, 2, 3, 1,
550 2, 1, 2, 1, 2, 1, 2, 1,
551 2, 1, 1, 1, 1, 1, 1, 1,
552 1, 1, 1, 1, 2, 3, 4, 5,
553 6, 7, 8, 9, 1, 2, 3, 4,
554 5, 1, 2, 3, 4, 1, 2, 3,
555 4, 1, 2, 3, 1, 2, 3, 1,
556 2, 3, 1, 2, 1, 2, 1, 2,
557 1, 2, 1, 2, 1, 2, 1, 2,
558 1, 2, 1, 1, 1, 1, 1, 1,
559 1, 1, 1, 1, 1, 1, 1, 1,
560 1, 1, 1, 1, 1, 1, 1, 1,
563 static const int8_t table4_run[168] = {
564 0, 0, 0, 0, 0, 0, 0, 0,
565 0, 0, 0, 0, 0, 0, 0, 0,
566 0, 0, 0, 0, 0, 0, 0, 1,
567 1, 1, 1, 1, 1, 1, 1, 1,
568 1, 1, 2, 2, 2, 2, 2, 2,
569 2, 2, 3, 3, 3, 3, 3, 3,
570 3, 4, 4, 4, 4, 4, 5, 5,
571 5, 5, 5, 6, 6, 6, 6, 7,
572 7, 7, 7, 8, 8, 8, 9, 9,
573 9, 10, 10, 10, 11, 11, 11, 12,
574 12, 13, 13, 14, 14, 15, 15, 16,
575 16, 17, 18, 19, 20, 21, 22, 23,
576 24, 25, 26, 0, 0, 0, 0, 0,
577 0, 0, 0, 0, 1, 1, 1, 1,
578 1, 2, 2, 2, 2, 3, 3, 3,
579 3, 4, 4, 4, 5, 5, 5, 6,
580 6, 6, 7, 7, 8, 8, 9, 9,
581 10, 10, 11, 11, 12, 12, 13, 13,
582 14, 14, 15, 16, 17, 18, 19, 20,
583 21, 22, 23, 24, 25, 26, 27, 28,
584 29, 30, 31, 32, 33, 34, 35, 36,
587 extern const uint16_t inter_vlc[103][2];
588 extern const int8_t inter_level[102];
589 extern const int8_t inter_run[102];
591 extern const uint16_t intra_vlc[103][2];
592 extern const int8_t intra_level[102];
593 extern const int8_t intra_run[102];
595 extern const uint8_t DCtab_lum[13][2];
596 extern const uint8_t DCtab_chrom[13][2];
598 extern const uint8_t cbpy_tab[16][2];
599 extern const uint8_t mvtab[33][2];
601 extern const uint8_t intra_MCBPC_code[9];
602 extern const uint8_t intra_MCBPC_bits[9];
604 extern const uint8_t inter_MCBPC_code[28];
605 extern const uint8_t inter_MCBPC_bits[28];
607 #define NB_RL_TABLES 6
609 static RLTable rl_table[NB_RL_TABLES] = {
610 /* intra luminance tables */
632 /* intra chrominance / non intra tables */
656 /* motion vector table 0 */
658 static const uint16_t table0_mv_code[1100] = {
659 0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001,
660 0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f,
661 0x0014, 0x0020, 0x0022, 0x0025, 0x0027, 0x0029, 0x002d, 0x004b,
662 0x004d, 0x0003, 0x0022, 0x0023, 0x0025, 0x0027, 0x0042, 0x0048,
663 0x0049, 0x0050, 0x005c, 0x0091, 0x009f, 0x000e, 0x0043, 0x004c,
664 0x0054, 0x0056, 0x008c, 0x0098, 0x009a, 0x009b, 0x00b1, 0x00b2,
665 0x0120, 0x0121, 0x0126, 0x0133, 0x0139, 0x01a1, 0x01a4, 0x01a5,
666 0x01a6, 0x01a7, 0x01ae, 0x01af, 0x000b, 0x0019, 0x0085, 0x0090,
667 0x009b, 0x00aa, 0x00af, 0x010c, 0x010e, 0x011c, 0x011e, 0x0133,
668 0x0144, 0x0160, 0x0174, 0x0175, 0x0177, 0x0178, 0x0249, 0x024b,
669 0x0252, 0x0261, 0x0265, 0x0270, 0x0352, 0x0353, 0x0355, 0x0359,
670 0x0010, 0x0011, 0x0013, 0x0034, 0x0035, 0x0036, 0x0037, 0x003d,
671 0x003e, 0x0109, 0x0126, 0x0156, 0x021a, 0x021e, 0x023a, 0x023e,
672 0x028e, 0x028f, 0x02cf, 0x0491, 0x0494, 0x049f, 0x04a0, 0x04a3,
673 0x04a6, 0x04a7, 0x04ad, 0x04ae, 0x04c0, 0x04c4, 0x04c6, 0x04c8,
674 0x04c9, 0x04f5, 0x04f6, 0x04f7, 0x0680, 0x0682, 0x0683, 0x0688,
675 0x0689, 0x068d, 0x068e, 0x068f, 0x06a2, 0x06a3, 0x06a9, 0x06b0,
676 0x06b1, 0x06b4, 0x06b5, 0x0024, 0x0060, 0x0063, 0x0078, 0x0079,
677 0x0211, 0x0244, 0x0245, 0x0247, 0x0248, 0x0249, 0x024a, 0x024b,
678 0x026b, 0x02af, 0x02b8, 0x02bb, 0x0436, 0x0476, 0x0477, 0x047e,
679 0x04c8, 0x04c9, 0x04ca, 0x0514, 0x0586, 0x0587, 0x0598, 0x059d,
680 0x05d9, 0x05da, 0x0920, 0x0921, 0x093b, 0x093c, 0x093d, 0x0942,
681 0x0943, 0x0944, 0x0945, 0x0959, 0x095e, 0x095f, 0x0982, 0x0983,
682 0x098e, 0x098f, 0x09c4, 0x09e7, 0x09e8, 0x09e9, 0x0d02, 0x0d17,
683 0x0d18, 0x0d19, 0x0d41, 0x0d42, 0x0d43, 0x0d50, 0x0d5f, 0x0d6d,
684 0x0d6e, 0x0d6f, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
685 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x041e, 0x041f, 0x0420, 0x0421,
686 0x048c, 0x048d, 0x04d3, 0x04d4, 0x04d5, 0x055c, 0x055d, 0x0572,
687 0x0573, 0x0574, 0x0575, 0x08de, 0x08df, 0x08fe, 0x08ff, 0x0996,
688 0x0a36, 0x0a37, 0x0b08, 0x0b09, 0x0b0a, 0x0b0b, 0x0b32, 0x0b33,
689 0x0b34, 0x0b35, 0x0b36, 0x0b37, 0x0b38, 0x0b39, 0x0bb0, 0x0bf7,
690 0x0bf8, 0x0bf9, 0x0bfa, 0x0bfb, 0x0bfc, 0x0bfd, 0x0bfe, 0x0bff,
691 0x1254, 0x1255, 0x1256, 0x1257, 0x1270, 0x1271, 0x1272, 0x1273,
692 0x1274, 0x1275, 0x12ab, 0x12ac, 0x12ad, 0x12ae, 0x12af, 0x12b0,
693 0x12b1, 0x1315, 0x1316, 0x1317, 0x13bf, 0x13c0, 0x13c1, 0x13c2,
694 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca,
695 0x13cb, 0x13cc, 0x13cd, 0x1a06, 0x1a07, 0x1a28, 0x1a29, 0x1a2a,
696 0x1a2b, 0x1a2c, 0x1a2d, 0x1a80, 0x1abb, 0x1abc, 0x1abd, 0x1ad8,
697 0x1ad9, 0x0094, 0x0095, 0x0096, 0x0097, 0x00a0, 0x00a1, 0x00a2,
698 0x00a3, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, 0x0837,
699 0x0838, 0x0839, 0x083a, 0x083b, 0x0939, 0x093a, 0x093b, 0x093c,
700 0x093d, 0x093e, 0x093f, 0x09a0, 0x09a1, 0x09a2, 0x09a3, 0x09a4,
701 0x09a5, 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2,
702 0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba,
703 0x11bb, 0x132f, 0x1454, 0x1455, 0x1456, 0x1457, 0x1458, 0x1459,
704 0x145a, 0x145b, 0x145c, 0x145d, 0x145e, 0x145f, 0x1460, 0x1461,
705 0x1462, 0x1463, 0x1464, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469,
706 0x146a, 0x146b, 0x17de, 0x17df, 0x17e0, 0x17e1, 0x17e2, 0x17e3,
707 0x17e4, 0x17e5, 0x17e6, 0x17e7, 0x17e8, 0x17e9, 0x17ea, 0x17eb,
708 0x17ec, 0x17ed, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545,
709 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d,
710 0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555,
711 0x2628, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
712 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2772, 0x2773, 0x2774,
713 0x2775, 0x2776, 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c,
714 0x277d, 0x3503, 0x3544, 0x3545, 0x3546, 0x3547, 0x3560, 0x3561,
715 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568, 0x3569,
716 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570, 0x3571,
717 0x3572, 0x3573, 0x3574, 0x3575, 0x03f0, 0x103d, 0x103e, 0x103f,
718 0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047,
719 0x1048, 0x1049, 0x104a, 0x104b, 0x104c, 0x104d, 0x104e, 0x104f,
720 0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057,
721 0x1058, 0x1059, 0x105a, 0x105b, 0x105c, 0x105d, 0x105e, 0x105f,
722 0x1060, 0x1061, 0x1270, 0x1271, 0x21b8, 0x21b9, 0x21ba, 0x21bb,
723 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x21f0, 0x21f1, 0x21f2, 0x21f3,
724 0x21f4, 0x21f5, 0x21f6, 0x21f7, 0x21f8, 0x21f9, 0x21fa, 0x21fb,
725 0x21fc, 0x21fd, 0x21fe, 0x21ff, 0x2340, 0x2341, 0x2342, 0x2343,
726 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b,
727 0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353,
728 0x2354, 0x2355, 0x2356, 0x2357, 0x265c, 0x2f88, 0x2f89, 0x2f8a,
729 0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f, 0x2f90, 0x2f91, 0x2f92,
730 0x2f93, 0x2f94, 0x2f95, 0x2f96, 0x2f97, 0x2f98, 0x2f99, 0x2f9a,
731 0x2f9b, 0x2f9c, 0x2f9d, 0x2f9e, 0x2f9f, 0x2fa0, 0x2fa1, 0x2fa2,
732 0x2fa3, 0x2fa4, 0x2fa5, 0x2fa6, 0x2fa7, 0x2fa8, 0x2fa9, 0x2faa,
733 0x2fab, 0x2fac, 0x2fad, 0x2fae, 0x2faf, 0x2fb0, 0x2fb1, 0x2fb2,
734 0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7, 0x2fb8, 0x2fb9, 0x2fba,
735 0x2fbb, 0x4c52, 0x4c53, 0x4e28, 0x4e29, 0x4e2a, 0x4e2b, 0x4e2c,
736 0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34,
737 0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c,
738 0x4e3d, 0x4e3e, 0x4e3f, 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84,
739 0x4e85, 0x4e86, 0x4e87, 0x4e88, 0x4e89, 0x4e8a, 0x4e8b, 0x4e8c,
740 0x4e8d, 0x4e8e, 0x4e8f, 0x4e90, 0x4e91, 0x4e92, 0x4e93, 0x4e94,
741 0x4e95, 0x4e96, 0x4e97, 0x4e98, 0x4e99, 0x4e9a, 0x4e9b, 0x4e9c,
742 0x4e9d, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea1, 0x4ea2, 0x4ea3, 0x4ea4,
743 0x4ea5, 0x4ea6, 0x4ea7, 0x4ea8, 0x4ea9, 0x4eaa, 0x4eab, 0x4eac,
744 0x4ead, 0x4eae, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb2, 0x4eb3, 0x4eb4,
745 0x4eb5, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9, 0x4eba, 0x4ebb, 0x4ebc,
746 0x4ebd, 0x4ebe, 0x4ebf, 0x4ec0, 0x4ec1, 0x4ec2, 0x4ec3, 0x4ec4,
747 0x4ec5, 0x4ec6, 0x4ec7, 0x4ec8, 0x4ec9, 0x4eca, 0x4ecb, 0x6a04,
748 0x6a05, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, 0x07e8,
749 0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, 0x07f0,
750 0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, 0x07f8,
751 0x07f9, 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x07fe, 0x07ff, 0x2000,
752 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
753 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, 0x2010,
754 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, 0x2018,
755 0x2019, 0x201a, 0x201b, 0x201c, 0x201d, 0x201e, 0x201f, 0x2020,
756 0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, 0x2028,
757 0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f, 0x2030,
758 0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, 0x2038,
759 0x2039, 0x203a, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f, 0x2040,
760 0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046, 0x2047, 0x2048,
761 0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f, 0x2050,
762 0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057, 0x2058,
763 0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f, 0x2060,
764 0x2061, 0x2062, 0x2063, 0x2064, 0x2065, 0x2066, 0x2067, 0x2068,
765 0x2069, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, 0x2070,
766 0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078,
767 0x2079, 0x4cba, 0x4cbb, 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c,
768 0x5d8d, 0x5d8e, 0x5d8f, 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4,
769 0x5db5, 0x5db6, 0x5db7, 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc,
770 0x5dbd, 0x5dbe, 0x5dbf, 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44,
771 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4c,
772 0x5e4d, 0x5e4e, 0x5e4f, 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54,
773 0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c,
774 0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64,
775 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c,
776 0x5e6d, 0x5e6e, 0x5e6f, 0x5e70, 0x5e71, 0x5e72, 0x5e73, 0x5e74,
777 0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c,
778 0x5e7d, 0x5e7e, 0x5e7f, 0x5e80, 0x5e81, 0x5e82, 0x5e83, 0x5e84,
779 0x5e85, 0x5e86, 0x5e87, 0x5e88, 0x5e89, 0x5e8a, 0x5e8b, 0x5e8c,
780 0x5e8d, 0x5e8e, 0x5e8f, 0x5e90, 0x5e91, 0x5e92, 0x5e93, 0x5e94,
781 0x5e95, 0x5e96, 0x5e97, 0x5e98, 0x5e99, 0x5e9a, 0x5e9b, 0x5e9c,
782 0x5e9d, 0x5e9e, 0x5e9f, 0x5ea0, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4,
783 0x5ea5, 0x5ea6, 0x5ea7, 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac,
784 0x5ead, 0x5eae, 0x5eaf, 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb3, 0x5eb4,
785 0x5eb5, 0x5eb6, 0x5eb7, 0x5eb8, 0x5eb9, 0x5eba, 0x5ebb, 0x5ebc,
786 0x5ebd, 0x5ebe, 0x5ebf, 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4,
787 0x5ec5, 0x5ec6, 0x5ec7, 0x5ec8, 0x5ec9, 0x5eca, 0x5ecb, 0x5ecc,
788 0x5ecd, 0x5ece, 0x5ecf, 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4,
789 0x5ed5, 0x5ed6, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edb, 0x5edc,
790 0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
791 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee8, 0x5ee9, 0x5eea, 0x5eeb, 0x5eec,
792 0x5eed, 0x5eee, 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef4,
793 0x5ef5, 0x5ef6, 0x5ef7, 0x5ef8, 0x5ef9, 0x5efa, 0x5efb, 0x5efc,
794 0x5efd, 0x5efe, 0x5eff, 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04,
795 0x5f05, 0x5f06, 0x5f07, 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c,
796 0x5f0d, 0x5f0e, 0x5f0f, 0x0000,
799 static const uint8_t table0_mv_bits[1100] = {
800 1, 4, 4, 4, 5, 5, 5, 6,
801 6, 6, 7, 7, 7, 8, 8, 8,
802 8, 8, 8, 8, 8, 8, 8, 8,
803 8, 9, 9, 9, 9, 9, 9, 9,
804 9, 9, 9, 9, 9, 10, 10, 10,
805 10, 10, 10, 10, 10, 10, 10, 10,
806 10, 10, 10, 10, 10, 10, 10, 10,
807 10, 10, 10, 10, 11, 11, 11, 11,
808 11, 11, 11, 11, 11, 11, 11, 11,
809 11, 11, 11, 11, 11, 11, 11, 11,
810 11, 11, 11, 11, 11, 11, 11, 11,
811 12, 12, 12, 12, 12, 12, 12, 12,
812 12, 12, 12, 12, 12, 12, 12, 12,
813 12, 12, 12, 12, 12, 12, 12, 12,
814 12, 12, 12, 12, 12, 12, 12, 12,
815 12, 12, 12, 12, 12, 12, 12, 12,
816 12, 12, 12, 12, 12, 12, 12, 12,
817 12, 12, 12, 13, 13, 13, 13, 13,
818 13, 13, 13, 13, 13, 13, 13, 13,
819 13, 13, 13, 13, 13, 13, 13, 13,
820 13, 13, 13, 13, 13, 13, 13, 13,
821 13, 13, 13, 13, 13, 13, 13, 13,
822 13, 13, 13, 13, 13, 13, 13, 13,
823 13, 13, 13, 13, 13, 13, 13, 13,
824 13, 13, 13, 13, 13, 13, 13, 13,
825 13, 13, 14, 14, 14, 14, 14, 14,
826 14, 14, 14, 14, 14, 14, 14, 14,
827 14, 14, 14, 14, 14, 14, 14, 14,
828 14, 14, 14, 14, 14, 14, 14, 14,
829 14, 14, 14, 14, 14, 14, 14, 14,
830 14, 14, 14, 14, 14, 14, 14, 14,
831 14, 14, 14, 14, 14, 14, 14, 14,
832 14, 14, 14, 14, 14, 14, 14, 14,
833 14, 14, 14, 14, 14, 14, 14, 14,
834 14, 14, 14, 14, 14, 14, 14, 14,
835 14, 14, 14, 14, 14, 14, 14, 14,
836 14, 14, 14, 14, 14, 14, 14, 14,
837 14, 14, 14, 14, 14, 14, 14, 14,
838 14, 15, 15, 15, 15, 15, 15, 15,
839 15, 15, 15, 15, 15, 15, 15, 15,
840 15, 15, 15, 15, 15, 15, 15, 15,
841 15, 15, 15, 15, 15, 15, 15, 15,
842 15, 15, 15, 15, 15, 15, 15, 15,
843 15, 15, 15, 15, 15, 15, 15, 15,
844 15, 15, 15, 15, 15, 15, 15, 15,
845 15, 15, 15, 15, 15, 15, 15, 15,
846 15, 15, 15, 15, 15, 15, 15, 15,
847 15, 15, 15, 15, 15, 15, 15, 15,
848 15, 15, 15, 15, 15, 15, 15, 15,
849 15, 15, 15, 15, 15, 15, 15, 15,
850 15, 15, 15, 15, 15, 15, 15, 15,
851 15, 15, 15, 15, 15, 15, 15, 15,
852 15, 15, 15, 15, 15, 15, 15, 15,
853 15, 15, 15, 15, 15, 15, 15, 15,
854 15, 15, 15, 15, 15, 15, 15, 15,
855 15, 15, 15, 15, 15, 15, 15, 15,
856 15, 15, 15, 15, 15, 15, 15, 15,
857 15, 15, 15, 15, 15, 15, 15, 15,
858 15, 15, 15, 15, 16, 16, 16, 16,
859 16, 16, 16, 16, 16, 16, 16, 16,
860 16, 16, 16, 16, 16, 16, 16, 16,
861 16, 16, 16, 16, 16, 16, 16, 16,
862 16, 16, 16, 16, 16, 16, 16, 16,
863 16, 16, 16, 16, 16, 16, 16, 16,
864 16, 16, 16, 16, 16, 16, 16, 16,
865 16, 16, 16, 16, 16, 16, 16, 16,
866 16, 16, 16, 16, 16, 16, 16, 16,
867 16, 16, 16, 16, 16, 16, 16, 16,
868 16, 16, 16, 16, 16, 16, 16, 16,
869 16, 16, 16, 16, 16, 16, 16, 16,
870 16, 16, 16, 16, 16, 16, 16, 16,
871 16, 16, 16, 16, 16, 16, 16, 16,
872 16, 16, 16, 16, 16, 16, 16, 16,
873 16, 16, 16, 16, 16, 16, 16, 16,
874 16, 16, 16, 16, 16, 16, 16, 16,
875 16, 16, 16, 16, 16, 16, 16, 16,
876 16, 16, 16, 16, 16, 16, 16, 16,
877 16, 16, 16, 16, 16, 16, 16, 16,
878 16, 16, 16, 16, 16, 16, 16, 16,
879 16, 16, 16, 16, 16, 16, 16, 16,
880 16, 16, 16, 16, 16, 16, 16, 16,
881 16, 16, 16, 16, 16, 16, 16, 16,
882 16, 16, 16, 16, 16, 16, 16, 16,
883 16, 16, 16, 16, 16, 16, 16, 16,
884 16, 16, 16, 16, 16, 16, 16, 16,
885 16, 16, 16, 16, 16, 16, 16, 16,
886 16, 16, 16, 16, 16, 16, 16, 16,
887 16, 16, 16, 16, 16, 16, 16, 16,
888 16, 16, 16, 16, 16, 16, 16, 16,
889 16, 17, 17, 17, 17, 17, 17, 17,
890 17, 17, 17, 17, 17, 17, 17, 17,
891 17, 17, 17, 17, 17, 17, 17, 17,
892 17, 17, 17, 17, 17, 17, 17, 17,
893 17, 17, 17, 17, 17, 17, 17, 17,
894 17, 17, 17, 17, 17, 17, 17, 17,
895 17, 17, 17, 17, 17, 17, 17, 17,
896 17, 17, 17, 17, 17, 17, 17, 17,
897 17, 17, 17, 17, 17, 17, 17, 17,
898 17, 17, 17, 17, 17, 17, 17, 17,
899 17, 17, 17, 17, 17, 17, 17, 17,
900 17, 17, 17, 17, 17, 17, 17, 17,
901 17, 17, 17, 17, 17, 17, 17, 17,
902 17, 17, 17, 17, 17, 17, 17, 17,
903 17, 17, 17, 17, 17, 17, 17, 17,
904 17, 17, 17, 17, 17, 17, 17, 17,
905 17, 17, 17, 17, 17, 17, 17, 17,
906 17, 17, 17, 17, 17, 17, 17, 17,
907 17, 17, 17, 17, 17, 17, 17, 17,
908 17, 17, 17, 17, 17, 17, 17, 17,
909 17, 17, 17, 17, 17, 17, 17, 17,
910 17, 17, 17, 17, 17, 17, 17, 17,
911 17, 17, 17, 17, 17, 17, 17, 17,
912 17, 17, 17, 17, 17, 17, 17, 17,
913 17, 17, 17, 17, 17, 17, 17, 17,
914 17, 17, 17, 17, 17, 17, 17, 17,
915 17, 17, 17, 17, 17, 17, 17, 17,
916 17, 17, 17, 17, 17, 17, 17, 17,
917 17, 17, 17, 17, 17, 17, 17, 17,
918 17, 17, 17, 17, 17, 17, 17, 17,
919 17, 17, 17, 17, 17, 17, 17, 17,
920 17, 17, 17, 17, 17, 17, 17, 17,
921 17, 17, 17, 17, 17, 17, 17, 17,
922 17, 17, 17, 17, 17, 17, 17, 17,
923 17, 17, 17, 17, 17, 17, 17, 17,
924 17, 17, 17, 17, 17, 17, 17, 17,
925 17, 17, 17, 17, 17, 17, 17, 17,
926 17, 17, 17, 17, 17, 17, 17, 17,
927 17, 17, 17, 17, 17, 17, 17, 17,
928 17, 17, 17, 17, 17, 17, 17, 17,
929 17, 17, 17, 17, 17, 17, 17, 17,
930 17, 17, 17, 17, 17, 17, 17, 17,
931 17, 17, 17, 17, 17, 17, 17, 17,
932 17, 17, 17, 17, 17, 17, 17, 17,
933 17, 17, 17, 17, 17, 17, 17, 17,
934 17, 17, 17, 17, 17, 17, 17, 17,
935 17, 17, 17, 17, 17, 17, 17, 17,
936 17, 17, 17, 17, 17, 17, 17, 17,
940 static const uint8_t table0_mvx[1099] = {
941 32, 32, 31, 32, 33, 31, 33, 31,
942 33, 32, 34, 32, 30, 32, 31, 34,
943 35, 32, 34, 33, 29, 33, 30, 30,
944 31, 31, 35, 29, 33, 35, 33, 34,
945 31, 29, 30, 34, 30, 36, 28, 32,
946 34, 37, 30, 27, 32, 25, 39, 32,
947 34, 32, 35, 35, 35, 31, 35, 29,
948 32, 29, 30, 29, 37, 27, 36, 38,
949 37, 33, 32, 31, 29, 31, 28, 36,
950 33, 30, 34, 33, 33, 28, 27, 25,
951 31, 26, 39, 32, 32, 31, 33, 39,
952 31, 38, 28, 36, 21, 23, 43, 36,
953 34, 41, 30, 25, 28, 31, 30, 34,
954 38, 35, 61, 34, 28, 30, 37, 37,
955 35, 27, 36, 3, 59, 38, 37, 32,
956 31, 29, 26, 33, 37, 33, 27, 27,
957 35, 34, 34, 40, 42, 33, 32, 29,
958 4, 5, 28, 24, 25, 35, 39, 38,
959 32, 23, 27, 32, 30, 35, 26, 34,
960 60, 36, 29, 22, 26, 41, 7, 30,
961 38, 30, 36, 29, 30, 41, 26, 25,
962 32, 34, 24, 39, 1, 25, 39, 32,
963 28, 29, 32, 38, 26, 36, 28, 63,
964 28, 39, 23, 21, 26, 35, 31, 35,
965 57, 31, 29, 29, 28, 30, 27, 35,
966 2, 38, 40, 34, 37, 29, 38, 43,
967 26, 32, 33, 42, 24, 40, 28, 32,
968 32, 32, 36, 32, 43, 25, 21, 31,
969 30, 31, 41, 29, 33, 37, 26, 37,
970 27, 59, 23, 33, 35, 31, 31, 37,
971 38, 39, 32, 23, 32, 27, 37, 36,
972 31, 40, 25, 27, 38, 31, 36, 28,
973 31, 36, 25, 45, 3, 34, 38, 39,
974 40, 38, 30, 32, 19, 24, 25, 26,
975 45, 20, 24, 33, 33, 31, 41, 34,
976 39, 47, 40, 58, 59, 41, 33, 3,
977 17, 61, 42, 30, 26, 29, 36, 61,
978 33, 37, 62, 28, 25, 38, 25, 38,
979 17, 23, 34, 33, 21, 33, 49, 27,
980 32, 23, 27, 22, 24, 22, 39, 43,
981 27, 37, 6, 42, 47, 26, 30, 31,
982 41, 39, 33, 22, 45, 36, 32, 45,
983 19, 22, 30, 5, 5, 17, 29, 22,
984 31, 31, 43, 37, 27, 32, 32, 32,
985 33, 34, 43, 35, 29, 26, 22, 32,
986 19, 32, 25, 31, 41, 49, 28, 34,
987 28, 39, 34, 19, 37, 38, 29, 21,
988 36, 42, 24, 48, 16, 28, 49, 22,
989 34, 31, 38, 39, 44, 11, 35, 30,
990 33, 33, 23, 28, 33, 46, 15, 13,
991 24, 41, 24, 34, 34, 30, 26, 24,
992 14, 60, 21, 29, 39, 23, 35, 37,
993 63, 45, 33, 34, 47, 41, 22, 42,
994 35, 35, 23, 32, 35, 43, 32, 7,
995 31, 41, 20, 31, 16, 13, 63, 25,
996 30, 32, 35, 30, 30, 31, 42, 47,
997 39, 38, 40, 40, 51, 55, 56, 18,
998 21, 39, 39, 33, 17, 41, 23, 24,
999 43, 25, 31, 20, 19, 45, 1, 34,
1000 31, 22, 35, 15, 46, 46, 35, 31,
1001 28, 29, 29, 23, 41, 27, 14, 53,
1002 53, 27, 24, 32, 57, 32, 17, 42,
1003 37, 29, 33, 1, 25, 32, 32, 63,
1004 26, 40, 44, 36, 31, 39, 20, 20,
1005 44, 23, 33, 34, 35, 33, 33, 28,
1006 41, 23, 41, 41, 29, 25, 26, 49,
1007 29, 24, 37, 49, 50, 51, 51, 26,
1008 39, 25, 26, 15, 39, 18, 42, 17,
1009 4, 31, 32, 32, 60, 1, 42, 32,
1010 0, 12, 19, 35, 21, 41, 17, 26,
1011 20, 45, 46, 32, 37, 22, 47, 29,
1012 31, 27, 29, 30, 21, 33, 35, 18,
1013 25, 33, 50, 51, 42, 2, 15, 51,
1014 53, 33, 25, 29, 55, 37, 38, 33,
1015 38, 59, 38, 33, 39, 13, 32, 40,
1016 61, 61, 32, 9, 44, 3, 31, 29,
1017 25, 31, 27, 23, 9, 25, 9, 29,
1018 20, 30, 30, 42, 18, 28, 25, 28,
1019 28, 21, 29, 43, 29, 43, 26, 44,
1020 44, 21, 38, 21, 24, 45, 45, 35,
1021 39, 22, 35, 36, 34, 34, 45, 34,
1022 29, 31, 46, 25, 46, 16, 17, 31,
1023 20, 32, 47, 47, 47, 32, 49, 49,
1024 49, 31, 1, 27, 28, 39, 39, 21,
1025 36, 23, 51, 2, 40, 51, 32, 53,
1026 24, 30, 24, 30, 21, 40, 57, 57,
1027 31, 41, 58, 32, 12, 4, 32, 34,
1028 59, 31, 32, 13, 9, 35, 26, 35,
1029 37, 61, 37, 63, 26, 29, 41, 38,
1030 23, 20, 41, 26, 41, 42, 42, 42,
1031 26, 26, 26, 26, 1, 26, 37, 37,
1032 37, 23, 34, 42, 27, 43, 34, 27,
1033 31, 24, 33, 16, 3, 31, 24, 33,
1034 24, 4, 44, 44, 11, 44, 31, 13,
1035 13, 44, 45, 13, 25, 22, 38, 26,
1036 38, 38, 39, 32, 30, 39, 30, 22,
1037 32, 26, 30, 47, 47, 47, 19, 47,
1038 30, 31, 35, 8, 23, 47, 47, 27,
1039 35, 47, 31, 48, 35, 19, 36, 49,
1040 49, 33, 31, 39, 27, 39, 49, 49,
1041 50, 50, 50, 39, 31, 51, 51, 39,
1042 28, 33, 33, 21, 40, 31, 52, 53,
1043 40, 53, 9, 33, 31, 53, 54, 54,
1044 54, 55, 55, 34, 15, 56, 25, 56,
1045 21, 21, 40, 40, 25, 40, 58, 36,
1046 5, 41, 41, 12, 60, 41, 41, 37,
1047 22, 61, 18, 29, 29, 30, 61, 30,
1048 61, 62, 62, 30, 30, 63, 18, 13,
1049 30, 23, 19, 20, 20, 41, 13, 2,
1050 5, 5, 1, 5, 32, 6, 32, 35,
1051 20, 35, 27, 35, 35, 36, 36, 13,
1052 36, 41, 41, 41, 3, 30, 42, 27,
1053 20, 30, 27, 28, 30, 21, 33, 33,
1054 14, 24, 30, 42, 24, 33, 25, 42,
1055 43, 14, 43, 43, 14, 43, 7, 36,
1056 37, 37, 37, 37, 7, 14, 25, 43,
1057 43, 44, 15, 37, 7, 7, 3, 1,
1058 8, 15, 15, 8, 44, 44, 44, 45,
1059 45, 45, 45, 8, 8, 45, 21, 45,
1060 28, 28, 28, 21, 28, 28, 22, 37,
1061 46, 46, 37, 8, 29, 37, 29, 22,
1062 46, 37, 22, 29, 47, 47, 38, 38,
1063 16, 38, 38, 33, 38, 22, 47, 47,
1064 29, 25, 16, 0, 48, 1, 34, 48,
1065 48, 34, 25, 26, 26, 49, 49, 26,
1066 1, 49, 4, 26, 4, 49, 1, 9,
1067 49, 49, 49, 10, 49, 17, 38, 17,
1068 17, 50, 38, 50, 50, 22, 38, 51,
1069 38, 38, 51, 39, 39, 18, 22, 39,
1070 51, 22, 52, 52, 52, 39, 53, 53,
1071 10, 23, 18, 29, 10, 53, 29, 54,
1072 11, 54, 11, 11, 55, 1, 18, 55,
1073 55, 55, 55, 55, 55, 29, 34, 18,
1074 29, 56, 56, 34, 57, 34, 34, 29,
1075 29, 57, 57, 35, 35, 35, 35, 35,
1076 39, 35, 59, 59, 18, 59, 39, 30,
1077 18, 40, 60, 60, 61, 30, 18, 61,
1081 static const uint8_t table0_mvy[1099] = {
1082 32, 31, 32, 33, 32, 31, 31, 33,
1083 33, 34, 32, 30, 32, 35, 34, 31,
1084 32, 29, 33, 30, 32, 34, 33, 31,
1085 30, 35, 31, 31, 29, 33, 35, 30,
1086 29, 33, 34, 34, 30, 32, 32, 36,
1087 29, 32, 35, 32, 28, 32, 32, 27,
1088 35, 37, 34, 29, 30, 36, 35, 34,
1089 25, 30, 29, 35, 33, 31, 31, 32,
1090 31, 28, 39, 28, 29, 37, 31, 33,
1091 27, 36, 28, 36, 37, 33, 33, 31,
1092 27, 32, 31, 38, 26, 25, 25, 33,
1093 39, 31, 34, 30, 32, 32, 32, 34,
1094 36, 32, 28, 33, 30, 38, 37, 27,
1095 33, 28, 32, 37, 35, 38, 29, 34,
1096 27, 29, 29, 32, 32, 34, 35, 3,
1097 26, 36, 31, 38, 30, 26, 35, 34,
1098 37, 26, 25, 32, 32, 39, 23, 37,
1099 32, 32, 29, 32, 29, 36, 29, 30,
1100 41, 31, 30, 21, 39, 25, 34, 38,
1101 32, 35, 39, 32, 33, 33, 32, 27,
1102 29, 25, 28, 27, 26, 31, 30, 35,
1103 24, 24, 31, 34, 32, 30, 35, 40,
1104 28, 38, 5, 35, 29, 36, 36, 32,
1105 38, 30, 33, 31, 35, 26, 23, 38,
1106 32, 41, 28, 25, 37, 40, 37, 39,
1107 32, 36, 33, 39, 25, 26, 28, 31,
1108 28, 42, 23, 31, 33, 31, 39, 1,
1109 59, 22, 27, 4, 33, 34, 33, 24,
1110 41, 3, 35, 41, 41, 28, 36, 36,
1111 28, 33, 35, 21, 23, 21, 22, 37,
1112 27, 27, 43, 29, 60, 39, 27, 25,
1113 59, 34, 27, 27, 26, 40, 37, 27,
1114 61, 26, 39, 33, 31, 22, 37, 25,
1115 30, 25, 24, 61, 31, 34, 25, 38,
1116 32, 32, 30, 3, 61, 43, 29, 23,
1117 28, 32, 28, 32, 31, 34, 5, 33,
1118 32, 33, 33, 42, 37, 23, 38, 31,
1119 40, 26, 32, 26, 37, 38, 36, 24,
1120 29, 30, 20, 22, 29, 24, 32, 41,
1121 2, 34, 25, 33, 29, 31, 39, 35,
1122 36, 24, 32, 30, 33, 27, 44, 60,
1123 30, 36, 19, 34, 31, 24, 16, 35,
1124 32, 38, 21, 33, 31, 31, 21, 35,
1125 5, 17, 29, 38, 38, 18, 58, 19,
1126 43, 41, 30, 41, 43, 39, 29, 7,
1127 29, 17, 28, 19, 28, 31, 25, 19,
1128 40, 26, 21, 33, 39, 23, 40, 30,
1129 39, 34, 35, 32, 32, 24, 33, 30,
1130 40, 47, 39, 37, 32, 33, 24, 23,
1131 45, 47, 27, 23, 42, 32, 32, 33,
1132 36, 37, 37, 17, 18, 22, 40, 38,
1133 32, 31, 35, 24, 17, 25, 17, 23,
1134 33, 34, 51, 42, 31, 36, 36, 29,
1135 21, 22, 37, 44, 43, 25, 47, 33,
1136 45, 27, 31, 58, 31, 32, 31, 38,
1137 43, 20, 47, 45, 54, 1, 26, 34,
1138 38, 14, 22, 24, 33, 34, 32, 32,
1139 37, 21, 23, 49, 35, 23, 28, 39,
1140 39, 23, 55, 33, 30, 30, 63, 16,
1141 42, 28, 13, 33, 33, 35, 19, 46,
1142 43, 17, 19, 36, 39, 24, 31, 32,
1143 33, 26, 28, 62, 33, 63, 33, 39,
1144 19, 49, 17, 31, 43, 13, 15, 29,
1145 25, 35, 33, 23, 49, 41, 28, 29,
1146 34, 38, 7, 61, 11, 50, 13, 41,
1147 19, 47, 25, 26, 15, 42, 41, 29,
1148 45, 27, 17, 35, 32, 29, 32, 24,
1149 13, 26, 26, 31, 24, 33, 28, 30,
1150 31, 11, 45, 46, 33, 33, 35, 57,
1151 32, 32, 35, 45, 34, 11, 37, 42,
1152 39, 37, 31, 49, 21, 27, 29, 47,
1153 53, 40, 51, 16, 26, 1, 40, 30,
1154 41, 44, 34, 25, 27, 31, 35, 35,
1155 31, 15, 49, 1, 35, 40, 5, 58,
1156 21, 29, 22, 59, 45, 31, 9, 26,
1157 9, 29, 11, 32, 30, 3, 13, 20,
1158 18, 20, 11, 3, 29, 40, 31, 53,
1159 30, 17, 20, 37, 31, 42, 47, 47,
1160 54, 38, 9, 34, 13, 37, 21, 25,
1161 27, 43, 42, 45, 40, 25, 27, 46,
1162 22, 25, 53, 20, 2, 14, 39, 15,
1163 22, 44, 34, 21, 38, 33, 27, 48,
1164 34, 52, 35, 47, 49, 54, 2, 13,
1165 23, 52, 29, 45, 22, 49, 54, 21,
1166 40, 42, 31, 30, 29, 34, 0, 25,
1167 23, 51, 24, 59, 28, 38, 29, 31,
1168 2, 13, 31, 8, 31, 33, 12, 45,
1169 41, 7, 14, 30, 25, 18, 43, 20,
1170 43, 35, 44, 1, 49, 42, 42, 18,
1171 41, 38, 41, 44, 53, 11, 20, 25,
1172 45, 46, 47, 48, 39, 52, 46, 49,
1173 63, 55, 44, 38, 13, 13, 57, 22,
1174 51, 16, 12, 28, 35, 57, 25, 20,
1175 26, 28, 28, 29, 32, 31, 62, 34,
1176 35, 35, 19, 49, 48, 39, 40, 18,
1177 43, 46, 11, 6, 48, 19, 49, 41,
1178 10, 23, 58, 17, 21, 23, 34, 30,
1179 60, 0, 44, 34, 26, 37, 46, 43,
1180 49, 59, 4, 34, 59, 37, 22, 25,
1181 28, 46, 6, 40, 59, 42, 36, 61,
1182 28, 30, 31, 43, 10, 22, 23, 47,
1183 20, 52, 55, 36, 25, 16, 1, 11,
1184 27, 29, 5, 63, 18, 41, 31, 34,
1185 38, 1, 5, 13, 28, 31, 17, 38,
1186 39, 41, 36, 37, 22, 39, 33, 43,
1187 43, 15, 17, 49, 30, 21, 22, 20,
1188 10, 17, 25, 54, 57, 3, 34, 8,
1189 36, 25, 31, 14, 15, 19, 29, 25,
1190 18, 39, 53, 22, 27, 20, 29, 33,
1191 41, 42, 35, 62, 50, 29, 53, 50,
1192 35, 55, 42, 61, 63, 4, 7, 42,
1193 21, 46, 47, 49, 27, 46, 17, 55,
1194 41, 50, 63, 4, 56, 18, 8, 10,
1195 18, 51, 63, 36, 55, 18, 5, 55,
1196 9, 29, 17, 21, 30, 27, 1, 59,
1197 7, 11, 12, 15, 5, 42, 24, 41,
1198 43, 7, 27, 22, 25, 31, 30, 37,
1199 22, 39, 53, 29, 36, 37, 48, 0,
1200 5, 13, 17, 31, 32, 26, 46, 28,
1201 44, 45, 46, 53, 49, 51, 3, 41,
1202 3, 22, 42, 33, 5, 45, 7, 22,
1203 40, 53, 24, 14, 25, 27, 10, 12,
1204 34, 16, 17, 53, 20, 26, 39, 45,
1205 18, 45, 35, 33, 31, 49, 4, 39,
1206 42, 11, 51, 5, 13, 26, 27, 17,
1207 52, 30, 0, 22, 12, 34, 62, 36,
1208 38, 41, 47, 30, 63, 38, 41, 43,
1209 59, 33, 45, 37, 38, 40, 47, 24,
1210 48, 49, 30, 1, 10, 22, 49, 15,
1211 39, 59, 31, 32, 33, 18, 13, 15,
1212 31, 21, 27, 44, 42, 39, 46, 17,
1213 26, 32, 30, 31, 0, 30, 34, 9,
1214 12, 13, 25, 31, 32, 55, 43, 35,
1215 61, 33, 35, 46, 25, 47, 48, 62,
1216 63, 38, 61, 1, 2, 5, 7, 9,
1217 46, 10, 34, 35, 36, 55, 51, 7,
1218 40, 23, 34, 37, 5, 13, 42, 18,
1222 /* motion vector table 1 */
1223 static const uint16_t table1_mv_code[1100] = {
1224 0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c,
1225 0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041,
1226 0x004c, 0x004e, 0x005c, 0x0060, 0x0062, 0x0066, 0x0068, 0x0069,
1227 0x006b, 0x00a6, 0x00c1, 0x00cb, 0x00cc, 0x00ce, 0x00da, 0x00e8,
1228 0x00ee, 0x0087, 0x0090, 0x009e, 0x009f, 0x00ba, 0x00ca, 0x00d8,
1229 0x00db, 0x00df, 0x0104, 0x0109, 0x010c, 0x0143, 0x0145, 0x014a,
1230 0x0156, 0x015c, 0x01b3, 0x01d3, 0x01da, 0x0103, 0x0109, 0x010b,
1231 0x0122, 0x0127, 0x0134, 0x0161, 0x0164, 0x0176, 0x0184, 0x018d,
1232 0x018e, 0x018f, 0x0190, 0x0193, 0x0196, 0x019d, 0x019e, 0x019f,
1233 0x01a9, 0x01b2, 0x01b4, 0x01ba, 0x01bb, 0x01bc, 0x0201, 0x0202,
1234 0x0205, 0x0207, 0x020d, 0x0210, 0x0211, 0x0215, 0x021b, 0x021f,
1235 0x0281, 0x0285, 0x0290, 0x029c, 0x029d, 0x02a2, 0x02a7, 0x02a8,
1236 0x02aa, 0x02b0, 0x02b1, 0x02b4, 0x02bc, 0x02bf, 0x0320, 0x0326,
1237 0x0327, 0x0329, 0x032a, 0x0336, 0x0360, 0x0362, 0x0363, 0x0372,
1238 0x03b2, 0x03bc, 0x03bd, 0x0203, 0x0205, 0x021a, 0x0249, 0x024a,
1239 0x024c, 0x02c7, 0x02ca, 0x02ce, 0x02ef, 0x030d, 0x0322, 0x0325,
1240 0x0338, 0x0373, 0x037a, 0x0409, 0x0415, 0x0416, 0x0418, 0x0428,
1241 0x042d, 0x042f, 0x0434, 0x0508, 0x0509, 0x0510, 0x0511, 0x051c,
1242 0x051e, 0x0524, 0x0541, 0x0543, 0x0546, 0x0547, 0x054d, 0x0557,
1243 0x055f, 0x056a, 0x056c, 0x056d, 0x056f, 0x0576, 0x0577, 0x057a,
1244 0x057b, 0x057c, 0x057d, 0x0600, 0x0601, 0x0603, 0x0614, 0x0616,
1245 0x0617, 0x061c, 0x061f, 0x0642, 0x0648, 0x0649, 0x064a, 0x064b,
1246 0x0657, 0x0668, 0x0669, 0x066b, 0x066e, 0x067f, 0x06c2, 0x06c8,
1247 0x06cb, 0x06de, 0x06df, 0x06e2, 0x06e3, 0x06ef, 0x0748, 0x074b,
1248 0x076e, 0x076f, 0x077c, 0x0409, 0x0423, 0x0428, 0x0429, 0x042a,
1249 0x042b, 0x0432, 0x0433, 0x0496, 0x049a, 0x04d5, 0x04db, 0x0581,
1250 0x0582, 0x058b, 0x058c, 0x058d, 0x0598, 0x0599, 0x059a, 0x059e,
1251 0x05dd, 0x0619, 0x0632, 0x0633, 0x0648, 0x0672, 0x06a1, 0x06a2,
1252 0x06a3, 0x06af, 0x06e2, 0x06e3, 0x06e4, 0x0800, 0x0801, 0x0802,
1253 0x0803, 0x081a, 0x081b, 0x0829, 0x082f, 0x0832, 0x083e, 0x083f,
1254 0x0852, 0x0853, 0x0858, 0x086b, 0x0877, 0x0878, 0x0879, 0x087a,
1255 0x087b, 0x0a00, 0x0a01, 0x0a0d, 0x0a0e, 0x0a0f, 0x0a24, 0x0a37,
1256 0x0a3a, 0x0a3b, 0x0a3e, 0x0a46, 0x0a47, 0x0a4a, 0x0a4b, 0x0a5f,
1257 0x0a79, 0x0a7a, 0x0a7b, 0x0a80, 0x0a81, 0x0a84, 0x0a85, 0x0a99,
1258 0x0aa5, 0x0aa6, 0x0ab8, 0x0aba, 0x0abb, 0x0abc, 0x0abd, 0x0ac8,
1259 0x0ace, 0x0acf, 0x0ad7, 0x0adc, 0x0aeb, 0x0c04, 0x0c25, 0x0c26,
1260 0x0c27, 0x0c2a, 0x0c2b, 0x0c3a, 0x0c3b, 0x0c3c, 0x0c3d, 0x0ca0,
1261 0x0cad, 0x0cd4, 0x0cd5, 0x0cfc, 0x0cfd, 0x0d86, 0x0d92, 0x0d93,
1262 0x0d94, 0x0d95, 0x0db0, 0x0db8, 0x0db9, 0x0dba, 0x0dbb, 0x0dc0,
1263 0x0dc2, 0x0dc3, 0x0dda, 0x0ddb, 0x0ddc, 0x0ddd, 0x0e92, 0x0e93,
1264 0x0e94, 0x0e95, 0x0ec7, 0x0ecc, 0x0ece, 0x0ecf, 0x0ed8, 0x0ed9,
1265 0x0eda, 0x0edb, 0x0808, 0x0809, 0x080a, 0x0810, 0x0811, 0x0844,
1266 0x0845, 0x0861, 0x0862, 0x0863, 0x086c, 0x0922, 0x0923, 0x092e,
1267 0x092f, 0x0936, 0x0937, 0x09b1, 0x09b2, 0x09b3, 0x09b4, 0x09b5,
1268 0x09b8, 0x09b9, 0x09ba, 0x09bb, 0x09bc, 0x09bd, 0x09be, 0x09bf,
1269 0x0b00, 0x0b15, 0x0b2c, 0x0b2d, 0x0b2e, 0x0b2f, 0x0b36, 0x0bb9,
1270 0x0c28, 0x0c2a, 0x0c2b, 0x0c2c, 0x0c2d, 0x0c2e, 0x0c2f, 0x0c30,
1271 0x0c31, 0x0c38, 0x0c60, 0x0c61, 0x0c62, 0x0c63, 0x0c8d, 0x0c8e,
1272 0x0c8f, 0x0c92, 0x0cbe, 0x0cbf, 0x0ce6, 0x0ce7, 0x0d40, 0x0d41,
1273 0x0d57, 0x0d58, 0x0d59, 0x0d5a, 0x0d5b, 0x0d5c, 0x0d5d, 0x0d98,
1274 0x0d99, 0x0d9a, 0x0d9b, 0x0d9c, 0x0d9d, 0x0dad, 0x0dae, 0x0daf,
1275 0x0dc0, 0x0dc1, 0x0dc2, 0x0dc3, 0x0dca, 0x0dcb, 0x0dec, 0x0ded,
1276 0x0dee, 0x0def, 0x1018, 0x1022, 0x1023, 0x1030, 0x1031, 0x1032,
1277 0x1033, 0x1050, 0x1051, 0x105c, 0x1074, 0x1075, 0x1076, 0x1077,
1278 0x1078, 0x1079, 0x107a, 0x107b, 0x10b2, 0x10b3, 0x10b8, 0x10b9,
1279 0x10ba, 0x10bb, 0x10d4, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x1404,
1280 0x1405, 0x1406, 0x1407, 0x1410, 0x1411, 0x1412, 0x1413, 0x1414,
1281 0x1415, 0x1416, 0x1417, 0x1418, 0x1419, 0x1466, 0x1467, 0x1468,
1282 0x1469, 0x146a, 0x146b, 0x146c, 0x146d, 0x147e, 0x147f, 0x1488,
1283 0x1489, 0x148a, 0x148b, 0x14b6, 0x14b7, 0x14b8, 0x14b9, 0x14ba,
1284 0x14bb, 0x14bc, 0x14bd, 0x14f0, 0x14f1, 0x14f8, 0x14f9, 0x14fa,
1285 0x14fb, 0x14fc, 0x14fd, 0x14fe, 0x14ff, 0x152a, 0x152b, 0x152c,
1286 0x152d, 0x152e, 0x152f, 0x1530, 0x1531, 0x1548, 0x1549, 0x154e,
1287 0x154f, 0x1558, 0x1559, 0x155a, 0x155b, 0x1572, 0x159a, 0x159b,
1288 0x15ac, 0x15ba, 0x15bb, 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4,
1289 0x15d5, 0x181d, 0x181e, 0x181f, 0x1840, 0x1841, 0x1842, 0x1843,
1290 0x1844, 0x1845, 0x1846, 0x1847, 0x1848, 0x1849, 0x1861, 0x1862,
1291 0x1863, 0x1864, 0x1865, 0x1866, 0x1867, 0x1868, 0x1869, 0x186a,
1292 0x186b, 0x186c, 0x186d, 0x186e, 0x191b, 0x191c, 0x191d, 0x191e,
1293 0x191f, 0x1942, 0x1943, 0x1944, 0x1945, 0x1946, 0x1947, 0x1958,
1294 0x1959, 0x19ed, 0x19ee, 0x19ef, 0x19f0, 0x19f1, 0x19f2, 0x19f3,
1295 0x19f4, 0x19f5, 0x19f6, 0x19f7, 0x1b0e, 0x1b0f, 0x1b62, 0x1b63,
1296 0x1b64, 0x1b65, 0x1b66, 0x1b67, 0x1b68, 0x1b69, 0x1b6a, 0x1b6b,
1297 0x1b6c, 0x1b6d, 0x1b6e, 0x1b6f, 0x1b82, 0x1ba8, 0x1ba9, 0x1baa,
1298 0x1bab, 0x1bac, 0x1bad, 0x1bae, 0x1baf, 0x1bb0, 0x1bb1, 0x1bb2,
1299 0x1bb3, 0x1d80, 0x1d81, 0x1d82, 0x1d83, 0x1d84, 0x1d85, 0x1d86,
1300 0x1d87, 0x1d88, 0x1d89, 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8d, 0x1007,
1301 0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, 0x100f,
1302 0x1016, 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086,
1303 0x1087, 0x10c0, 0x123a, 0x123b, 0x123c, 0x123d, 0x123e, 0x123f,
1304 0x1240, 0x1241, 0x1242, 0x1243, 0x1350, 0x1352, 0x1353, 0x1358,
1305 0x1359, 0x135a, 0x135b, 0x135c, 0x135d, 0x135e, 0x135f, 0x1360,
1306 0x1361, 0x1602, 0x1603, 0x160c, 0x160d, 0x160e, 0x160f, 0x1620,
1307 0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628,
1308 0x1629, 0x166e, 0x166f, 0x167c, 0x167d, 0x167e, 0x167f, 0x1770,
1309 0x1771, 0x1852, 0x1853, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876,
1310 0x1877, 0x1878, 0x1879, 0x187a, 0x187b, 0x187c, 0x187d, 0x187e,
1311 0x187f, 0x1918, 0x1919, 0x1926, 0x1927, 0x1970, 0x1971, 0x1972,
1312 0x1973, 0x1974, 0x1975, 0x1976, 0x1977, 0x1978, 0x1979, 0x197a,
1313 0x197b, 0x1aa0, 0x1aa1, 0x1aa2, 0x1aa3, 0x1aa4, 0x1aa5, 0x1aa6,
1314 0x1aa7, 0x1aa8, 0x1aa9, 0x1aaa, 0x1aab, 0x1aac, 0x1aad, 0x1b3c,
1315 0x1b3d, 0x1b3e, 0x1b3f, 0x1b50, 0x1b51, 0x1b52, 0x1b53, 0x1b54,
1316 0x1b55, 0x1b56, 0x1b57, 0x1b58, 0x1b59, 0x2032, 0x2033, 0x2034,
1317 0x2035, 0x2036, 0x2037, 0x2038, 0x2039, 0x203a, 0x203b, 0x203c,
1318 0x203d, 0x203e, 0x203f, 0x2040, 0x2041, 0x2042, 0x2043, 0x20ba,
1319 0x20bb, 0x20cc, 0x20cd, 0x20ce, 0x20cf, 0x20e0, 0x20e1, 0x20e2,
1320 0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7, 0x21aa, 0x21ab, 0x21c0,
1321 0x21c1, 0x21c2, 0x21c3, 0x21c4, 0x21c5, 0x21c6, 0x21c7, 0x21c8,
1322 0x21c9, 0x21ca, 0x21cb, 0x21cc, 0x21cd, 0x21ce, 0x21cf, 0x21d0,
1323 0x21d1, 0x21d2, 0x21d3, 0x2894, 0x2895, 0x2896, 0x2897, 0x2898,
1324 0x2899, 0x289a, 0x289b, 0x289c, 0x289d, 0x289e, 0x289f, 0x28c0,
1325 0x28c1, 0x28c2, 0x28c3, 0x28c4, 0x28c5, 0x28c6, 0x28c7, 0x28c8,
1326 0x28c9, 0x28ca, 0x28cb, 0x2930, 0x2931, 0x2932, 0x2933, 0x2934,
1327 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c,
1328 0x293d, 0x293e, 0x293f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964,
1329 0x2965, 0x2966, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x2a40,
1330 0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48,
1331 0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50,
1332 0x2a51, 0x2a52, 0x2a53, 0x2ae6, 0x2ae7, 0x2b24, 0x2b25, 0x2b26,
1333 0x2b27, 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e,
1334 0x2b2f, 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b5a, 0x2b5b, 0x3014,
1335 0x3015, 0x3016, 0x3017, 0x3020, 0x3021, 0x3022, 0x3023, 0x3024,
1336 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c,
1337 0x302d, 0x302e, 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034,
1338 0x3035, 0x3036, 0x3037, 0x3038, 0x3039, 0x30c0, 0x30c1, 0x30de,
1339 0x30df, 0x3218, 0x3219, 0x321a, 0x321b, 0x321c, 0x321d, 0x321e,
1340 0x321f, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226,
1341 0x3227, 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e,
1342 0x322f, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3378,
1343 0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x337f, 0x33c0,
1344 0x33c1, 0x33c2, 0x33c3, 0x33c4, 0x33c5, 0x33c6, 0x33c7, 0x33c8,
1345 0x33c9, 0x33ca, 0x33cb, 0x33cc, 0x33cd, 0x33ce, 0x33cf, 0x33d0,
1346 0x33d1, 0x33d2, 0x33d3, 0x33d4, 0x33d5, 0x33d6, 0x33d7, 0x33d8,
1347 0x33d9, 0x3706, 0x3707, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
1348 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
1349 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
1350 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
1351 0x374d, 0x374e, 0x374f, 0x3b34, 0x3b35, 0x3b36, 0x3b37, 0x3be8,
1352 0x3be9, 0x3bea, 0x3beb, 0x3bec, 0x3bed, 0x3bee, 0x3bef, 0x3bf0,
1353 0x3bf1, 0x3bf2, 0x3bf3, 0x3bf4, 0x3bf5, 0x3bf6, 0x3bf7, 0x3bf8,
1354 0x3bf9, 0x3bfa, 0x3bfb, 0x3bfc, 0x3bfd, 0x3bfe, 0x3bff, 0x2000,
1355 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
1356 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x202e, 0x202f, 0x2182,
1357 0x2183, 0x21b4, 0x21b5, 0x21b6, 0x21b7, 0x21b8, 0x21b9, 0x21ba,
1358 0x21bb, 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x2460, 0x2461, 0x2462,
1359 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
1360 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
1361 0x2473, 0x26a2, 0x26a3, 0x000b,
1364 static const uint8_t table1_mv_bits[1100] = {
1365 2, 4, 4, 4, 5, 5, 5, 5,
1366 6, 6, 7, 7, 7, 7, 7, 8,
1367 8, 8, 8, 8, 8, 8, 8, 8,
1368 8, 8, 8, 8, 8, 8, 8, 8,
1369 8, 9, 9, 9, 9, 9, 9, 9,
1370 9, 9, 9, 9, 9, 9, 9, 9,
1371 9, 9, 9, 9, 9, 10, 10, 10,
1372 10, 10, 10, 10, 10, 10, 10, 10,
1373 10, 10, 10, 10, 10, 10, 10, 10,
1374 10, 10, 10, 10, 10, 10, 10, 10,
1375 10, 10, 10, 10, 10, 10, 10, 10,
1376 10, 10, 10, 10, 10, 10, 10, 10,
1377 10, 10, 10, 10, 10, 10, 10, 10,
1378 10, 10, 10, 10, 10, 10, 10, 10,
1379 10, 10, 10, 11, 11, 11, 11, 11,
1380 11, 11, 11, 11, 11, 11, 11, 11,
1381 11, 11, 11, 11, 11, 11, 11, 11,
1382 11, 11, 11, 11, 11, 11, 11, 11,
1383 11, 11, 11, 11, 11, 11, 11, 11,
1384 11, 11, 11, 11, 11, 11, 11, 11,
1385 11, 11, 11, 11, 11, 11, 11, 11,
1386 11, 11, 11, 11, 11, 11, 11, 11,
1387 11, 11, 11, 11, 11, 11, 11, 11,
1388 11, 11, 11, 11, 11, 11, 11, 11,
1389 11, 11, 11, 12, 12, 12, 12, 12,
1390 12, 12, 12, 12, 12, 12, 12, 12,
1391 12, 12, 12, 12, 12, 12, 12, 12,
1392 12, 12, 12, 12, 12, 12, 12, 12,
1393 12, 12, 12, 12, 12, 12, 12, 12,
1394 12, 12, 12, 12, 12, 12, 12, 12,
1395 12, 12, 12, 12, 12, 12, 12, 12,
1396 12, 12, 12, 12, 12, 12, 12, 12,
1397 12, 12, 12, 12, 12, 12, 12, 12,
1398 12, 12, 12, 12, 12, 12, 12, 12,
1399 12, 12, 12, 12, 12, 12, 12, 12,
1400 12, 12, 12, 12, 12, 12, 12, 12,
1401 12, 12, 12, 12, 12, 12, 12, 12,
1402 12, 12, 12, 12, 12, 12, 12, 12,
1403 12, 12, 12, 12, 12, 12, 12, 12,
1404 12, 12, 12, 12, 12, 12, 12, 12,
1405 12, 12, 12, 12, 12, 12, 12, 12,
1406 12, 12, 13, 13, 13, 13, 13, 13,
1407 13, 13, 13, 13, 13, 13, 13, 13,
1408 13, 13, 13, 13, 13, 13, 13, 13,
1409 13, 13, 13, 13, 13, 13, 13, 13,
1410 13, 13, 13, 13, 13, 13, 13, 13,
1411 13, 13, 13, 13, 13, 13, 13, 13,
1412 13, 13, 13, 13, 13, 13, 13, 13,
1413 13, 13, 13, 13, 13, 13, 13, 13,
1414 13, 13, 13, 13, 13, 13, 13, 13,
1415 13, 13, 13, 13, 13, 13, 13, 13,
1416 13, 13, 13, 13, 13, 13, 13, 13,
1417 13, 13, 13, 13, 13, 13, 13, 13,
1418 13, 13, 13, 13, 13, 13, 13, 13,
1419 13, 13, 13, 13, 13, 13, 13, 13,
1420 13, 13, 13, 13, 13, 13, 13, 13,
1421 13, 13, 13, 13, 13, 13, 13, 13,
1422 13, 13, 13, 13, 13, 13, 13, 13,
1423 13, 13, 13, 13, 13, 13, 13, 13,
1424 13, 13, 13, 13, 13, 13, 13, 13,
1425 13, 13, 13, 13, 13, 13, 13, 13,
1426 13, 13, 13, 13, 13, 13, 13, 13,
1427 13, 13, 13, 13, 13, 13, 13, 13,
1428 13, 13, 13, 13, 13, 13, 13, 13,
1429 13, 13, 13, 13, 13, 13, 13, 13,
1430 13, 13, 13, 13, 13, 13, 13, 13,
1431 13, 13, 13, 13, 13, 13, 13, 13,
1432 13, 13, 13, 13, 13, 13, 13, 13,
1433 13, 13, 13, 13, 13, 13, 13, 13,
1434 13, 13, 13, 13, 13, 13, 13, 13,
1435 13, 13, 13, 13, 13, 13, 13, 13,
1436 13, 13, 13, 13, 13, 13, 13, 13,
1437 13, 13, 13, 13, 13, 13, 13, 13,
1438 13, 13, 13, 13, 13, 13, 13, 13,
1439 13, 13, 13, 13, 13, 13, 13, 13,
1440 13, 13, 13, 13, 13, 13, 13, 13,
1441 13, 13, 13, 13, 13, 13, 13, 14,
1442 14, 14, 14, 14, 14, 14, 14, 14,
1443 14, 14, 14, 14, 14, 14, 14, 14,
1444 14, 14, 14, 14, 14, 14, 14, 14,
1445 14, 14, 14, 14, 14, 14, 14, 14,
1446 14, 14, 14, 14, 14, 14, 14, 14,
1447 14, 14, 14, 14, 14, 14, 14, 14,
1448 14, 14, 14, 14, 14, 14, 14, 14,
1449 14, 14, 14, 14, 14, 14, 14, 14,
1450 14, 14, 14, 14, 14, 14, 14, 14,
1451 14, 14, 14, 14, 14, 14, 14, 14,
1452 14, 14, 14, 14, 14, 14, 14, 14,
1453 14, 14, 14, 14, 14, 14, 14, 14,
1454 14, 14, 14, 14, 14, 14, 14, 14,
1455 14, 14, 14, 14, 14, 14, 14, 14,
1456 14, 14, 14, 14, 14, 14, 14, 14,
1457 14, 14, 14, 14, 14, 14, 14, 14,
1458 14, 14, 14, 14, 14, 14, 14, 14,
1459 14, 14, 14, 14, 14, 14, 14, 14,
1460 14, 14, 14, 14, 14, 14, 14, 14,
1461 14, 14, 14, 14, 14, 14, 14, 14,
1462 14, 14, 14, 14, 14, 14, 14, 14,
1463 14, 14, 14, 14, 14, 14, 14, 14,
1464 14, 14, 14, 14, 14, 14, 14, 14,
1465 14, 14, 14, 14, 14, 14, 14, 14,
1466 14, 14, 14, 14, 14, 14, 14, 14,
1467 14, 14, 14, 14, 14, 14, 14, 14,
1468 14, 14, 14, 14, 14, 14, 14, 14,
1469 14, 14, 14, 14, 14, 14, 14, 14,
1470 14, 14, 14, 14, 14, 14, 14, 14,
1471 14, 14, 14, 14, 14, 14, 14, 14,
1472 14, 14, 14, 14, 14, 14, 14, 14,
1473 14, 14, 14, 14, 14, 14, 14, 14,
1474 14, 14, 14, 14, 14, 14, 14, 14,
1475 14, 14, 14, 14, 14, 14, 14, 14,
1476 14, 14, 14, 14, 14, 14, 14, 14,
1477 14, 14, 14, 14, 14, 14, 14, 14,
1478 14, 14, 14, 14, 14, 14, 14, 14,
1479 14, 14, 14, 14, 14, 14, 14, 14,
1480 14, 14, 14, 14, 14, 14, 14, 14,
1481 14, 14, 14, 14, 14, 14, 14, 14,
1482 14, 14, 14, 14, 14, 14, 14, 14,
1483 14, 14, 14, 14, 14, 14, 14, 14,
1484 14, 14, 14, 14, 14, 14, 14, 14,
1485 14, 14, 14, 14, 14, 14, 14, 14,
1486 14, 14, 14, 14, 14, 14, 14, 14,
1487 14, 14, 14, 14, 14, 14, 14, 14,
1488 14, 14, 14, 14, 14, 14, 14, 14,
1489 14, 14, 14, 14, 14, 14, 14, 14,
1490 14, 14, 14, 14, 14, 14, 14, 14,
1491 14, 14, 14, 14, 14, 14, 14, 14,
1492 14, 14, 14, 14, 14, 14, 14, 14,
1493 14, 14, 14, 14, 14, 14, 14, 14,
1494 14, 14, 14, 14, 14, 14, 14, 14,
1495 14, 14, 14, 14, 14, 14, 14, 15,
1496 15, 15, 15, 15, 15, 15, 15, 15,
1497 15, 15, 15, 15, 15, 15, 15, 15,
1498 15, 15, 15, 15, 15, 15, 15, 15,
1499 15, 15, 15, 15, 15, 15, 15, 15,
1500 15, 15, 15, 15, 15, 15, 15, 15,
1501 15, 15, 15, 15, 15, 15, 15, 15,
1505 static const uint8_t table1_mvx[1099] = {
1506 32, 31, 32, 31, 33, 32, 33, 33,
1507 31, 34, 30, 32, 32, 34, 35, 32,
1508 34, 33, 29, 30, 30, 32, 31, 31,
1509 33, 35, 35, 33, 31, 29, 29, 33,
1510 34, 30, 31, 28, 36, 30, 34, 32,
1511 32, 37, 32, 32, 25, 27, 39, 32,
1512 32, 32, 38, 35, 36, 32, 37, 61,
1513 26, 32, 34, 35, 3, 35, 27, 28,
1514 29, 34, 28, 37, 31, 36, 32, 27,
1515 31, 30, 29, 39, 33, 29, 33, 35,
1516 25, 25, 29, 33, 31, 31, 31, 33,
1517 32, 30, 32, 32, 41, 39, 33, 36,
1518 32, 28, 34, 36, 38, 24, 60, 31,
1519 23, 28, 32, 33, 59, 32, 40, 30,
1520 5, 34, 32, 38, 32, 30, 43, 4,
1521 32, 32, 42, 31, 31, 32, 26, 38,
1522 26, 22, 21, 37, 61, 63, 37, 31,
1523 32, 33, 2, 1, 23, 33, 41, 27,
1524 35, 30, 38, 23, 33, 3, 28, 34,
1525 34, 27, 41, 29, 39, 35, 36, 29,
1526 32, 27, 30, 32, 24, 61, 37, 26,
1527 59, 25, 35, 27, 36, 37, 30, 31,
1528 34, 40, 3, 28, 34, 39, 32, 31,
1529 32, 30, 24, 28, 35, 36, 26, 32,
1530 31, 33, 29, 33, 39, 25, 30, 24,
1531 35, 59, 29, 34, 25, 30, 21, 35,
1532 43, 40, 32, 29, 5, 28, 31, 62,
1533 33, 33, 25, 31, 21, 31, 43, 31,
1534 34, 33, 20, 40, 39, 31, 31, 57,
1535 38, 32, 42, 33, 32, 31, 32, 29,
1536 30, 44, 5, 31, 22, 34, 36, 17,
1537 38, 58, 38, 35, 32, 60, 35, 24,
1538 32, 38, 16, 45, 42, 32, 31, 29,
1539 4, 30, 17, 40, 46, 48, 63, 32,
1540 42, 19, 41, 22, 28, 36, 45, 33,
1541 33, 32, 29, 7, 41, 42, 18, 33,
1542 33, 32, 22, 37, 1, 26, 22, 23,
1543 49, 28, 26, 27, 32, 33, 27, 23,
1544 28, 36, 15, 6, 34, 27, 31, 26,
1545 23, 2, 33, 32, 34, 41, 28, 32,
1546 41, 0, 36, 38, 34, 31, 47, 32,
1547 17, 31, 39, 33, 37, 51, 30, 47,
1548 32, 50, 32, 19, 63, 30, 25, 27,
1549 33, 62, 24, 31, 27, 30, 37, 31,
1550 45, 32, 39, 20, 46, 47, 35, 19,
1551 34, 1, 49, 21, 21, 14, 51, 26,
1552 23, 31, 36, 35, 58, 29, 29, 21,
1553 20, 42, 13, 28, 12, 40, 31, 33,
1554 39, 60, 32, 44, 33, 31, 28, 37,
1555 29, 32, 30, 49, 43, 28, 39, 25,
1556 32, 48, 2, 15, 20, 25, 31, 28,
1557 21, 24, 25, 15, 31, 17, 37, 43,
1558 18, 32, 33, 24, 33, 36, 13, 33,
1559 31, 39, 11, 31, 33, 32, 39, 37,
1560 32, 32, 29, 17, 44, 46, 36, 35,
1561 26, 37, 58, 32, 34, 38, 8, 38,
1562 38, 22, 29, 25, 16, 35, 32, 35,
1563 33, 43, 18, 46, 38, 50, 33, 18,
1564 53, 60, 13, 32, 36, 33, 51, 36,
1565 43, 45, 27, 42, 29, 24, 30, 25,
1566 31, 52, 31, 35, 38, 9, 22, 34,
1567 4, 17, 28, 55, 42, 25, 17, 20,
1568 47, 34, 33, 16, 40, 25, 16, 30,
1569 53, 29, 10, 11, 14, 26, 33, 4,
1570 35, 44, 26, 16, 31, 26, 34, 38,
1571 29, 31, 30, 24, 22, 61, 32, 9,
1572 45, 34, 31, 19, 9, 31, 46, 31,
1573 35, 54, 29, 57, 30, 50, 3, 31,
1574 63, 34, 47, 41, 51, 18, 31, 14,
1575 37, 38, 31, 24, 32, 31, 50, 33,
1576 31, 54, 27, 9, 33, 23, 19, 32,
1577 29, 29, 33, 28, 47, 49, 30, 47,
1578 33, 27, 25, 54, 44, 45, 50, 58,
1579 51, 48, 33, 59, 33, 34, 57, 13,
1580 26, 33, 13, 48, 30, 11, 7, 56,
1581 34, 55, 26, 0, 26, 35, 1, 51,
1582 33, 53, 31, 45, 12, 29, 29, 51,
1583 31, 48, 2, 6, 34, 30, 28, 33,
1584 60, 40, 27, 46, 31, 9, 35, 29,
1585 31, 39, 55, 46, 19, 37, 62, 34,
1586 30, 16, 19, 49, 41, 41, 39, 37,
1587 14, 5, 13, 35, 55, 30, 40, 40,
1588 42, 8, 20, 25, 45, 35, 33, 36,
1589 54, 38, 27, 37, 62, 40, 15, 59,
1590 49, 31, 29, 34, 34, 39, 24, 29,
1591 25, 29, 21, 29, 10, 61, 33, 49,
1592 35, 34, 3, 38, 39, 29, 7, 41,
1593 1, 35, 4, 23, 15, 23, 11, 37,
1594 28, 35, 30, 30, 24, 1, 43, 56,
1595 8, 34, 42, 24, 45, 30, 20, 23,
1596 8, 38, 22, 33, 17, 52, 34, 22,
1597 53, 43, 44, 1, 27, 31, 41, 43,
1598 41, 30, 31, 36, 30, 5, 55, 31,
1599 33, 30, 40, 23, 15, 29, 34, 34,
1600 59, 34, 30, 11, 13, 38, 5, 0,
1601 30, 42, 5, 30, 29, 34, 10, 44,
1602 30, 63, 35, 12, 3, 26, 15, 17,
1603 25, 34, 43, 39, 34, 56, 29, 23,
1604 30, 12, 30, 10, 35, 9, 24, 58,
1605 10, 12, 54, 33, 37, 20, 41, 35,
1606 29, 18, 61, 30, 40, 24, 39, 53,
1607 62, 26, 29, 33, 34, 53, 49, 21,
1608 27, 11, 63, 20, 26, 23, 7, 13,
1609 6, 47, 29, 30, 9, 51, 22, 34,
1610 21, 25, 33, 56, 57, 30, 38, 51,
1611 51, 38, 63, 28, 40, 35, 33, 18,
1612 33, 33, 24, 58, 58, 34, 49, 29,
1613 43, 4, 1, 4, 42, 35, 35, 30,
1614 17, 5, 56, 61, 25, 37, 36, 55,
1615 28, 35, 29, 50, 48, 52, 2, 42,
1616 34, 40, 46, 46, 43, 35, 29, 48,
1617 20, 29, 31, 41, 7, 30, 35, 19,
1618 14, 21, 8, 39, 39, 40, 46, 55,
1619 34, 6, 30, 34, 37, 25, 37, 33,
1620 22, 44, 52, 17, 35, 29, 36, 35,
1621 40, 37, 28, 30, 50, 14, 28, 55,
1622 6, 23, 19, 14, 30, 3, 30, 28,
1623 28, 61, 61, 47, 45, 48, 40, 40,
1624 34, 34, 25, 30, 29, 35, 4, 26,
1625 53, 50, 26, 41, 27, 59, 27, 38,
1626 39, 3, 50, 43, 47, 23, 33, 55,
1627 35, 21, 23, 35, 61, 33, 46, 52,
1628 35, 34, 24, 30, 43, 16, 37, 21,
1629 2, 24, 45, 34, 30, 55, 55, 1,
1630 29, 29, 26, 28, 25, 31, 36, 22,
1631 17, 30, 52, 2, 44, 44, 57, 26,
1632 62, 41, 39, 57, 26, 46, 49, 11,
1633 16, 19, 5, 59, 38, 39, 58, 38,
1634 25, 49, 50, 22, 28, 59, 9, 59,
1635 7, 28, 55, 17, 4, 35, 50, 21,
1636 29, 44, 47, 18, 24, 19, 25, 42,
1637 35, 3, 51, 35, 16, 35, 30, 63,
1638 57, 39, 39, 25, 35, 38, 9, 16,
1639 36, 45, 31, 60, 14, 34, 42, 24,
1640 0, 37, 18, 61, 57, 37, 28, 53,
1641 20, 46, 14, 47, 38, 38, 38, 9,
1642 34, 39, 43, 17, 39, 59, 5, 27,
1646 static const uint8_t table1_mvy[1099] = {
1647 32, 32, 31, 31, 32, 33, 31, 33,
1648 33, 32, 32, 30, 34, 31, 32, 29,
1649 33, 30, 32, 33, 31, 35, 34, 30,
1650 34, 31, 33, 29, 29, 31, 33, 35,
1651 30, 30, 35, 32, 32, 34, 34, 28,
1652 25, 32, 36, 27, 32, 32, 32, 37,
1653 39, 3, 32, 30, 31, 26, 31, 32,
1654 32, 38, 29, 29, 32, 34, 31, 31,
1655 34, 35, 33, 33, 28, 33, 1, 33,
1656 27, 29, 30, 31, 28, 29, 37, 35,
1657 31, 33, 35, 27, 36, 37, 25, 25,
1658 61, 35, 4, 5, 32, 33, 36, 30,
1659 23, 30, 28, 34, 31, 32, 32, 39,
1660 32, 34, 21, 39, 32, 59, 32, 28,
1661 32, 36, 60, 33, 24, 36, 32, 32,
1662 41, 2, 32, 38, 26, 22, 33, 30,
1663 31, 32, 32, 30, 31, 32, 29, 3,
1664 40, 38, 32, 32, 33, 26, 31, 34,
1665 28, 38, 34, 31, 3, 31, 35, 38,
1666 27, 35, 33, 28, 29, 27, 29, 27,
1667 43, 29, 37, 63, 31, 33, 34, 30,
1668 31, 30, 37, 30, 35, 35, 26, 41,
1669 37, 31, 33, 28, 26, 30, 42, 24,
1670 7, 27, 33, 29, 36, 28, 34, 57,
1671 23, 41, 36, 23, 35, 34, 25, 30,
1672 25, 33, 25, 25, 29, 24, 33, 39,
1673 33, 33, 0, 37, 31, 36, 21, 32,
1674 61, 24, 35, 61, 31, 5, 31, 59,
1675 39, 21, 32, 30, 34, 22, 40, 32,
1676 29, 16, 31, 5, 62, 2, 20, 39,
1677 39, 32, 33, 1, 31, 24, 36, 32,
1678 36, 32, 28, 26, 6, 31, 38, 34,
1679 58, 35, 32, 33, 33, 17, 43, 26,
1680 31, 40, 31, 34, 32, 32, 31, 19,
1681 30, 32, 29, 33, 38, 38, 32, 59,
1682 40, 18, 38, 32, 35, 34, 32, 17,
1683 1, 15, 30, 28, 31, 28, 34, 29,
1684 32, 27, 35, 27, 49, 22, 37, 34,
1685 37, 26, 32, 32, 22, 28, 45, 29,
1686 30, 31, 43, 46, 41, 30, 26, 13,
1687 34, 32, 27, 38, 42, 42, 33, 47,
1688 33, 60, 27, 42, 25, 32, 22, 32,
1689 48, 32, 45, 33, 33, 41, 27, 25,
1690 19, 31, 35, 19, 36, 42, 27, 17,
1691 31, 44, 28, 33, 33, 31, 23, 31,
1692 40, 33, 31, 34, 30, 32, 33, 36,
1693 35, 47, 37, 41, 31, 23, 41, 29,
1694 30, 35, 32, 25, 32, 28, 58, 2,
1695 37, 33, 14, 33, 49, 20, 39, 36,
1696 21, 9, 23, 33, 35, 24, 39, 37,
1697 11, 33, 30, 31, 31, 28, 51, 40,
1698 35, 29, 25, 33, 46, 35, 37, 30,
1699 30, 8, 63, 28, 15, 40, 33, 45,
1700 49, 25, 32, 4, 47, 51, 36, 39,
1701 53, 10, 24, 29, 30, 31, 25, 40,
1702 38, 38, 33, 56, 23, 27, 32, 37,
1703 26, 29, 43, 36, 33, 24, 55, 43,
1704 9, 29, 34, 34, 24, 33, 18, 33,
1705 33, 30, 31, 50, 24, 60, 30, 39,
1706 34, 30, 39, 28, 22, 38, 2, 26,
1707 63, 32, 57, 21, 39, 33, 28, 18,
1708 30, 34, 22, 33, 29, 41, 30, 34,
1709 35, 21, 13, 34, 35, 39, 30, 46,
1710 32, 42, 32, 31, 33, 26, 11, 33,
1711 22, 31, 25, 31, 53, 27, 43, 25,
1712 40, 50, 21, 36, 38, 30, 12, 31,
1713 34, 20, 15, 29, 32, 62, 30, 13,
1714 17, 32, 19, 31, 20, 31, 30, 7,
1715 1, 17, 34, 37, 31, 31, 44, 34,
1716 26, 40, 16, 37, 52, 48, 30, 20,
1717 18, 33, 38, 29, 7, 25, 30, 54,
1718 45, 47, 46, 41, 29, 29, 16, 30,
1719 14, 26, 38, 34, 34, 29, 34, 30,
1720 29, 30, 57, 30, 4, 46, 33, 29,
1721 39, 44, 30, 31, 50, 33, 31, 32,
1722 19, 32, 40, 31, 37, 47, 1, 35,
1723 16, 31, 0, 35, 33, 1, 17, 34,
1724 9, 34, 33, 31, 49, 43, 42, 51,
1725 34, 29, 23, 29, 14, 30, 45, 49,
1726 11, 24, 31, 28, 35, 41, 30, 44,
1727 18, 29, 34, 35, 36, 25, 26, 21,
1728 31, 30, 34, 19, 34, 44, 36, 38,
1729 25, 31, 28, 23, 37, 3, 55, 41,
1730 30, 22, 41, 24, 33, 26, 35, 35,
1731 30, 55, 51, 47, 48, 38, 24, 15,
1732 21, 50, 25, 46, 30, 29, 10, 34,
1733 42, 45, 29, 42, 22, 3, 33, 27,
1734 34, 1, 34, 28, 34, 36, 35, 23,
1735 23, 13, 58, 3, 26, 63, 25, 31,
1736 34, 61, 38, 39, 25, 61, 29, 37,
1737 30, 41, 26, 48, 28, 33, 50, 35,
1738 30, 37, 29, 29, 40, 6, 39, 28,
1739 28, 19, 8, 22, 45, 34, 35, 10,
1740 58, 17, 37, 39, 30, 18, 54, 14,
1741 29, 16, 59, 30, 35, 23, 35, 30,
1742 47, 36, 29, 55, 20, 12, 31, 35,
1743 14, 29, 18, 34, 34, 24, 29, 26,
1744 22, 2, 27, 23, 8, 30, 55, 38,
1745 60, 31, 4, 34, 49, 34, 27, 34,
1746 33, 30, 31, 54, 42, 35, 38, 46,
1747 44, 26, 27, 9, 39, 25, 21, 29,
1748 28, 42, 13, 0, 5, 34, 37, 28,
1749 24, 29, 63, 26, 22, 27, 29, 25,
1750 33, 25, 61, 0, 35, 25, 36, 15,
1751 27, 40, 53, 33, 3, 10, 16, 37,
1752 38, 18, 30, 46, 27, 9, 6, 29,
1753 62, 8, 42, 28, 29, 3, 25, 16,
1754 26, 29, 35, 28, 27, 51, 61, 48,
1755 37, 9, 34, 7, 49, 45, 20, 29,
1756 21, 5, 5, 29, 28, 34, 29, 24,
1757 10, 24, 35, 36, 38, 55, 11, 36,
1758 38, 53, 54, 26, 30, 49, 20, 27,
1759 30, 39, 33, 41, 49, 22, 38, 38,
1760 4, 30, 8, 9, 3, 24, 22, 50,
1761 37, 36, 31, 27, 2, 9, 42, 63,
1762 25, 19, 44, 1, 28, 28, 48, 30,
1763 34, 41, 41, 38, 12, 27, 15, 0,
1764 16, 34, 35, 38, 28, 29, 40, 42,
1765 51, 52, 45, 54, 59, 59, 42, 44,
1766 37, 26, 46, 24, 15, 39, 22, 46,
1767 19, 35, 38, 17, 37, 23, 52, 55,
1768 50, 37, 26, 11, 37, 12, 24, 30,
1769 16, 13, 22, 13, 36, 35, 40, 41,
1770 34, 41, 26, 53, 51, 5, 21, 30,
1771 2, 63, 41, 20, 1, 56, 21, 24,
1772 25, 5, 28, 35, 26, 28, 30, 18,
1773 29, 23, 40, 34, 20, 42, 39, 34,
1774 28, 61, 38, 27, 62, 9, 36, 17,
1775 9, 49, 24, 25, 54, 34, 39, 37,
1776 3, 1, 25, 38, 38, 44, 35, 36,
1777 12, 60, 36, 38, 40, 25, 43, 39,
1778 53, 28, 39, 57, 46, 10, 52, 27,
1779 35, 42, 45, 59, 15, 60, 38, 24,
1780 23, 39, 12, 29, 24, 0, 20, 16,
1781 28, 43, 35, 28, 1, 49, 4, 21,
1782 42, 39, 29, 3, 44, 21, 53, 55,
1783 11, 5, 3, 39, 53, 28, 25, 19,
1787 /* motion vector table */
1788 typedef struct MVTable {
1790 const uint16_t *table_mv_code;
1791 const uint8_t *table_mv_bits;
1792 const uint8_t *table_mvx;
1793 const uint8_t *table_mvy;
1794 uint16_t *table_mv_index; /* encoding: convert mv to index in table_mv */
1795 VLC vlc; /* decoding: vlc */
1798 static MVTable mv_tables[2] = {
1815 static const uint8_t v2_mb_type[8][2] = {
1816 {1, 1}, {0 , 2}, {3 , 3}, {9 , 5},
1817 {5, 4}, {0x21, 7}, {0x20, 7}, {0x11, 6},
1820 static const uint8_t v2_intra_cbpc[4][2] = {
1821 {1, 1}, {0, 3}, {1, 3}, {1, 2},
1824 static const uint8_t wmv1_y_dc_scale_table[32]={
1825 // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1826 0, 8, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21
1828 static const uint8_t wmv1_c_dc_scale_table[32]={
1829 // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1830 0, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22
1833 static const uint8_t old_ff_y_dc_scale_table[32]={
1834 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1835 0, 8, 8, 8, 8,10,12,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
1837 static const uint8_t old_ff_c_dc_scale_table[32]={
1838 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1839 0, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22
1843 #define WMV1_SCANTABLE_COUNT 4
1845 static const uint8_t wmv1_scantable00[64]= {
1846 0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11,
1847 0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28,
1848 0x30, 0x38, 0x29, 0x21, 0x1A, 0x13, 0x0C, 0x05,
1849 0x06, 0x0D, 0x14, 0x1B, 0x22, 0x31, 0x39, 0x3A,
1850 0x32, 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F,
1851 0x16, 0x1D, 0x24, 0x2B, 0x33, 0x3B, 0x3C, 0x34,
1852 0x2C, 0x25, 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x35,
1853 0x3D, 0x3E, 0x36, 0x2E, 0x27, 0x2F, 0x37, 0x3F,
1855 static const uint8_t wmv1_scantable01[64]= {
1856 0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11,
1857 0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28,
1858 0x21, 0x30, 0x1A, 0x13, 0x0C, 0x05, 0x06, 0x0D,
1859 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 0x2A,
1860 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 0x16, 0x1D,
1861 0x24, 0x2B, 0x32, 0x3A, 0x33, 0x3B, 0x2C, 0x25,
1862 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3C, 0x35,
1863 0x3D, 0x2E, 0x27, 0x2F, 0x36, 0x3E, 0x37, 0x3F,
1865 static const uint8_t wmv1_scantable02[64]= {
1866 0x00, 0x01, 0x08, 0x02, 0x03, 0x09, 0x10, 0x18,
1867 0x11, 0x0A, 0x04, 0x05, 0x0B, 0x12, 0x19, 0x20,
1868 0x28, 0x30, 0x21, 0x1A, 0x13, 0x0C, 0x06, 0x07,
1869 0x0D, 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39,
1870 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x0F, 0x16, 0x1D,
1871 0x24, 0x2B, 0x32, 0x3A, 0x33, 0x2C, 0x25, 0x1E,
1872 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3B, 0x3C, 0x35,
1873 0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F,
1875 static const uint8_t wmv1_scantable03[64]= {
1876 0x00, 0x08, 0x10, 0x01, 0x18, 0x20, 0x28, 0x09,
1877 0x02, 0x03, 0x0A, 0x11, 0x19, 0x30, 0x38, 0x29,
1878 0x21, 0x1A, 0x12, 0x0B, 0x04, 0x05, 0x0C, 0x13,
1879 0x1B, 0x22, 0x31, 0x39, 0x32, 0x2A, 0x23, 0x1C,
1880 0x14, 0x0D, 0x06, 0x07, 0x0E, 0x15, 0x1D, 0x24,
1881 0x2B, 0x33, 0x3A, 0x3B, 0x34, 0x2C, 0x25, 0x1E,
1882 0x16, 0x0F, 0x17, 0x1F, 0x26, 0x2D, 0x3C, 0x35,
1883 0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F,
1886 static const uint8_t *wmv1_scantable[WMV1_SCANTABLE_COUNT+1]={
1893 static const uint8_t table_inter_intra[4][2]={
1894 {0,1} /*Luma-Left Chroma-Left*/,
1895 {2,2} /*Luma-Top Chroma-Left*/,
1896 {6,3} /*luma-Left Chroma-Top */,
1897 {7,3} /*luma-Top Chroma-Top */
1900 #define WMV2_INTER_CBP_TABLE_COUNT 4
1902 static const uint32_t table_mb_non_intra2[128][2] = {
1903 {0x0000A7, 14}, {0x01B2B8, 18}, {0x01B28E, 18}, {0x036575, 19},
1904 {0x006CAC, 16}, {0x000A69, 18}, {0x002934, 20}, {0x00526B, 21},
1905 {0x006CA1, 16}, {0x01B2B9, 18}, {0x0029AD, 20}, {0x029353, 24},
1906 {0x006CA7, 16}, {0x006CAB, 16}, {0x01B2BB, 18}, {0x00029B, 16},
1907 {0x00D944, 17}, {0x000A6A, 18}, {0x0149A8, 23}, {0x03651F, 19},
1908 {0x006CAF, 16}, {0x000A4C, 18}, {0x03651E, 19}, {0x000A48, 18},
1909 {0x00299C, 20}, {0x00299F, 20}, {0x029352, 24}, {0x0029AC, 20},
1910 {0x000296, 16}, {0x00D946, 17}, {0x000A68, 18}, {0x000298, 16},
1911 {0x000527, 17}, {0x00D94D, 17}, {0x0014D7, 19}, {0x036574, 19},
1912 {0x000A5C, 18}, {0x01B299, 18}, {0x00299D, 20}, {0x00299E, 20},
1913 {0x000525, 17}, {0x000A66, 18}, {0x00A4D5, 22}, {0x00149B, 19},
1914 {0x000295, 16}, {0x006CAD, 16}, {0x000A49, 18}, {0x000521, 17},
1915 {0x006CAA, 16}, {0x00D945, 17}, {0x01B298, 18}, {0x00052F, 17},
1916 {0x003654, 15}, {0x006CA0, 16}, {0x000532, 17}, {0x000291, 16},
1917 {0x003652, 15}, {0x000520, 17}, {0x000A5D, 18}, {0x000294, 16},
1918 {0x00009B, 11}, {0x0006E2, 12}, {0x000028, 12}, {0x0001B0, 10},
1919 {0x000001, 3}, {0x000010, 8}, {0x00002F, 6}, {0x00004C, 10},
1920 {0x00000D, 4}, {0x000000, 10}, {0x000006, 9}, {0x000134, 12},
1921 {0x00000C, 4}, {0x000007, 10}, {0x000007, 9}, {0x0006E1, 12},
1922 {0x00000E, 5}, {0x0000DA, 9}, {0x000022, 9}, {0x000364, 11},
1923 {0x00000F, 4}, {0x000006, 10}, {0x00000F, 9}, {0x000135, 12},
1924 {0x000014, 5}, {0x0000DD, 9}, {0x000004, 9}, {0x000015, 11},
1925 {0x00001A, 6}, {0x0001B3, 10}, {0x000005, 10}, {0x0006E3, 12},
1926 {0x00000C, 5}, {0x0000B9, 8}, {0x000004, 8}, {0x0000DB, 9},
1927 {0x00000E, 4}, {0x00000B, 10}, {0x000023, 9}, {0x0006CB, 12},
1928 {0x000005, 6}, {0x0001B1, 10}, {0x000001, 10}, {0x0006E0, 12},
1929 {0x000011, 5}, {0x0000DF, 9}, {0x00000E, 9}, {0x000373, 11},
1930 {0x000003, 5}, {0x0000B8, 8}, {0x000006, 8}, {0x000175, 9},
1931 {0x000015, 5}, {0x000174, 9}, {0x000027, 9}, {0x000372, 11},
1932 {0x000010, 5}, {0x0000BB, 8}, {0x000005, 8}, {0x0000DE, 9},
1933 {0x00000F, 5}, {0x000001, 9}, {0x000012, 8}, {0x000004, 10},
1934 {0x000002, 3}, {0x000016, 5}, {0x000009, 4}, {0x000001, 5},
1937 static const uint32_t table_mb_non_intra3[128][2] = {
1938 {0x0002A1, 10}, {0x005740, 15}, {0x01A0BF, 18}, {0x015D19, 17},
1939 {0x001514, 13}, {0x00461E, 15}, {0x015176, 17}, {0x015177, 17},
1940 {0x0011AD, 13}, {0x00682E, 16}, {0x0682F9, 20}, {0x03417D, 19},
1941 {0x001A36, 14}, {0x002A2D, 14}, {0x00D05E, 17}, {0x006824, 16},
1942 {0x001515, 13}, {0x00545C, 15}, {0x0230E9, 18}, {0x011AFA, 17},
1943 {0x0015D7, 13}, {0x005747, 15}, {0x008D79, 16}, {0x006825, 16},
1944 {0x002BA2, 14}, {0x00A8BA, 16}, {0x0235F6, 18}, {0x015D18, 17},
1945 {0x0011AE, 13}, {0x00346F, 15}, {0x008C3B, 16}, {0x00346E, 15},
1946 {0x000D1A, 13}, {0x00461F, 15}, {0x0682F8, 20}, {0x011875, 17},
1947 {0x002BA1, 14}, {0x008D61, 16}, {0x0235F7, 18}, {0x0230E8, 18},
1948 {0x001513, 13}, {0x008D7B, 16}, {0x011AF4, 17}, {0x011AF5, 17},
1949 {0x001185, 13}, {0x0046BF, 15}, {0x008D60, 16}, {0x008D7C, 16},
1950 {0x001512, 13}, {0x00461C, 15}, {0x00AE8D, 16}, {0x008D78, 16},
1951 {0x000D0E, 13}, {0x003413, 15}, {0x0046B1, 15}, {0x003416, 15},
1952 {0x000AEA, 12}, {0x002A2C, 14}, {0x005741, 15}, {0x002A2F, 14},
1953 {0x000158, 9}, {0x0008D2, 12}, {0x00054C, 11}, {0x000686, 12},
1954 {0x000000, 2}, {0x000069, 8}, {0x00006B, 8}, {0x00068C, 12},
1955 {0x000007, 3}, {0x00015E, 9}, {0x0002A3, 10}, {0x000AE9, 12},
1956 {0x000006, 3}, {0x000231, 10}, {0x0002B8, 10}, {0x001A08, 14},
1957 {0x000010, 5}, {0x0001A9, 10}, {0x000342, 11}, {0x000A88, 12},
1958 {0x000004, 4}, {0x0001A2, 10}, {0x0002A4, 10}, {0x001184, 13},
1959 {0x000012, 5}, {0x000232, 10}, {0x0002B2, 10}, {0x000680, 12},
1960 {0x00001B, 6}, {0x00046A, 11}, {0x00068E, 12}, {0x002359, 14},
1961 {0x000016, 5}, {0x00015F, 9}, {0x0002A0, 10}, {0x00054D, 11},
1962 {0x000005, 4}, {0x000233, 10}, {0x0002B9, 10}, {0x0015D6, 13},
1963 {0x000022, 6}, {0x000468, 11}, {0x000683, 12}, {0x001A0A, 14},
1964 {0x000013, 5}, {0x000236, 10}, {0x0002BB, 10}, {0x001186, 13},
1965 {0x000017, 5}, {0x0001AB, 10}, {0x0002A7, 10}, {0x0008D3, 12},
1966 {0x000014, 5}, {0x000237, 10}, {0x000460, 11}, {0x000D0F, 13},
1967 {0x000019, 6}, {0x0001AA, 10}, {0x0002B3, 10}, {0x000681, 12},
1968 {0x000018, 6}, {0x0001A8, 10}, {0x0002A5, 10}, {0x00068F, 12},
1969 {0x000007, 4}, {0x000055, 7}, {0x000047, 7}, {0x0000AD, 8},
1972 static const uint32_t table_mb_non_intra4[128][2] = {
1973 {0x0000D4, 8}, {0x0021C5, 14}, {0x00F18A, 16}, {0x00D5BC, 16},
1974 {0x000879, 12}, {0x00354D, 14}, {0x010E3F, 17}, {0x010F54, 17},
1975 {0x000866, 12}, {0x00356E, 14}, {0x010F55, 17}, {0x010E3E, 17},
1976 {0x0010CE, 13}, {0x003C84, 14}, {0x00D5BD, 16}, {0x00F18B, 16},
1977 {0x000868, 12}, {0x00438C, 15}, {0x0087AB, 16}, {0x00790B, 15},
1978 {0x000F10, 12}, {0x00433D, 15}, {0x006AD3, 15}, {0x00790A, 15},
1979 {0x001AA7, 13}, {0x0043D4, 15}, {0x00871E, 16}, {0x006ADF, 15},
1980 {0x000D7C, 12}, {0x003C94, 14}, {0x00438D, 15}, {0x006AD2, 15},
1981 {0x0006BC, 11}, {0x0021E9, 14}, {0x006ADA, 15}, {0x006A99, 15},
1982 {0x0010F7, 13}, {0x004389, 15}, {0x006ADB, 15}, {0x0078C4, 15},
1983 {0x000D56, 12}, {0x0035F7, 14}, {0x00438E, 15}, {0x006A98, 15},
1984 {0x000D52, 12}, {0x003C95, 14}, {0x004388, 15}, {0x00433C, 15},
1985 {0x000D54, 12}, {0x001E4B, 13}, {0x003C63, 14}, {0x003C83, 14},
1986 {0x000861, 12}, {0x0021EB, 14}, {0x00356C, 14}, {0x0035F6, 14},
1987 {0x000863, 12}, {0x00219F, 14}, {0x003568, 14}, {0x003C82, 14},
1988 {0x0001AE, 9}, {0x0010C0, 13}, {0x000F11, 12}, {0x001AFA, 13},
1989 {0x000000, 1}, {0x0000F0, 8}, {0x0001AD, 9}, {0x0010C1, 13},
1990 {0x00000A, 4}, {0x0003C5, 10}, {0x000789, 11}, {0x001AB5, 13},
1991 {0x000009, 4}, {0x000435, 11}, {0x000793, 11}, {0x001E40, 13},
1992 {0x00001D, 5}, {0x0003CB, 10}, {0x000878, 12}, {0x001AAF, 13},
1993 {0x00000B, 4}, {0x0003C7, 10}, {0x000791, 11}, {0x001AAB, 13},
1994 {0x00001F, 5}, {0x000436, 11}, {0x0006BF, 11}, {0x000F19, 12},
1995 {0x00003D, 6}, {0x000D51, 12}, {0x0010C4, 13}, {0x0021E8, 14},
1996 {0x000036, 6}, {0x000437, 11}, {0x0006AF, 11}, {0x0010C5, 13},
1997 {0x00000C, 4}, {0x000432, 11}, {0x000794, 11}, {0x001E30, 13},
1998 {0x000042, 7}, {0x000870, 12}, {0x000F24, 12}, {0x001E43, 13},
1999 {0x000020, 6}, {0x00043E, 11}, {0x000795, 11}, {0x001AAA, 13},
2000 {0x000037, 6}, {0x0006AC, 11}, {0x0006AE, 11}, {0x0010F6, 13},
2001 {0x000034, 6}, {0x00043A, 11}, {0x000D50, 12}, {0x001AAE, 13},
2002 {0x000039, 6}, {0x00043F, 11}, {0x00078D, 11}, {0x0010D2, 13},
2003 {0x000038, 6}, {0x00043B, 11}, {0x0006BD, 11}, {0x0010D3, 13},
2004 {0x000011, 5}, {0x0001AC, 9}, {0x0000F3, 8}, {0x000439, 11},
2007 static const uint32_t (*wmv2_inter_table[WMV2_INTER_CBP_TABLE_COUNT])[2]={
2008 table_mb_non_intra2,
2009 table_mb_non_intra3,
2010 table_mb_non_intra4,
2014 static const uint8_t wmv2_scantableA[64]={
2015 0x00, 0x01, 0x02, 0x08, 0x03, 0x09, 0x0A, 0x10,
2016 0x04, 0x0B, 0x11, 0x18, 0x12, 0x0C, 0x05, 0x13,
2017 0x19, 0x0D, 0x14, 0x1A, 0x1B, 0x06, 0x15, 0x1C,
2018 0x0E, 0x16, 0x1D, 0x07, 0x1E, 0x0F, 0x17, 0x1F,
2021 static const uint8_t wmv2_scantableB[64]={
2022 0x00, 0x08, 0x01, 0x10, 0x09, 0x18, 0x11, 0x02,
2023 0x20, 0x0A, 0x19, 0x28, 0x12, 0x30, 0x21, 0x1A,
2024 0x38, 0x29, 0x22, 0x03, 0x31, 0x39, 0x0B, 0x2A,
2025 0x13, 0x32, 0x1B, 0x3A, 0x23, 0x2B, 0x33, 0x3B,