cf291afc801e1ee2714ffad022fa3c29616f3f96
[libav.git] / libavcodec / msmpeg4data.c
1 /*
2 * MSMPEG4 backend for encoder and decoder
3 * copyright (c) 2001 Fabrice Bellard
4 * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
5 *
6 * msmpeg4v1 & v2 stuff by Michael Niedermayer <michaelni@gmx.at>
7 *
8 * This file is part of Libav.
9 *
10 * Libav is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation; either
13 * version 2.1 of the License, or (at your option) any later version.
14 *
15 * Libav is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with Libav; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 */
24
25 /**
26 * @file
27 * MSMPEG4 data tables.
28 */
29
30 #include "h263.h"
31 #include "mpeg4video.h"
32 #include "msmpeg4data.h"
33
34 uint32_t ff_v2_dc_lum_table[512][2];
35 uint32_t ff_v2_dc_chroma_table[512][2];
36 uint8_t ff_static_rl_table_store[NB_RL_TABLES][2][2 * MAX_RUN + MAX_LEVEL + 3];
37
38 VLC ff_msmp4_mb_i_vlc;
39 VLC ff_msmp4_dc_luma_vlc[2];
40 VLC ff_msmp4_dc_chroma_vlc[2];
41
42 /* intra picture macroblock coded block pattern */
43 const uint16_t ff_msmp4_mb_i_table[64][2] = {
44 { 0x1, 1 },{ 0x17, 6 },{ 0x9, 5 },{ 0x5, 5 },
45 { 0x6, 5 },{ 0x47, 9 },{ 0x20, 7 },{ 0x10, 7 },
46 { 0x2, 5 },{ 0x7c, 9 },{ 0x3a, 7 },{ 0x1d, 7 },
47 { 0x2, 6 },{ 0xec, 9 },{ 0x77, 8 },{ 0x0, 8 },
48 { 0x3, 5 },{ 0xb7, 9 },{ 0x2c, 7 },{ 0x13, 7 },
49 { 0x1, 6 },{ 0x168, 10 },{ 0x46, 8 },{ 0x3f, 8 },
50 { 0x1e, 6 },{ 0x712, 13 },{ 0xb5, 9 },{ 0x42, 8 },
51 { 0x22, 7 },{ 0x1c5, 11 },{ 0x11e, 10 },{ 0x87, 9 },
52 { 0x6, 4 },{ 0x3, 9 },{ 0x1e, 7 },{ 0x1c, 6 },
53 { 0x12, 7 },{ 0x388, 12 },{ 0x44, 9 },{ 0x70, 9 },
54 { 0x1f, 6 },{ 0x23e, 11 },{ 0x39, 8 },{ 0x8e, 9 },
55 { 0x1, 7 },{ 0x1c6, 11 },{ 0xb6, 9 },{ 0x45, 9 },
56 { 0x14, 6 },{ 0x23f, 11 },{ 0x7d, 9 },{ 0x18, 9 },
57 { 0x7, 7 },{ 0x1c7, 11 },{ 0x86, 9 },{ 0x19, 9 },
58 { 0x15, 6 },{ 0x1db, 10 },{ 0x2, 9 },{ 0x46, 9 },
59 { 0xd, 8 },{ 0x713, 13 },{ 0x1da, 10 },{ 0x169, 10 },
60 };
61
62 /* non intra picture macroblock coded block pattern + mb type */
63 const uint32_t ff_table_mb_non_intra[128][2] = {
64 { 0x40, 7 },{ 0x13c9, 13 },{ 0x9fd, 12 },{ 0x1fc, 15 },
65 { 0x9fc, 12 },{ 0xa83, 18 },{ 0x12d34, 17 },{ 0x83bc, 16 },
66 { 0x83a, 12 },{ 0x7f8, 17 },{ 0x3fd, 16 },{ 0x3ff, 16 },
67 { 0x79, 13 },{ 0xa82, 18 },{ 0x969d, 16 },{ 0x2a4, 16 },
68 { 0x978, 12 },{ 0x543, 17 },{ 0x41df, 15 },{ 0x7f9, 17 },
69 { 0x12f3, 13 },{ 0x25a6b, 18 },{ 0x25ef9, 18 },{ 0x3fa, 16 },
70 { 0x20ee, 14 },{ 0x969ab, 20 },{ 0x969c, 16 },{ 0x25ef8, 18 },
71 { 0x12d2, 13 },{ 0xa85, 18 },{ 0x969e, 16 },{ 0x4bc8, 15 },
72 { 0x3d, 12 },{ 0x12f7f, 17 },{ 0x2a2, 16 },{ 0x969f, 16 },
73 { 0x25ee, 14 },{ 0x12d355, 21 },{ 0x12f7d, 17 },{ 0x12f7e, 17 },
74 { 0x9e5, 12 },{ 0xa81, 18 },{ 0x4b4d4, 19 },{ 0x83bd, 16 },
75 { 0x78, 13 },{ 0x969b, 16 },{ 0x3fe, 16 },{ 0x2a5, 16 },
76 { 0x7e, 13 },{ 0xa80, 18 },{ 0x2a3, 16 },{ 0x3fb, 16 },
77 { 0x1076, 13 },{ 0xa84, 18 },{ 0x153, 15 },{ 0x4bc9, 15 },
78 { 0x55, 13 },{ 0x12d354, 21 },{ 0x4bde, 15 },{ 0x25e5, 14 },
79 { 0x25b, 10 },{ 0x4b4c, 15 },{ 0x96b, 12 },{ 0x96a, 12 },
80 { 0x1, 2 },{ 0x0, 7 },{ 0x26, 6 },{ 0x12b, 9 },
81 { 0x7, 3 },{ 0x20f, 10 },{ 0x4, 9 },{ 0x28, 12 },
82 { 0x6, 3 },{ 0x20a, 10 },{ 0x128, 9 },{ 0x2b, 12 },
83 { 0x11, 5 },{ 0x1b, 11 },{ 0x13a, 9 },{ 0x4ff, 11 },
84 { 0x3, 4 },{ 0x277, 10 },{ 0x106, 9 },{ 0x839, 12 },
85 { 0xb, 4 },{ 0x27b, 10 },{ 0x12c, 9 },{ 0x4bf, 11 },
86 { 0x9, 6 },{ 0x35, 12 },{ 0x27e, 10 },{ 0x13c8, 13 },
87 { 0x1, 6 },{ 0x4aa, 11 },{ 0x208, 10 },{ 0x29, 12 },
88 { 0x1, 4 },{ 0x254, 10 },{ 0x12e, 9 },{ 0x838, 12 },
89 { 0x24, 6 },{ 0x4f3, 11 },{ 0x276, 10 },{ 0x12f6, 13 },
90 { 0x1, 5 },{ 0x27a, 10 },{ 0x13e, 9 },{ 0x3e, 12 },
91 { 0x8, 6 },{ 0x413, 11 },{ 0xc, 10 },{ 0x4be, 11 },
92 { 0x14, 5 },{ 0x412, 11 },{ 0x253, 10 },{ 0x97a, 12 },
93 { 0x21, 6 },{ 0x4ab, 11 },{ 0x20b, 10 },{ 0x34, 12 },
94 { 0x15, 5 },{ 0x278, 10 },{ 0x252, 10 },{ 0x968, 12 },
95 { 0x5, 5 },{ 0xb, 10 },{ 0x9c, 8 },{ 0xe, 10 },
96 };
97
98 /* dc table 0 */
99
100 const uint32_t ff_table0_dc_lum[120][2] = {
101 { 0x1, 1 },{ 0x1, 2 },{ 0x1, 4 },{ 0x1, 5 },
102 { 0x5, 5 },{ 0x7, 5 },{ 0x8, 6 },{ 0xc, 6 },
103 { 0x0, 7 },{ 0x2, 7 },{ 0x12, 7 },{ 0x1a, 7 },
104 { 0x3, 8 },{ 0x7, 8 },{ 0x27, 8 },{ 0x37, 8 },
105 { 0x5, 9 },{ 0x4c, 9 },{ 0x6c, 9 },{ 0x6d, 9 },
106 { 0x8, 10 },{ 0x19, 10 },{ 0x9b, 10 },{ 0x1b, 10 },
107 { 0x9a, 10 },{ 0x13, 11 },{ 0x34, 11 },{ 0x35, 11 },
108 { 0x61, 12 },{ 0x48, 13 },{ 0xc4, 13 },{ 0x4a, 13 },
109 { 0xc6, 13 },{ 0xc7, 13 },{ 0x92, 14 },{ 0x18b, 14 },
110 { 0x93, 14 },{ 0x183, 14 },{ 0x182, 14 },{ 0x96, 14 },
111 { 0x97, 14 },{ 0x180, 14 },{ 0x314, 15 },{ 0x315, 15 },
112 { 0x605, 16 },{ 0x604, 16 },{ 0x606, 16 },{ 0xc0e, 17 },
113 { 0x303cd, 23 },{ 0x303c9, 23 },{ 0x303c8, 23 },{ 0x303ca, 23 },
114 { 0x303cb, 23 },{ 0x303cc, 23 },{ 0x303ce, 23 },{ 0x303cf, 23 },
115 { 0x303d0, 23 },{ 0x303d1, 23 },{ 0x303d2, 23 },{ 0x303d3, 23 },
116 { 0x303d4, 23 },{ 0x303d5, 23 },{ 0x303d6, 23 },{ 0x303d7, 23 },
117 { 0x303d8, 23 },{ 0x303d9, 23 },{ 0x303da, 23 },{ 0x303db, 23 },
118 { 0x303dc, 23 },{ 0x303dd, 23 },{ 0x303de, 23 },{ 0x303df, 23 },
119 { 0x303e0, 23 },{ 0x303e1, 23 },{ 0x303e2, 23 },{ 0x303e3, 23 },
120 { 0x303e4, 23 },{ 0x303e5, 23 },{ 0x303e6, 23 },{ 0x303e7, 23 },
121 { 0x303e8, 23 },{ 0x303e9, 23 },{ 0x303ea, 23 },{ 0x303eb, 23 },
122 { 0x303ec, 23 },{ 0x303ed, 23 },{ 0x303ee, 23 },{ 0x303ef, 23 },
123 { 0x303f0, 23 },{ 0x303f1, 23 },{ 0x303f2, 23 },{ 0x303f3, 23 },
124 { 0x303f4, 23 },{ 0x303f5, 23 },{ 0x303f6, 23 },{ 0x303f7, 23 },
125 { 0x303f8, 23 },{ 0x303f9, 23 },{ 0x303fa, 23 },{ 0x303fb, 23 },
126 { 0x303fc, 23 },{ 0x303fd, 23 },{ 0x303fe, 23 },{ 0x303ff, 23 },
127 { 0x60780, 24 },{ 0x60781, 24 },{ 0x60782, 24 },{ 0x60783, 24 },
128 { 0x60784, 24 },{ 0x60785, 24 },{ 0x60786, 24 },{ 0x60787, 24 },
129 { 0x60788, 24 },{ 0x60789, 24 },{ 0x6078a, 24 },{ 0x6078b, 24 },
130 { 0x6078c, 24 },{ 0x6078d, 24 },{ 0x6078e, 24 },{ 0x6078f, 24 },
131 };
132
133 const uint32_t ff_table0_dc_chroma[120][2] = {
134 { 0x0, 2 },{ 0x1, 2 },{ 0x5, 3 },{ 0x9, 4 },
135 { 0xd, 4 },{ 0x11, 5 },{ 0x1d, 5 },{ 0x1f, 5 },
136 { 0x21, 6 },{ 0x31, 6 },{ 0x38, 6 },{ 0x33, 6 },
137 { 0x39, 6 },{ 0x3d, 6 },{ 0x61, 7 },{ 0x79, 7 },
138 { 0x80, 8 },{ 0xc8, 8 },{ 0xca, 8 },{ 0xf0, 8 },
139 { 0x81, 8 },{ 0xc0, 8 },{ 0xc9, 8 },{ 0x107, 9 },
140 { 0x106, 9 },{ 0x196, 9 },{ 0x183, 9 },{ 0x1e3, 9 },
141 { 0x1e2, 9 },{ 0x20a, 10 },{ 0x20b, 10 },{ 0x609, 11 },
142 { 0x412, 11 },{ 0x413, 11 },{ 0x60b, 11 },{ 0x411, 11 },
143 { 0x60a, 11 },{ 0x65f, 11 },{ 0x410, 11 },{ 0x65d, 11 },
144 { 0x65e, 11 },{ 0xcb8, 12 },{ 0xc10, 12 },{ 0xcb9, 12 },
145 { 0x1823, 13 },{ 0x3045, 14 },{ 0x6089, 15 },{ 0xc110, 16 },
146 { 0x304448, 22 },{ 0x304449, 22 },{ 0x30444a, 22 },{ 0x30444b, 22 },
147 { 0x30444c, 22 },{ 0x30444d, 22 },{ 0x30444e, 22 },{ 0x30444f, 22 },
148 { 0x304450, 22 },{ 0x304451, 22 },{ 0x304452, 22 },{ 0x304453, 22 },
149 { 0x304454, 22 },{ 0x304455, 22 },{ 0x304456, 22 },{ 0x304457, 22 },
150 { 0x304458, 22 },{ 0x304459, 22 },{ 0x30445a, 22 },{ 0x30445b, 22 },
151 { 0x30445c, 22 },{ 0x30445d, 22 },{ 0x30445e, 22 },{ 0x30445f, 22 },
152 { 0x304460, 22 },{ 0x304461, 22 },{ 0x304462, 22 },{ 0x304463, 22 },
153 { 0x304464, 22 },{ 0x304465, 22 },{ 0x304466, 22 },{ 0x304467, 22 },
154 { 0x304468, 22 },{ 0x304469, 22 },{ 0x30446a, 22 },{ 0x30446b, 22 },
155 { 0x30446c, 22 },{ 0x30446d, 22 },{ 0x30446e, 22 },{ 0x30446f, 22 },
156 { 0x304470, 22 },{ 0x304471, 22 },{ 0x304472, 22 },{ 0x304473, 22 },
157 { 0x304474, 22 },{ 0x304475, 22 },{ 0x304476, 22 },{ 0x304477, 22 },
158 { 0x304478, 22 },{ 0x304479, 22 },{ 0x30447a, 22 },{ 0x30447b, 22 },
159 { 0x30447c, 22 },{ 0x30447d, 22 },{ 0x30447e, 22 },{ 0x30447f, 22 },
160 { 0x608880, 23 },{ 0x608881, 23 },{ 0x608882, 23 },{ 0x608883, 23 },
161 { 0x608884, 23 },{ 0x608885, 23 },{ 0x608886, 23 },{ 0x608887, 23 },
162 { 0x608888, 23 },{ 0x608889, 23 },{ 0x60888a, 23 },{ 0x60888b, 23 },
163 { 0x60888c, 23 },{ 0x60888d, 23 },{ 0x60888e, 23 },{ 0x60888f, 23 },
164 };
165
166 /* dc table 1 */
167
168 const uint32_t ff_table1_dc_lum[120][2] = {
169 { 0x2, 2 },{ 0x3, 2 },{ 0x3, 3 },{ 0x2, 4 },
170 { 0x5, 4 },{ 0x1, 5 },{ 0x3, 5 },{ 0x8, 5 },
171 { 0x0, 6 },{ 0x5, 6 },{ 0xd, 6 },{ 0xf, 6 },
172 { 0x13, 6 },{ 0x8, 7 },{ 0x18, 7 },{ 0x1c, 7 },
173 { 0x24, 7 },{ 0x4, 8 },{ 0x6, 8 },{ 0x12, 8 },
174 { 0x32, 8 },{ 0x3b, 8 },{ 0x4a, 8 },{ 0x4b, 8 },
175 { 0xb, 9 },{ 0x26, 9 },{ 0x27, 9 },{ 0x66, 9 },
176 { 0x74, 9 },{ 0x75, 9 },{ 0x14, 10 },{ 0x1c, 10 },
177 { 0x1f, 10 },{ 0x1d, 10 },{ 0x2b, 11 },{ 0x3d, 11 },
178 { 0x19d, 11 },{ 0x19f, 11 },{ 0x54, 12 },{ 0x339, 12 },
179 { 0x338, 12 },{ 0x33d, 12 },{ 0xab, 13 },{ 0xf1, 13 },
180 { 0x678, 13 },{ 0xf2, 13 },{ 0x1e0, 14 },{ 0x1e1, 14 },
181 { 0x154, 14 },{ 0xcf2, 14 },{ 0x3cc, 15 },{ 0x2ab, 15 },
182 { 0x19e7, 15 },{ 0x3ce, 15 },{ 0x19e6, 15 },{ 0x554, 16 },
183 { 0x79f, 16 },{ 0x555, 16 },{ 0xf3d, 17 },{ 0xf37, 17 },
184 { 0xf3c, 17 },{ 0xf35, 17 },{ 0x1e6d, 18 },{ 0x1e68, 18 },
185 { 0x3cd8, 19 },{ 0x3cd3, 19 },{ 0x3cd9, 19 },{ 0x79a4, 20 },
186 { 0xf34ba, 25 },{ 0xf34b4, 25 },{ 0xf34b5, 25 },{ 0xf34b6, 25 },
187 { 0xf34b7, 25 },{ 0xf34b8, 25 },{ 0xf34b9, 25 },{ 0xf34bb, 25 },
188 { 0xf34bc, 25 },{ 0xf34bd, 25 },{ 0xf34be, 25 },{ 0xf34bf, 25 },
189 { 0x1e6940, 26 },{ 0x1e6941, 26 },{ 0x1e6942, 26 },{ 0x1e6943, 26 },
190 { 0x1e6944, 26 },{ 0x1e6945, 26 },{ 0x1e6946, 26 },{ 0x1e6947, 26 },
191 { 0x1e6948, 26 },{ 0x1e6949, 26 },{ 0x1e694a, 26 },{ 0x1e694b, 26 },
192 { 0x1e694c, 26 },{ 0x1e694d, 26 },{ 0x1e694e, 26 },{ 0x1e694f, 26 },
193 { 0x1e6950, 26 },{ 0x1e6951, 26 },{ 0x1e6952, 26 },{ 0x1e6953, 26 },
194 { 0x1e6954, 26 },{ 0x1e6955, 26 },{ 0x1e6956, 26 },{ 0x1e6957, 26 },
195 { 0x1e6958, 26 },{ 0x1e6959, 26 },{ 0x1e695a, 26 },{ 0x1e695b, 26 },
196 { 0x1e695c, 26 },{ 0x1e695d, 26 },{ 0x1e695e, 26 },{ 0x1e695f, 26 },
197 { 0x1e6960, 26 },{ 0x1e6961, 26 },{ 0x1e6962, 26 },{ 0x1e6963, 26 },
198 { 0x1e6964, 26 },{ 0x1e6965, 26 },{ 0x1e6966, 26 },{ 0x1e6967, 26 },
199 };
200
201 const uint32_t ff_table1_dc_chroma[120][2] = {
202 { 0x0, 2 },{ 0x1, 2 },{ 0x4, 3 },{ 0x7, 3 },
203 { 0xb, 4 },{ 0xd, 4 },{ 0x15, 5 },{ 0x28, 6 },
204 { 0x30, 6 },{ 0x32, 6 },{ 0x52, 7 },{ 0x62, 7 },
205 { 0x66, 7 },{ 0xa6, 8 },{ 0xc6, 8 },{ 0xcf, 8 },
206 { 0x14f, 9 },{ 0x18e, 9 },{ 0x19c, 9 },{ 0x29d, 10 },
207 { 0x33a, 10 },{ 0x538, 11 },{ 0x63c, 11 },{ 0x63e, 11 },
208 { 0x63f, 11 },{ 0x676, 11 },{ 0xa73, 12 },{ 0xc7a, 12 },
209 { 0xcef, 12 },{ 0x14e5, 13 },{ 0x19dd, 13 },{ 0x29c8, 14 },
210 { 0x29c9, 14 },{ 0x63dd, 15 },{ 0x33b8, 14 },{ 0x33b9, 14 },
211 { 0xc7b6, 16 },{ 0x63d8, 15 },{ 0x63df, 15 },{ 0xc7b3, 16 },
212 { 0xc7b4, 16 },{ 0xc7b5, 16 },{ 0x63de, 15 },{ 0xc7b7, 16 },
213 { 0xc7b8, 16 },{ 0xc7b9, 16 },{ 0x18f65, 17 },{ 0x31ec8, 18 },
214 { 0xc7b248, 24 },{ 0xc7b249, 24 },{ 0xc7b24a, 24 },{ 0xc7b24b, 24 },
215 { 0xc7b24c, 24 },{ 0xc7b24d, 24 },{ 0xc7b24e, 24 },{ 0xc7b24f, 24 },
216 { 0xc7b250, 24 },{ 0xc7b251, 24 },{ 0xc7b252, 24 },{ 0xc7b253, 24 },
217 { 0xc7b254, 24 },{ 0xc7b255, 24 },{ 0xc7b256, 24 },{ 0xc7b257, 24 },
218 { 0xc7b258, 24 },{ 0xc7b259, 24 },{ 0xc7b25a, 24 },{ 0xc7b25b, 24 },
219 { 0xc7b25c, 24 },{ 0xc7b25d, 24 },{ 0xc7b25e, 24 },{ 0xc7b25f, 24 },
220 { 0xc7b260, 24 },{ 0xc7b261, 24 },{ 0xc7b262, 24 },{ 0xc7b263, 24 },
221 { 0xc7b264, 24 },{ 0xc7b265, 24 },{ 0xc7b266, 24 },{ 0xc7b267, 24 },
222 { 0xc7b268, 24 },{ 0xc7b269, 24 },{ 0xc7b26a, 24 },{ 0xc7b26b, 24 },
223 { 0xc7b26c, 24 },{ 0xc7b26d, 24 },{ 0xc7b26e, 24 },{ 0xc7b26f, 24 },
224 { 0xc7b270, 24 },{ 0xc7b271, 24 },{ 0xc7b272, 24 },{ 0xc7b273, 24 },
225 { 0xc7b274, 24 },{ 0xc7b275, 24 },{ 0xc7b276, 24 },{ 0xc7b277, 24 },
226 { 0xc7b278, 24 },{ 0xc7b279, 24 },{ 0xc7b27a, 24 },{ 0xc7b27b, 24 },
227 { 0xc7b27c, 24 },{ 0xc7b27d, 24 },{ 0xc7b27e, 24 },{ 0xc7b27f, 24 },
228 { 0x18f6480, 25 },{ 0x18f6481, 25 },{ 0x18f6482, 25 },{ 0x18f6483, 25 },
229 { 0x18f6484, 25 },{ 0x18f6485, 25 },{ 0x18f6486, 25 },{ 0x18f6487, 25 },
230 { 0x18f6488, 25 },{ 0x18f6489, 25 },{ 0x18f648a, 25 },{ 0x18f648b, 25 },
231 { 0x18f648c, 25 },{ 0x18f648d, 25 },{ 0x18f648e, 25 },{ 0x18f648f, 25 },
232 };
233
234 /* vlc table 0, for intra luma */
235
236 static const uint16_t table0_vlc[133][2] = {
237 { 0x1, 2 },{ 0x6, 3 },{ 0xf, 4 },{ 0x16, 5 },
238 { 0x20, 6 },{ 0x18, 7 },{ 0x8, 8 },{ 0x9a, 8 },
239 { 0x56, 9 },{ 0x13e, 9 },{ 0xf0, 10 },{ 0x3a5, 10 },
240 { 0x77, 11 },{ 0x1ef, 11 },{ 0x9a, 12 },{ 0x5d, 13 },
241 { 0x1, 4 },{ 0x11, 5 },{ 0x2, 7 },{ 0xb, 8 },
242 { 0x12, 9 },{ 0x1d6, 9 },{ 0x27e, 10 },{ 0x191, 11 },
243 { 0xea, 12 },{ 0x3dc, 12 },{ 0x13b, 13 },{ 0x4, 5 },
244 { 0x14, 7 },{ 0x9e, 8 },{ 0x9, 10 },{ 0x1ac, 11 },
245 { 0x1e2, 11 },{ 0x3ca, 12 },{ 0x5f, 13 },{ 0x17, 5 },
246 { 0x4e, 7 },{ 0x5e, 9 },{ 0xf3, 10 },{ 0x1ad, 11 },
247 { 0xec, 12 },{ 0x5f0, 13 },{ 0xe, 6 },{ 0xe1, 8 },
248 { 0x3a4, 10 },{ 0x9c, 12 },{ 0x13d, 13 },{ 0x3b, 6 },
249 { 0x1c, 9 },{ 0x14, 11 },{ 0x9be, 12 },{ 0x6, 7 },
250 { 0x7a, 9 },{ 0x190, 11 },{ 0x137, 13 },{ 0x1b, 7 },
251 { 0x8, 10 },{ 0x75c, 11 },{ 0x71, 7 },{ 0xd7, 10 },
252 { 0x9bf, 12 },{ 0x7, 8 },{ 0xaf, 10 },{ 0x4cc, 11 },
253 { 0x34, 8 },{ 0x265, 10 },{ 0x9f, 12 },{ 0xe0, 8 },
254 { 0x16, 11 },{ 0x327, 12 },{ 0x15, 9 },{ 0x17d, 11 },
255 { 0xebb, 12 },{ 0x14, 9 },{ 0xf6, 10 },{ 0x1e4, 11 },
256 { 0xcb, 10 },{ 0x99d, 12 },{ 0xca, 10 },{ 0x2fc, 12 },
257 { 0x17f, 11 },{ 0x4cd, 11 },{ 0x2fd, 12 },{ 0x4fe, 11 },
258 { 0x13a, 13 },{ 0xa, 4 },{ 0x42, 7 },{ 0x1d3, 9 },
259 { 0x4dd, 11 },{ 0x12, 5 },{ 0xe8, 8 },{ 0x4c, 11 },
260 { 0x136, 13 },{ 0x39, 6 },{ 0x264, 10 },{ 0xeba, 12 },
261 { 0x0, 7 },{ 0xae, 10 },{ 0x99c, 12 },{ 0x1f, 7 },
262 { 0x4de, 11 },{ 0x43, 7 },{ 0x4dc, 11 },{ 0x3, 8 },
263 { 0x3cb, 12 },{ 0x6, 8 },{ 0x99e, 12 },{ 0x2a, 8 },
264 { 0x5f1, 13 },{ 0xf, 8 },{ 0x9fe, 12 },{ 0x33, 8 },
265 { 0x9ff, 12 },{ 0x98, 8 },{ 0x99f, 12 },{ 0xea, 8 },
266 { 0x13c, 13 },{ 0x2e, 8 },{ 0x192, 11 },{ 0x136, 9 },
267 { 0x6a, 9 },{ 0x15, 11 },{ 0x3af, 10 },{ 0x1e3, 11 },
268 { 0x74, 11 },{ 0xeb, 12 },{ 0x2f9, 12 },{ 0x5c, 13 },
269 { 0xed, 12 },{ 0x3dd, 12 },{ 0x326, 12 },{ 0x5e, 13 },
270 { 0x16, 7 },
271 };
272
273 static const int8_t table0_level[132] = {
274 1, 2, 3, 4, 5, 6, 7, 8,
275 9, 10, 11, 12, 13, 14, 15, 16,
276 1, 2, 3, 4, 5, 6, 7, 8,
277 9, 10, 11, 1, 2, 3, 4, 5,
278 6, 7, 8, 1, 2, 3, 4, 5,
279 6, 7, 1, 2, 3, 4, 5, 1,
280 2, 3, 4, 1, 2, 3, 4, 1,
281 2, 3, 1, 2, 3, 1, 2, 3,
282 1, 2, 3, 1, 2, 3, 1, 2,
283 3, 1, 2, 3, 1, 2, 1, 2,
284 1, 1, 1, 1, 1, 1, 2, 3,
285 4, 1, 2, 3, 4, 1, 2, 3,
286 1, 2, 3, 1, 2, 1, 2, 1,
287 2, 1, 2, 1, 2, 1, 2, 1,
288 2, 1, 2, 1, 2, 1, 2, 1,
289 1, 1, 1, 1, 1, 1, 1, 1,
290 1, 1, 1, 1,
291 };
292
293 static const int8_t table0_run[132] = {
294 0, 0, 0, 0, 0, 0, 0, 0,
295 0, 0, 0, 0, 0, 0, 0, 0,
296 1, 1, 1, 1, 1, 1, 1, 1,
297 1, 1, 1, 2, 2, 2, 2, 2,
298 2, 2, 2, 3, 3, 3, 3, 3,
299 3, 3, 4, 4, 4, 4, 4, 5,
300 5, 5, 5, 6, 6, 6, 6, 7,
301 7, 7, 8, 8, 8, 9, 9, 9,
302 10, 10, 10, 11, 11, 11, 12, 12,
303 12, 13, 13, 13, 14, 14, 15, 15,
304 16, 17, 18, 19, 20, 0, 0, 0,
305 0, 1, 1, 1, 1, 2, 2, 2,
306 3, 3, 3, 4, 4, 5, 5, 6,
307 6, 7, 7, 8, 8, 9, 9, 10,
308 10, 11, 11, 12, 12, 13, 13, 14,
309 15, 16, 17, 18, 19, 20, 21, 22,
310 23, 24, 25, 26,
311 };
312
313 /* vlc table 1, for intra chroma and P macroblocks */
314
315 static const uint16_t table1_vlc[149][2] = {
316 { 0x4, 3 },{ 0x14, 5 },{ 0x17, 7 },{ 0x7f, 8 },
317 { 0x154, 9 },{ 0x1f2, 10 },{ 0xbf, 11 },{ 0x65, 12 },
318 { 0xaaa, 12 },{ 0x630, 13 },{ 0x1597, 13 },{ 0x3b7, 14 },
319 { 0x2b22, 14 },{ 0xbe6, 15 },{ 0xb, 4 },{ 0x37, 7 },
320 { 0x62, 9 },{ 0x7, 11 },{ 0x166, 12 },{ 0xce, 13 },
321 { 0x1590, 13 },{ 0x5f6, 14 },{ 0xbe7, 15 },{ 0x7, 5 },
322 { 0x6d, 8 },{ 0x3, 11 },{ 0x31f, 12 },{ 0x5f2, 14 },
323 { 0x2, 6 },{ 0x61, 9 },{ 0x55, 12 },{ 0x1df, 14 },
324 { 0x1a, 6 },{ 0x1e, 10 },{ 0xac9, 12 },{ 0x2b23, 14 },
325 { 0x1e, 6 },{ 0x1f, 10 },{ 0xac3, 12 },{ 0x2b2b, 14 },
326 { 0x6, 7 },{ 0x4, 11 },{ 0x2f8, 13 },{ 0x19, 7 },
327 { 0x6, 11 },{ 0x63d, 13 },{ 0x57, 7 },{ 0x182, 11 },
328 { 0x2aa2, 14 },{ 0x4, 8 },{ 0x180, 11 },{ 0x59c, 14 },
329 { 0x7d, 8 },{ 0x164, 12 },{ 0x76d, 15 },{ 0x2, 9 },
330 { 0x18d, 11 },{ 0x1581, 13 },{ 0xad, 8 },{ 0x60, 12 },
331 { 0xc67, 14 },{ 0x1c, 9 },{ 0xee, 13 },{ 0x3, 9 },
332 { 0x2cf, 13 },{ 0xd9, 9 },{ 0x1580, 13 },{ 0x2, 11 },
333 { 0x183, 11 },{ 0x57, 12 },{ 0x61, 12 },{ 0x31, 11 },
334 { 0x66, 12 },{ 0x631, 13 },{ 0x632, 13 },{ 0xac, 13 },
335 { 0x31d, 12 },{ 0x76, 12 },{ 0x3a, 11 },{ 0x165, 12 },
336 { 0xc66, 14 },{ 0x3, 2 },{ 0x54, 7 },{ 0x2ab, 10 },
337 { 0x16, 13 },{ 0x5f7, 14 },{ 0x5, 4 },{ 0xf8, 9 },
338 { 0xaa9, 12 },{ 0x5f, 15 },{ 0x4, 4 },{ 0x1c, 10 },
339 { 0x1550, 13 },{ 0x4, 5 },{ 0x77, 11 },{ 0x76c, 15 },
340 { 0xe, 5 },{ 0xa, 12 },{ 0xc, 5 },{ 0x562, 11 },
341 { 0x4, 6 },{ 0x31c, 12 },{ 0x6, 6 },{ 0xc8, 13 },
342 { 0xd, 6 },{ 0x1da, 13 },{ 0x7, 6 },{ 0xc9, 13 },
343 { 0x1, 7 },{ 0x2e, 14 },{ 0x14, 7 },{ 0x1596, 13 },
344 { 0xa, 7 },{ 0xac2, 12 },{ 0x16, 7 },{ 0x15b, 14 },
345 { 0x15, 7 },{ 0x15a, 14 },{ 0xf, 8 },{ 0x5e, 15 },
346 { 0x7e, 8 },{ 0xab, 8 },{ 0x2d, 9 },{ 0xd8, 9 },
347 { 0xb, 9 },{ 0x14, 10 },{ 0x2b3, 10 },{ 0x1f3, 10 },
348 { 0x3a, 10 },{ 0x0, 10 },{ 0x58, 10 },{ 0x2e, 9 },
349 { 0x5e, 10 },{ 0x563, 11 },{ 0xec, 12 },{ 0x54, 12 },
350 { 0xac1, 12 },{ 0x1556, 13 },{ 0x2fa, 13 },{ 0x181, 11 },
351 { 0x1557, 13 },{ 0x59d, 14 },{ 0x2aa3, 14 },{ 0x2b2a, 14 },
352 { 0x1de, 14 },{ 0x63c, 13 },{ 0xcf, 13 },{ 0x1594, 13 },
353 { 0xd, 9 },
354 };
355
356 static const int8_t table1_level[148] = {
357 1, 2, 3, 4, 5, 6, 7, 8,
358 9, 10, 11, 12, 13, 14, 1, 2,
359 3, 4, 5, 6, 7, 8, 9, 1,
360 2, 3, 4, 5, 1, 2, 3, 4,
361 1, 2, 3, 4, 1, 2, 3, 4,
362 1, 2, 3, 1, 2, 3, 1, 2,
363 3, 1, 2, 3, 1, 2, 3, 1,
364 2, 3, 1, 2, 3, 1, 2, 1,
365 2, 1, 2, 1, 1, 1, 1, 1,
366 1, 1, 1, 1, 1, 1, 1, 1,
367 1, 1, 2, 3, 4, 5, 1, 2,
368 3, 4, 1, 2, 3, 1, 2, 3,
369 1, 2, 1, 2, 1, 2, 1, 2,
370 1, 2, 1, 2, 1, 2, 1, 2,
371 1, 2, 1, 2, 1, 2, 1, 2,
372 1, 1, 1, 1, 1, 1, 1, 1,
373 1, 1, 1, 1, 1, 1, 1, 1,
374 1, 1, 1, 1, 1, 1, 1, 1,
375 1, 1, 1, 1,
376 };
377
378 static const int8_t table1_run[148] = {
379 0, 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 1, 1,
381 1, 1, 1, 1, 1, 1, 1, 2,
382 2, 2, 2, 2, 3, 3, 3, 3,
383 4, 4, 4, 4, 5, 5, 5, 5,
384 6, 6, 6, 7, 7, 7, 8, 8,
385 8, 9, 9, 9, 10, 10, 10, 11,
386 11, 11, 12, 12, 12, 13, 13, 14,
387 14, 15, 15, 16, 17, 18, 19, 20,
388 21, 22, 23, 24, 25, 26, 27, 28,
389 29, 0, 0, 0, 0, 0, 1, 1,
390 1, 1, 2, 2, 2, 3, 3, 3,
391 4, 4, 5, 5, 6, 6, 7, 7,
392 8, 8, 9, 9, 10, 10, 11, 11,
393 12, 12, 13, 13, 14, 14, 15, 15,
394 16, 17, 18, 19, 20, 21, 22, 23,
395 24, 25, 26, 27, 28, 29, 30, 31,
396 32, 33, 34, 35, 36, 37, 38, 39,
397 40, 41, 42, 43,
398 };
399
400 /* third vlc table */
401
402 static const uint16_t table2_vlc[186][2] = {
403 { 0x1, 2 },{ 0x5, 3 },{ 0xd, 4 },{ 0x12, 5 },
404 { 0xe, 6 },{ 0x15, 7 },{ 0x13, 8 },{ 0x3f, 8 },
405 { 0x4b, 9 },{ 0x11f, 9 },{ 0xb8, 10 },{ 0x3e3, 10 },
406 { 0x172, 11 },{ 0x24d, 12 },{ 0x3da, 12 },{ 0x2dd, 13 },
407 { 0x1f55, 13 },{ 0x5b9, 14 },{ 0x3eae, 14 },{ 0x0, 4 },
408 { 0x10, 5 },{ 0x8, 7 },{ 0x20, 8 },{ 0x29, 9 },
409 { 0x1f4, 9 },{ 0x233, 10 },{ 0x1e0, 11 },{ 0x12a, 12 },
410 { 0x3dd, 12 },{ 0x50a, 13 },{ 0x1f29, 13 },{ 0xa42, 14 },
411 { 0x1272, 15 },{ 0x1737, 15 },{ 0x3, 5 },{ 0x11, 7 },
412 { 0xc4, 8 },{ 0x4b, 10 },{ 0xb4, 11 },{ 0x7d4, 11 },
413 { 0x345, 12 },{ 0x2d7, 13 },{ 0x7bf, 13 },{ 0x938, 14 },
414 { 0xbbb, 14 },{ 0x95e, 15 },{ 0x13, 5 },{ 0x78, 7 },
415 { 0x69, 9 },{ 0x232, 10 },{ 0x461, 11 },{ 0x3ec, 12 },
416 { 0x520, 13 },{ 0x1f2a, 13 },{ 0x3e50, 14 },{ 0x3e51, 14 },
417 { 0x1486, 15 },{ 0xc, 6 },{ 0x24, 9 },{ 0x94, 11 },
418 { 0x8c0, 12 },{ 0xf09, 14 },{ 0x1ef0, 15 },{ 0x3d, 6 },
419 { 0x53, 9 },{ 0x1a0, 11 },{ 0x2d6, 13 },{ 0xf08, 14 },
420 { 0x13, 7 },{ 0x7c, 9 },{ 0x7c1, 11 },{ 0x4ac, 14 },
421 { 0x1b, 7 },{ 0xa0, 10 },{ 0x344, 12 },{ 0xf79, 14 },
422 { 0x79, 7 },{ 0x3e1, 10 },{ 0x2d4, 13 },{ 0x2306, 14 },
423 { 0x21, 8 },{ 0x23c, 10 },{ 0xfae, 12 },{ 0x23de, 14 },
424 { 0x35, 8 },{ 0x175, 11 },{ 0x7b3, 13 },{ 0xc5, 8 },
425 { 0x174, 11 },{ 0x785, 13 },{ 0x48, 9 },{ 0x1a3, 11 },
426 { 0x49e, 13 },{ 0x2c, 9 },{ 0xfa, 10 },{ 0x7d6, 11 },
427 { 0x92, 10 },{ 0x5cc, 13 },{ 0x1ef1, 15 },{ 0xa3, 10 },
428 { 0x3ed, 12 },{ 0x93e, 14 },{ 0x1e2, 11 },{ 0x1273, 15 },
429 { 0x7c4, 11 },{ 0x1487, 15 },{ 0x291, 12 },{ 0x293, 12 },
430 { 0xf8a, 12 },{ 0x509, 13 },{ 0x508, 13 },{ 0x78d, 13 },
431 { 0x7be, 13 },{ 0x78c, 13 },{ 0x4ae, 14 },{ 0xbba, 14 },
432 { 0x2307, 14 },{ 0xb9a, 14 },{ 0x1736, 15 },{ 0xe, 4 },
433 { 0x45, 7 },{ 0x1f3, 9 },{ 0x47a, 11 },{ 0x5dc, 13 },
434 { 0x23df, 14 },{ 0x19, 5 },{ 0x28, 9 },{ 0x176, 11 },
435 { 0x49d, 13 },{ 0x23dd, 14 },{ 0x30, 6 },{ 0xa2, 10 },
436 { 0x2ef, 12 },{ 0x5b8, 14 },{ 0x3f, 6 },{ 0xa5, 10 },
437 { 0x3db, 12 },{ 0x93f, 14 },{ 0x44, 7 },{ 0x7cb, 11 },
438 { 0x95f, 15 },{ 0x63, 7 },{ 0x3c3, 12 },{ 0x15, 8 },
439 { 0x8f6, 12 },{ 0x17, 8 },{ 0x498, 13 },{ 0x2c, 8 },
440 { 0x7b2, 13 },{ 0x2f, 8 },{ 0x1f54, 13 },{ 0x8d, 8 },
441 { 0x7bd, 13 },{ 0x8e, 8 },{ 0x1182, 13 },{ 0xfb, 8 },
442 { 0x50b, 13 },{ 0x2d, 8 },{ 0x7c0, 11 },{ 0x79, 9 },
443 { 0x1f5f, 13 },{ 0x7a, 9 },{ 0x1f56, 13 },{ 0x231, 10 },
444 { 0x3e4, 10 },{ 0x1a1, 11 },{ 0x143, 11 },{ 0x1f7, 11 },
445 { 0x16f, 12 },{ 0x292, 12 },{ 0x2e7, 12 },{ 0x16c, 12 },
446 { 0x16d, 12 },{ 0x3dc, 12 },{ 0xf8b, 12 },{ 0x499, 13 },
447 { 0x3d8, 12 },{ 0x78e, 13 },{ 0x2d5, 13 },{ 0x1f5e, 13 },
448 { 0x1f2b, 13 },{ 0x78f, 13 },{ 0x4ad, 14 },{ 0x3eaf, 14 },
449 { 0x23dc, 14 },{ 0x4a, 9 },
450 };
451
452 static const int8_t table2_level[185] = {
453 1, 2, 3, 4, 5, 6, 7, 8,
454 9, 10, 11, 12, 13, 14, 15, 16,
455 17, 18, 19, 1, 2, 3, 4, 5,
456 6, 7, 8, 9, 10, 11, 12, 13,
457 14, 15, 1, 2, 3, 4, 5, 6,
458 7, 8, 9, 10, 11, 12, 1, 2,
459 3, 4, 5, 6, 7, 8, 9, 10,
460 11, 1, 2, 3, 4, 5, 6, 1,
461 2, 3, 4, 5, 1, 2, 3, 4,
462 1, 2, 3, 4, 1, 2, 3, 4,
463 1, 2, 3, 4, 1, 2, 3, 1,
464 2, 3, 1, 2, 3, 1, 2, 3,
465 1, 2, 3, 1, 2, 3, 1, 2,
466 1, 2, 1, 1, 1, 1, 1, 1,
467 1, 1, 1, 1, 1, 1, 1, 1,
468 2, 3, 4, 5, 6, 1, 2, 3,
469 4, 5, 1, 2, 3, 4, 1, 2,
470 3, 4, 1, 2, 3, 1, 2, 1,
471 2, 1, 2, 1, 2, 1, 2, 1,
472 2, 1, 2, 1, 2, 1, 2, 1,
473 2, 1, 2, 1, 1, 1, 1, 1,
474 1, 1, 1, 1, 1, 1, 1, 1,
475 1, 1, 1, 1, 1, 1, 1, 1,
476 1,
477 };
478
479 static const int8_t table2_run[185] = {
480 0, 0, 0, 0, 0, 0, 0, 0,
481 0, 0, 0, 0, 0, 0, 0, 0,
482 0, 0, 0, 1, 1, 1, 1, 1,
483 1, 1, 1, 1, 1, 1, 1, 1,
484 1, 1, 2, 2, 2, 2, 2, 2,
485 2, 2, 2, 2, 2, 2, 3, 3,
486 3, 3, 3, 3, 3, 3, 3, 3,
487 3, 4, 4, 4, 4, 4, 4, 5,
488 5, 5, 5, 5, 6, 6, 6, 6,
489 7, 7, 7, 7, 8, 8, 8, 8,
490 9, 9, 9, 9, 10, 10, 10, 11,
491 11, 11, 12, 12, 12, 13, 13, 13,
492 14, 14, 14, 15, 15, 15, 16, 16,
493 17, 17, 18, 19, 20, 21, 22, 23,
494 24, 25, 26, 27, 28, 29, 30, 0,
495 0, 0, 0, 0, 0, 1, 1, 1,
496 1, 1, 2, 2, 2, 2, 3, 3,
497 3, 3, 4, 4, 4, 5, 5, 6,
498 6, 7, 7, 8, 8, 9, 9, 10,
499 10, 11, 11, 12, 12, 13, 13, 14,
500 14, 15, 15, 16, 17, 18, 19, 20,
501 21, 22, 23, 24, 25, 26, 27, 28,
502 29, 30, 31, 32, 33, 34, 35, 36,
503 37,
504 };
505
506 /* second non intra vlc table */
507 static const uint16_t table4_vlc[169][2] = {
508 { 0x0, 3 },{ 0x3, 4 },{ 0xb, 5 },{ 0x14, 6 },
509 { 0x3f, 6 },{ 0x5d, 7 },{ 0xa2, 8 },{ 0xac, 9 },
510 { 0x16e, 9 },{ 0x20a, 10 },{ 0x2e2, 10 },{ 0x432, 11 },
511 { 0x5c9, 11 },{ 0x827, 12 },{ 0xb54, 12 },{ 0x4e6, 13 },
512 { 0x105f, 13 },{ 0x172a, 13 },{ 0x20b2, 14 },{ 0x2d4e, 14 },
513 { 0x39f0, 14 },{ 0x4175, 15 },{ 0x5a9e, 15 },{ 0x4, 4 },
514 { 0x1e, 5 },{ 0x42, 7 },{ 0xb6, 8 },{ 0x173, 9 },
515 { 0x395, 10 },{ 0x72e, 11 },{ 0xb94, 12 },{ 0x16a4, 13 },
516 { 0x20b3, 14 },{ 0x2e45, 14 },{ 0x5, 5 },{ 0x40, 7 },
517 { 0x49, 9 },{ 0x28f, 10 },{ 0x5cb, 11 },{ 0x48a, 13 },
518 { 0x9dd, 14 },{ 0x73e2, 15 },{ 0x18, 5 },{ 0x25, 8 },
519 { 0x8a, 10 },{ 0x51b, 11 },{ 0xe5f, 12 },{ 0x9c9, 14 },
520 { 0x139c, 15 },{ 0x29, 6 },{ 0x4f, 9 },{ 0x412, 11 },
521 { 0x48d, 13 },{ 0x2e41, 14 },{ 0x38, 6 },{ 0x10e, 9 },
522 { 0x5a8, 11 },{ 0x105c, 13 },{ 0x39f2, 14 },{ 0x58, 7 },
523 { 0x21f, 10 },{ 0xe7e, 12 },{ 0x39ff, 14 },{ 0x23, 8 },
524 { 0x2e3, 10 },{ 0x4e5, 13 },{ 0x2e40, 14 },{ 0xa1, 8 },
525 { 0x5be, 11 },{ 0x9c8, 14 },{ 0x83, 8 },{ 0x13a, 11 },
526 { 0x1721, 13 },{ 0x44, 9 },{ 0x276, 12 },{ 0x39f6, 14 },
527 { 0x8b, 10 },{ 0x4ef, 13 },{ 0x5a9b, 15 },{ 0x208, 10 },
528 { 0x1cfe, 13 },{ 0x399, 10 },{ 0x1cb4, 13 },{ 0x39e, 10 },
529 { 0x39f3, 14 },{ 0x5ab, 11 },{ 0x73e3, 15 },{ 0x737, 11 },
530 { 0x5a9f, 15 },{ 0x82d, 12 },{ 0xe69, 12 },{ 0xe68, 12 },
531 { 0x433, 11 },{ 0xb7b, 12 },{ 0x2df8, 14 },{ 0x2e56, 14 },
532 { 0x2e57, 14 },{ 0x39f7, 14 },{ 0x51a5, 15 },{ 0x3, 3 },
533 { 0x2a, 6 },{ 0xe4, 8 },{ 0x28e, 10 },{ 0x735, 11 },
534 { 0x1058, 13 },{ 0x1cfa, 13 },{ 0x2df9, 14 },{ 0x4174, 15 },
535 { 0x9, 4 },{ 0x54, 8 },{ 0x398, 10 },{ 0x48b, 13 },
536 { 0x139d, 15 },{ 0xd, 4 },{ 0xad, 9 },{ 0x826, 12 },
537 { 0x2d4c, 14 },{ 0x11, 5 },{ 0x16b, 9 },{ 0xb7f, 12 },
538 { 0x51a4, 15 },{ 0x19, 5 },{ 0x21b, 10 },{ 0x16fd, 13 },
539 { 0x1d, 5 },{ 0x394, 10 },{ 0x28d3, 14 },{ 0x2b, 6 },
540 { 0x5bc, 11 },{ 0x5a9a, 15 },{ 0x2f, 6 },{ 0x247, 12 },
541 { 0x10, 7 },{ 0xa35, 12 },{ 0x3e, 6 },{ 0xb7a, 12 },
542 { 0x59, 7 },{ 0x105e, 13 },{ 0x26, 8 },{ 0x9cf, 14 },
543 { 0x55, 8 },{ 0x1cb5, 13 },{ 0x57, 8 },{ 0xe5b, 12 },
544 { 0xa0, 8 },{ 0x1468, 13 },{ 0x170, 9 },{ 0x90, 10 },
545 { 0x1ce, 9 },{ 0x21a, 10 },{ 0x218, 10 },{ 0x168, 9 },
546 { 0x21e, 10 },{ 0x244, 12 },{ 0x736, 11 },{ 0x138, 11 },
547 { 0x519, 11 },{ 0xe5e, 12 },{ 0x72c, 11 },{ 0xb55, 12 },
548 { 0x9dc, 14 },{ 0x20bb, 14 },{ 0x48c, 13 },{ 0x1723, 13 },
549 { 0x2e44, 14 },{ 0x16a5, 13 },{ 0x518, 11 },{ 0x39fe, 14 },
550 { 0x169, 9 },
551 };
552
553 static const int8_t table4_level[168] = {
554 1, 2, 3, 4, 5, 6, 7, 8,
555 9, 10, 11, 12, 13, 14, 15, 16,
556 17, 18, 19, 20, 21, 22, 23, 1,
557 2, 3, 4, 5, 6, 7, 8, 9,
558 10, 11, 1, 2, 3, 4, 5, 6,
559 7, 8, 1, 2, 3, 4, 5, 6,
560 7, 1, 2, 3, 4, 5, 1, 2,
561 3, 4, 5, 1, 2, 3, 4, 1,
562 2, 3, 4, 1, 2, 3, 1, 2,
563 3, 1, 2, 3, 1, 2, 3, 1,
564 2, 1, 2, 1, 2, 1, 2, 1,
565 2, 1, 1, 1, 1, 1, 1, 1,
566 1, 1, 1, 1, 2, 3, 4, 5,
567 6, 7, 8, 9, 1, 2, 3, 4,
568 5, 1, 2, 3, 4, 1, 2, 3,
569 4, 1, 2, 3, 1, 2, 3, 1,
570 2, 3, 1, 2, 1, 2, 1, 2,
571 1, 2, 1, 2, 1, 2, 1, 2,
572 1, 2, 1, 1, 1, 1, 1, 1,
573 1, 1, 1, 1, 1, 1, 1, 1,
574 1, 1, 1, 1, 1, 1, 1, 1,
575 };
576
577 static const int8_t table4_run[168] = {
578 0, 0, 0, 0, 0, 0, 0, 0,
579 0, 0, 0, 0, 0, 0, 0, 0,
580 0, 0, 0, 0, 0, 0, 0, 1,
581 1, 1, 1, 1, 1, 1, 1, 1,
582 1, 1, 2, 2, 2, 2, 2, 2,
583 2, 2, 3, 3, 3, 3, 3, 3,
584 3, 4, 4, 4, 4, 4, 5, 5,
585 5, 5, 5, 6, 6, 6, 6, 7,
586 7, 7, 7, 8, 8, 8, 9, 9,
587 9, 10, 10, 10, 11, 11, 11, 12,
588 12, 13, 13, 14, 14, 15, 15, 16,
589 16, 17, 18, 19, 20, 21, 22, 23,
590 24, 25, 26, 0, 0, 0, 0, 0,
591 0, 0, 0, 0, 1, 1, 1, 1,
592 1, 2, 2, 2, 2, 3, 3, 3,
593 3, 4, 4, 4, 5, 5, 5, 6,
594 6, 6, 7, 7, 8, 8, 9, 9,
595 10, 10, 11, 11, 12, 12, 13, 13,
596 14, 14, 15, 16, 17, 18, 19, 20,
597 21, 22, 23, 24, 25, 26, 27, 28,
598 29, 30, 31, 32, 33, 34, 35, 36,
599 };
600
601 RLTable ff_rl_table[NB_RL_TABLES] = {
602 /* intra luminance tables */
603 /* low motion */
604 {
605 132,
606 85,
607 table0_vlc,
608 table0_run,
609 table0_level,
610 },
611 /* high motion */
612 {
613 185,
614 119,
615 table2_vlc,
616 table2_run,
617 table2_level,
618 },
619 /* mid-rate */
620 {
621 102,
622 67,
623 ff_mpeg4_intra_vlc,
624 ff_mpeg4_intra_run,
625 ff_mpeg4_intra_level,
626 },
627 /* intra chrominance / non intra tables */
628 /* low motion inter */
629 {
630 148,
631 81,
632 table1_vlc,
633 table1_run,
634 table1_level,
635 },
636 /* high motion inter */
637 {
638 168,
639 99,
640 table4_vlc,
641 table4_run,
642 table4_level,
643 },
644 /* mid rate inter */
645 {
646 102,
647 58,
648 ff_inter_vlc,
649 ff_inter_run,
650 ff_inter_level,
651 },
652 };
653
654 /* motion vector table 0 */
655
656 static const uint16_t table0_mv_code[1100] = {
657 0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001,
658 0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f,
659 0x0014, 0x0020, 0x0022, 0x0025, 0x0027, 0x0029, 0x002d, 0x004b,
660 0x004d, 0x0003, 0x0022, 0x0023, 0x0025, 0x0027, 0x0042, 0x0048,
661 0x0049, 0x0050, 0x005c, 0x0091, 0x009f, 0x000e, 0x0043, 0x004c,
662 0x0054, 0x0056, 0x008c, 0x0098, 0x009a, 0x009b, 0x00b1, 0x00b2,
663 0x0120, 0x0121, 0x0126, 0x0133, 0x0139, 0x01a1, 0x01a4, 0x01a5,
664 0x01a6, 0x01a7, 0x01ae, 0x01af, 0x000b, 0x0019, 0x0085, 0x0090,
665 0x009b, 0x00aa, 0x00af, 0x010c, 0x010e, 0x011c, 0x011e, 0x0133,
666 0x0144, 0x0160, 0x0174, 0x0175, 0x0177, 0x0178, 0x0249, 0x024b,
667 0x0252, 0x0261, 0x0265, 0x0270, 0x0352, 0x0353, 0x0355, 0x0359,
668 0x0010, 0x0011, 0x0013, 0x0034, 0x0035, 0x0036, 0x0037, 0x003d,
669 0x003e, 0x0109, 0x0126, 0x0156, 0x021a, 0x021e, 0x023a, 0x023e,
670 0x028e, 0x028f, 0x02cf, 0x0491, 0x0494, 0x049f, 0x04a0, 0x04a3,
671 0x04a6, 0x04a7, 0x04ad, 0x04ae, 0x04c0, 0x04c4, 0x04c6, 0x04c8,
672 0x04c9, 0x04f5, 0x04f6, 0x04f7, 0x0680, 0x0682, 0x0683, 0x0688,
673 0x0689, 0x068d, 0x068e, 0x068f, 0x06a2, 0x06a3, 0x06a9, 0x06b0,
674 0x06b1, 0x06b4, 0x06b5, 0x0024, 0x0060, 0x0063, 0x0078, 0x0079,
675 0x0211, 0x0244, 0x0245, 0x0247, 0x0248, 0x0249, 0x024a, 0x024b,
676 0x026b, 0x02af, 0x02b8, 0x02bb, 0x0436, 0x0476, 0x0477, 0x047e,
677 0x04c8, 0x04c9, 0x04ca, 0x0514, 0x0586, 0x0587, 0x0598, 0x059d,
678 0x05d9, 0x05da, 0x0920, 0x0921, 0x093b, 0x093c, 0x093d, 0x0942,
679 0x0943, 0x0944, 0x0945, 0x0959, 0x095e, 0x095f, 0x0982, 0x0983,
680 0x098e, 0x098f, 0x09c4, 0x09e7, 0x09e8, 0x09e9, 0x0d02, 0x0d17,
681 0x0d18, 0x0d19, 0x0d41, 0x0d42, 0x0d43, 0x0d50, 0x0d5f, 0x0d6d,
682 0x0d6e, 0x0d6f, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
683 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x041e, 0x041f, 0x0420, 0x0421,
684 0x048c, 0x048d, 0x04d3, 0x04d4, 0x04d5, 0x055c, 0x055d, 0x0572,
685 0x0573, 0x0574, 0x0575, 0x08de, 0x08df, 0x08fe, 0x08ff, 0x0996,
686 0x0a36, 0x0a37, 0x0b08, 0x0b09, 0x0b0a, 0x0b0b, 0x0b32, 0x0b33,
687 0x0b34, 0x0b35, 0x0b36, 0x0b37, 0x0b38, 0x0b39, 0x0bb0, 0x0bf7,
688 0x0bf8, 0x0bf9, 0x0bfa, 0x0bfb, 0x0bfc, 0x0bfd, 0x0bfe, 0x0bff,
689 0x1254, 0x1255, 0x1256, 0x1257, 0x1270, 0x1271, 0x1272, 0x1273,
690 0x1274, 0x1275, 0x12ab, 0x12ac, 0x12ad, 0x12ae, 0x12af, 0x12b0,
691 0x12b1, 0x1315, 0x1316, 0x1317, 0x13bf, 0x13c0, 0x13c1, 0x13c2,
692 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca,
693 0x13cb, 0x13cc, 0x13cd, 0x1a06, 0x1a07, 0x1a28, 0x1a29, 0x1a2a,
694 0x1a2b, 0x1a2c, 0x1a2d, 0x1a80, 0x1abb, 0x1abc, 0x1abd, 0x1ad8,
695 0x1ad9, 0x0094, 0x0095, 0x0096, 0x0097, 0x00a0, 0x00a1, 0x00a2,
696 0x00a3, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, 0x0837,
697 0x0838, 0x0839, 0x083a, 0x083b, 0x0939, 0x093a, 0x093b, 0x093c,
698 0x093d, 0x093e, 0x093f, 0x09a0, 0x09a1, 0x09a2, 0x09a3, 0x09a4,
699 0x09a5, 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2,
700 0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba,
701 0x11bb, 0x132f, 0x1454, 0x1455, 0x1456, 0x1457, 0x1458, 0x1459,
702 0x145a, 0x145b, 0x145c, 0x145d, 0x145e, 0x145f, 0x1460, 0x1461,
703 0x1462, 0x1463, 0x1464, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469,
704 0x146a, 0x146b, 0x17de, 0x17df, 0x17e0, 0x17e1, 0x17e2, 0x17e3,
705 0x17e4, 0x17e5, 0x17e6, 0x17e7, 0x17e8, 0x17e9, 0x17ea, 0x17eb,
706 0x17ec, 0x17ed, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545,
707 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d,
708 0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555,
709 0x2628, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
710 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2772, 0x2773, 0x2774,
711 0x2775, 0x2776, 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c,
712 0x277d, 0x3503, 0x3544, 0x3545, 0x3546, 0x3547, 0x3560, 0x3561,
713 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568, 0x3569,
714 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570, 0x3571,
715 0x3572, 0x3573, 0x3574, 0x3575, 0x03f0, 0x103d, 0x103e, 0x103f,
716 0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047,
717 0x1048, 0x1049, 0x104a, 0x104b, 0x104c, 0x104d, 0x104e, 0x104f,
718 0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057,
719 0x1058, 0x1059, 0x105a, 0x105b, 0x105c, 0x105d, 0x105e, 0x105f,
720 0x1060, 0x1061, 0x1270, 0x1271, 0x21b8, 0x21b9, 0x21ba, 0x21bb,
721 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x21f0, 0x21f1, 0x21f2, 0x21f3,
722 0x21f4, 0x21f5, 0x21f6, 0x21f7, 0x21f8, 0x21f9, 0x21fa, 0x21fb,
723 0x21fc, 0x21fd, 0x21fe, 0x21ff, 0x2340, 0x2341, 0x2342, 0x2343,
724 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b,
725 0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353,
726 0x2354, 0x2355, 0x2356, 0x2357, 0x265c, 0x2f88, 0x2f89, 0x2f8a,
727 0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f, 0x2f90, 0x2f91, 0x2f92,
728 0x2f93, 0x2f94, 0x2f95, 0x2f96, 0x2f97, 0x2f98, 0x2f99, 0x2f9a,
729 0x2f9b, 0x2f9c, 0x2f9d, 0x2f9e, 0x2f9f, 0x2fa0, 0x2fa1, 0x2fa2,
730 0x2fa3, 0x2fa4, 0x2fa5, 0x2fa6, 0x2fa7, 0x2fa8, 0x2fa9, 0x2faa,
731 0x2fab, 0x2fac, 0x2fad, 0x2fae, 0x2faf, 0x2fb0, 0x2fb1, 0x2fb2,
732 0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7, 0x2fb8, 0x2fb9, 0x2fba,
733 0x2fbb, 0x4c52, 0x4c53, 0x4e28, 0x4e29, 0x4e2a, 0x4e2b, 0x4e2c,
734 0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34,
735 0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c,
736 0x4e3d, 0x4e3e, 0x4e3f, 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84,
737 0x4e85, 0x4e86, 0x4e87, 0x4e88, 0x4e89, 0x4e8a, 0x4e8b, 0x4e8c,
738 0x4e8d, 0x4e8e, 0x4e8f, 0x4e90, 0x4e91, 0x4e92, 0x4e93, 0x4e94,
739 0x4e95, 0x4e96, 0x4e97, 0x4e98, 0x4e99, 0x4e9a, 0x4e9b, 0x4e9c,
740 0x4e9d, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea1, 0x4ea2, 0x4ea3, 0x4ea4,
741 0x4ea5, 0x4ea6, 0x4ea7, 0x4ea8, 0x4ea9, 0x4eaa, 0x4eab, 0x4eac,
742 0x4ead, 0x4eae, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb2, 0x4eb3, 0x4eb4,
743 0x4eb5, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9, 0x4eba, 0x4ebb, 0x4ebc,
744 0x4ebd, 0x4ebe, 0x4ebf, 0x4ec0, 0x4ec1, 0x4ec2, 0x4ec3, 0x4ec4,
745 0x4ec5, 0x4ec6, 0x4ec7, 0x4ec8, 0x4ec9, 0x4eca, 0x4ecb, 0x6a04,
746 0x6a05, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, 0x07e8,
747 0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, 0x07f0,
748 0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, 0x07f8,
749 0x07f9, 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x07fe, 0x07ff, 0x2000,
750 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
751 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, 0x2010,
752 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, 0x2018,
753 0x2019, 0x201a, 0x201b, 0x201c, 0x201d, 0x201e, 0x201f, 0x2020,
754 0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, 0x2028,
755 0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f, 0x2030,
756 0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, 0x2038,
757 0x2039, 0x203a, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f, 0x2040,
758 0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046, 0x2047, 0x2048,
759 0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f, 0x2050,
760 0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057, 0x2058,
761 0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f, 0x2060,
762 0x2061, 0x2062, 0x2063, 0x2064, 0x2065, 0x2066, 0x2067, 0x2068,
763 0x2069, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, 0x2070,
764 0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078,
765 0x2079, 0x4cba, 0x4cbb, 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c,
766 0x5d8d, 0x5d8e, 0x5d8f, 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4,
767 0x5db5, 0x5db6, 0x5db7, 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc,
768 0x5dbd, 0x5dbe, 0x5dbf, 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44,
769 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4c,
770 0x5e4d, 0x5e4e, 0x5e4f, 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54,
771 0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c,
772 0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64,
773 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c,
774 0x5e6d, 0x5e6e, 0x5e6f, 0x5e70, 0x5e71, 0x5e72, 0x5e73, 0x5e74,
775 0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c,
776 0x5e7d, 0x5e7e, 0x5e7f, 0x5e80, 0x5e81, 0x5e82, 0x5e83, 0x5e84,
777 0x5e85, 0x5e86, 0x5e87, 0x5e88, 0x5e89, 0x5e8a, 0x5e8b, 0x5e8c,
778 0x5e8d, 0x5e8e, 0x5e8f, 0x5e90, 0x5e91, 0x5e92, 0x5e93, 0x5e94,
779 0x5e95, 0x5e96, 0x5e97, 0x5e98, 0x5e99, 0x5e9a, 0x5e9b, 0x5e9c,
780 0x5e9d, 0x5e9e, 0x5e9f, 0x5ea0, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4,
781 0x5ea5, 0x5ea6, 0x5ea7, 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac,
782 0x5ead, 0x5eae, 0x5eaf, 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb3, 0x5eb4,
783 0x5eb5, 0x5eb6, 0x5eb7, 0x5eb8, 0x5eb9, 0x5eba, 0x5ebb, 0x5ebc,
784 0x5ebd, 0x5ebe, 0x5ebf, 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4,
785 0x5ec5, 0x5ec6, 0x5ec7, 0x5ec8, 0x5ec9, 0x5eca, 0x5ecb, 0x5ecc,
786 0x5ecd, 0x5ece, 0x5ecf, 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4,
787 0x5ed5, 0x5ed6, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edb, 0x5edc,
788 0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
789 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee8, 0x5ee9, 0x5eea, 0x5eeb, 0x5eec,
790 0x5eed, 0x5eee, 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef4,
791 0x5ef5, 0x5ef6, 0x5ef7, 0x5ef8, 0x5ef9, 0x5efa, 0x5efb, 0x5efc,
792 0x5efd, 0x5efe, 0x5eff, 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04,
793 0x5f05, 0x5f06, 0x5f07, 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c,
794 0x5f0d, 0x5f0e, 0x5f0f, 0x0000,
795 };
796
797 static const uint8_t table0_mv_bits[1100] = {
798 1, 4, 4, 4, 5, 5, 5, 6,
799 6, 6, 7, 7, 7, 8, 8, 8,
800 8, 8, 8, 8, 8, 8, 8, 8,
801 8, 9, 9, 9, 9, 9, 9, 9,
802 9, 9, 9, 9, 9, 10, 10, 10,
803 10, 10, 10, 10, 10, 10, 10, 10,
804 10, 10, 10, 10, 10, 10, 10, 10,
805 10, 10, 10, 10, 11, 11, 11, 11,
806 11, 11, 11, 11, 11, 11, 11, 11,
807 11, 11, 11, 11, 11, 11, 11, 11,
808 11, 11, 11, 11, 11, 11, 11, 11,
809 12, 12, 12, 12, 12, 12, 12, 12,
810 12, 12, 12, 12, 12, 12, 12, 12,
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, 13, 13, 13, 13, 13,
816 13, 13, 13, 13, 13, 13, 13, 13,
817 13, 13, 13, 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, 14, 14, 14, 14, 14, 14,
824 14, 14, 14, 14, 14, 14, 14, 14,
825 14, 14, 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, 15, 15, 15, 15, 15, 15, 15,
837 15, 15, 15, 15, 15, 15, 15, 15,
838 15, 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, 16, 16, 16, 16,
857 16, 16, 16, 16, 16, 16, 16, 16,
858 16, 16, 16, 16, 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, 17, 17, 17, 17, 17, 17, 17,
888 17, 17, 17, 17, 17, 17, 17, 17,
889 17, 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, 8,
936 };
937
938 static const uint8_t table0_mvx[1099] = {
939 32, 32, 31, 32, 33, 31, 33, 31,
940 33, 32, 34, 32, 30, 32, 31, 34,
941 35, 32, 34, 33, 29, 33, 30, 30,
942 31, 31, 35, 29, 33, 35, 33, 34,
943 31, 29, 30, 34, 30, 36, 28, 32,
944 34, 37, 30, 27, 32, 25, 39, 32,
945 34, 32, 35, 35, 35, 31, 35, 29,
946 32, 29, 30, 29, 37, 27, 36, 38,
947 37, 33, 32, 31, 29, 31, 28, 36,
948 33, 30, 34, 33, 33, 28, 27, 25,
949 31, 26, 39, 32, 32, 31, 33, 39,
950 31, 38, 28, 36, 21, 23, 43, 36,
951 34, 41, 30, 25, 28, 31, 30, 34,
952 38, 35, 61, 34, 28, 30, 37, 37,
953 35, 27, 36, 3, 59, 38, 37, 32,
954 31, 29, 26, 33, 37, 33, 27, 27,
955 35, 34, 34, 40, 42, 33, 32, 29,
956 4, 5, 28, 24, 25, 35, 39, 38,
957 32, 23, 27, 32, 30, 35, 26, 34,
958 60, 36, 29, 22, 26, 41, 7, 30,
959 38, 30, 36, 29, 30, 41, 26, 25,
960 32, 34, 24, 39, 1, 25, 39, 32,
961 28, 29, 32, 38, 26, 36, 28, 63,
962 28, 39, 23, 21, 26, 35, 31, 35,
963 57, 31, 29, 29, 28, 30, 27, 35,
964 2, 38, 40, 34, 37, 29, 38, 43,
965 26, 32, 33, 42, 24, 40, 28, 32,
966 32, 32, 36, 32, 43, 25, 21, 31,
967 30, 31, 41, 29, 33, 37, 26, 37,
968 27, 59, 23, 33, 35, 31, 31, 37,
969 38, 39, 32, 23, 32, 27, 37, 36,
970 31, 40, 25, 27, 38, 31, 36, 28,
971 31, 36, 25, 45, 3, 34, 38, 39,
972 40, 38, 30, 32, 19, 24, 25, 26,
973 45, 20, 24, 33, 33, 31, 41, 34,
974 39, 47, 40, 58, 59, 41, 33, 3,
975 17, 61, 42, 30, 26, 29, 36, 61,
976 33, 37, 62, 28, 25, 38, 25, 38,
977 17, 23, 34, 33, 21, 33, 49, 27,
978 32, 23, 27, 22, 24, 22, 39, 43,
979 27, 37, 6, 42, 47, 26, 30, 31,
980 41, 39, 33, 22, 45, 36, 32, 45,
981 19, 22, 30, 5, 5, 17, 29, 22,
982 31, 31, 43, 37, 27, 32, 32, 32,
983 33, 34, 43, 35, 29, 26, 22, 32,
984 19, 32, 25, 31, 41, 49, 28, 34,
985 28, 39, 34, 19, 37, 38, 29, 21,
986 36, 42, 24, 48, 16, 28, 49, 22,
987 34, 31, 38, 39, 44, 11, 35, 30,
988 33, 33, 23, 28, 33, 46, 15, 13,
989 24, 41, 24, 34, 34, 30, 26, 24,
990 14, 60, 21, 29, 39, 23, 35, 37,
991 63, 45, 33, 34, 47, 41, 22, 42,
992 35, 35, 23, 32, 35, 43, 32, 7,
993 31, 41, 20, 31, 16, 13, 63, 25,
994 30, 32, 35, 30, 30, 31, 42, 47,
995 39, 38, 40, 40, 51, 55, 56, 18,
996 21, 39, 39, 33, 17, 41, 23, 24,
997 43, 25, 31, 20, 19, 45, 1, 34,
998 31, 22, 35, 15, 46, 46, 35, 31,
999 28, 29, 29, 23, 41, 27, 14, 53,
1000 53, 27, 24, 32, 57, 32, 17, 42,
1001 37, 29, 33, 1, 25, 32, 32, 63,
1002 26, 40, 44, 36, 31, 39, 20, 20,
1003 44, 23, 33, 34, 35, 33, 33, 28,
1004 41, 23, 41, 41, 29, 25, 26, 49,
1005 29, 24, 37, 49, 50, 51, 51, 26,
1006 39, 25, 26, 15, 39, 18, 42, 17,
1007 4, 31, 32, 32, 60, 1, 42, 32,
1008 0, 12, 19, 35, 21, 41, 17, 26,
1009 20, 45, 46, 32, 37, 22, 47, 29,
1010 31, 27, 29, 30, 21, 33, 35, 18,
1011 25, 33, 50, 51, 42, 2, 15, 51,
1012 53, 33, 25, 29, 55, 37, 38, 33,
1013 38, 59, 38, 33, 39, 13, 32, 40,
1014 61, 61, 32, 9, 44, 3, 31, 29,
1015 25, 31, 27, 23, 9, 25, 9, 29,
1016 20, 30, 30, 42, 18, 28, 25, 28,
1017 28, 21, 29, 43, 29, 43, 26, 44,
1018 44, 21, 38, 21, 24, 45, 45, 35,
1019 39, 22, 35, 36, 34, 34, 45, 34,
1020 29, 31, 46, 25, 46, 16, 17, 31,
1021 20, 32, 47, 47, 47, 32, 49, 49,
1022 49, 31, 1, 27, 28, 39, 39, 21,
1023 36, 23, 51, 2, 40, 51, 32, 53,
1024 24, 30, 24, 30, 21, 40, 57, 57,
1025 31, 41, 58, 32, 12, 4, 32, 34,
1026 59, 31, 32, 13, 9, 35, 26, 35,
1027 37, 61, 37, 63, 26, 29, 41, 38,
1028 23, 20, 41, 26, 41, 42, 42, 42,
1029 26, 26, 26, 26, 1, 26, 37, 37,
1030 37, 23, 34, 42, 27, 43, 34, 27,
1031 31, 24, 33, 16, 3, 31, 24, 33,
1032 24, 4, 44, 44, 11, 44, 31, 13,
1033 13, 44, 45, 13, 25, 22, 38, 26,
1034 38, 38, 39, 32, 30, 39, 30, 22,
1035 32, 26, 30, 47, 47, 47, 19, 47,
1036 30, 31, 35, 8, 23, 47, 47, 27,
1037 35, 47, 31, 48, 35, 19, 36, 49,
1038 49, 33, 31, 39, 27, 39, 49, 49,
1039 50, 50, 50, 39, 31, 51, 51, 39,
1040 28, 33, 33, 21, 40, 31, 52, 53,
1041 40, 53, 9, 33, 31, 53, 54, 54,
1042 54, 55, 55, 34, 15, 56, 25, 56,
1043 21, 21, 40, 40, 25, 40, 58, 36,
1044 5, 41, 41, 12, 60, 41, 41, 37,
1045 22, 61, 18, 29, 29, 30, 61, 30,
1046 61, 62, 62, 30, 30, 63, 18, 13,
1047 30, 23, 19, 20, 20, 41, 13, 2,
1048 5, 5, 1, 5, 32, 6, 32, 35,
1049 20, 35, 27, 35, 35, 36, 36, 13,
1050 36, 41, 41, 41, 3, 30, 42, 27,
1051 20, 30, 27, 28, 30, 21, 33, 33,
1052 14, 24, 30, 42, 24, 33, 25, 42,
1053 43, 14, 43, 43, 14, 43, 7, 36,
1054 37, 37, 37, 37, 7, 14, 25, 43,
1055 43, 44, 15, 37, 7, 7, 3, 1,
1056 8, 15, 15, 8, 44, 44, 44, 45,
1057 45, 45, 45, 8, 8, 45, 21, 45,
1058 28, 28, 28, 21, 28, 28, 22, 37,
1059 46, 46, 37, 8, 29, 37, 29, 22,
1060 46, 37, 22, 29, 47, 47, 38, 38,
1061 16, 38, 38, 33, 38, 22, 47, 47,
1062 29, 25, 16, 0, 48, 1, 34, 48,
1063 48, 34, 25, 26, 26, 49, 49, 26,
1064 1, 49, 4, 26, 4, 49, 1, 9,
1065 49, 49, 49, 10, 49, 17, 38, 17,
1066 17, 50, 38, 50, 50, 22, 38, 51,
1067 38, 38, 51, 39, 39, 18, 22, 39,
1068 51, 22, 52, 52, 52, 39, 53, 53,
1069 10, 23, 18, 29, 10, 53, 29, 54,
1070 11, 54, 11, 11, 55, 1, 18, 55,
1071 55, 55, 55, 55, 55, 29, 34, 18,
1072 29, 56, 56, 34, 57, 34, 34, 29,
1073 29, 57, 57, 35, 35, 35, 35, 35,
1074 39, 35, 59, 59, 18, 59, 39, 30,
1075 18, 40, 60, 60, 61, 30, 18, 61,
1076 61, 19, 19,
1077 };
1078
1079 static const uint8_t table0_mvy[1099] = {
1080 32, 31, 32, 33, 32, 31, 31, 33,
1081 33, 34, 32, 30, 32, 35, 34, 31,
1082 32, 29, 33, 30, 32, 34, 33, 31,
1083 30, 35, 31, 31, 29, 33, 35, 30,
1084 29, 33, 34, 34, 30, 32, 32, 36,
1085 29, 32, 35, 32, 28, 32, 32, 27,
1086 35, 37, 34, 29, 30, 36, 35, 34,
1087 25, 30, 29, 35, 33, 31, 31, 32,
1088 31, 28, 39, 28, 29, 37, 31, 33,
1089 27, 36, 28, 36, 37, 33, 33, 31,
1090 27, 32, 31, 38, 26, 25, 25, 33,
1091 39, 31, 34, 30, 32, 32, 32, 34,
1092 36, 32, 28, 33, 30, 38, 37, 27,
1093 33, 28, 32, 37, 35, 38, 29, 34,
1094 27, 29, 29, 32, 32, 34, 35, 3,
1095 26, 36, 31, 38, 30, 26, 35, 34,
1096 37, 26, 25, 32, 32, 39, 23, 37,
1097 32, 32, 29, 32, 29, 36, 29, 30,
1098 41, 31, 30, 21, 39, 25, 34, 38,
1099 32, 35, 39, 32, 33, 33, 32, 27,
1100 29, 25, 28, 27, 26, 31, 30, 35,
1101 24, 24, 31, 34, 32, 30, 35, 40,
1102 28, 38, 5, 35, 29, 36, 36, 32,
1103 38, 30, 33, 31, 35, 26, 23, 38,
1104 32, 41, 28, 25, 37, 40, 37, 39,
1105 32, 36, 33, 39, 25, 26, 28, 31,
1106 28, 42, 23, 31, 33, 31, 39, 1,
1107 59, 22, 27, 4, 33, 34, 33, 24,
1108 41, 3, 35, 41, 41, 28, 36, 36,
1109 28, 33, 35, 21, 23, 21, 22, 37,
1110 27, 27, 43, 29, 60, 39, 27, 25,
1111 59, 34, 27, 27, 26, 40, 37, 27,
1112 61, 26, 39, 33, 31, 22, 37, 25,
1113 30, 25, 24, 61, 31, 34, 25, 38,
1114 32, 32, 30, 3, 61, 43, 29, 23,
1115 28, 32, 28, 32, 31, 34, 5, 33,
1116 32, 33, 33, 42, 37, 23, 38, 31,
1117 40, 26, 32, 26, 37, 38, 36, 24,
1118 29, 30, 20, 22, 29, 24, 32, 41,
1119 2, 34, 25, 33, 29, 31, 39, 35,
1120 36, 24, 32, 30, 33, 27, 44, 60,
1121 30, 36, 19, 34, 31, 24, 16, 35,
1122 32, 38, 21, 33, 31, 31, 21, 35,
1123 5, 17, 29, 38, 38, 18, 58, 19,
1124 43, 41, 30, 41, 43, 39, 29, 7,
1125 29, 17, 28, 19, 28, 31, 25, 19,
1126 40, 26, 21, 33, 39, 23, 40, 30,
1127 39, 34, 35, 32, 32, 24, 33, 30,
1128 40, 47, 39, 37, 32, 33, 24, 23,
1129 45, 47, 27, 23, 42, 32, 32, 33,
1130 36, 37, 37, 17, 18, 22, 40, 38,
1131 32, 31, 35, 24, 17, 25, 17, 23,
1132 33, 34, 51, 42, 31, 36, 36, 29,
1133 21, 22, 37, 44, 43, 25, 47, 33,
1134 45, 27, 31, 58, 31, 32, 31, 38,
1135 43, 20, 47, 45, 54, 1, 26, 34,
1136 38, 14, 22, 24, 33, 34, 32, 32,
1137 37, 21, 23, 49, 35, 23, 28, 39,
1138 39, 23, 55, 33, 30, 30, 63, 16,
1139 42, 28, 13, 33, 33, 35, 19, 46,
1140 43, 17, 19, 36, 39, 24, 31, 32,
1141 33, 26, 28, 62, 33, 63, 33, 39,
1142 19, 49, 17, 31, 43, 13, 15, 29,
1143 25, 35, 33, 23, 49, 41, 28, 29,
1144 34, 38, 7, 61, 11, 50, 13, 41,
1145 19, 47, 25, 26, 15, 42, 41, 29,
1146 45, 27, 17, 35, 32, 29, 32, 24,
1147 13, 26, 26, 31, 24, 33, 28, 30,
1148 31, 11, 45, 46, 33, 33, 35, 57,
1149 32, 32, 35, 45, 34, 11, 37, 42,
1150 39, 37, 31, 49, 21, 27, 29, 47,
1151 53, 40, 51, 16, 26, 1, 40, 30,
1152 41, 44, 34, 25, 27, 31, 35, 35,
1153 31, 15, 49, 1, 35, 40, 5, 58,
1154 21, 29, 22, 59, 45, 31, 9, 26,
1155 9, 29, 11, 32, 30, 3, 13, 20,
1156 18, 20, 11, 3, 29, 40, 31, 53,
1157 30, 17, 20, 37, 31, 42, 47, 47,
1158 54, 38, 9, 34, 13, 37, 21, 25,
1159 27, 43, 42, 45, 40, 25, 27, 46,
1160 22, 25, 53, 20, 2, 14, 39, 15,
1161 22, 44, 34, 21, 38, 33, 27, 48,
1162 34, 52, 35, 47, 49, 54, 2, 13,
1163 23, 52, 29, 45, 22, 49, 54, 21,
1164 40, 42, 31, 30, 29, 34, 0, 25,
1165 23, 51, 24, 59, 28, 38, 29, 31,
1166 2, 13, 31, 8, 31, 33, 12, 45,
1167 41, 7, 14, 30, 25, 18, 43, 20,
1168 43, 35, 44, 1, 49, 42, 42, 18,
1169 41, 38, 41, 44, 53, 11, 20, 25,
1170 45, 46, 47, 48, 39, 52, 46, 49,
1171 63, 55, 44, 38, 13, 13, 57, 22,
1172 51, 16, 12, 28, 35, 57, 25, 20,
1173 26, 28, 28, 29, 32, 31, 62, 34,
1174 35, 35, 19, 49, 48, 39, 40, 18,
1175 43, 46, 11, 6, 48, 19, 49, 41,
1176 10, 23, 58, 17, 21, 23, 34, 30,
1177 60, 0, 44, 34, 26, 37, 46, 43,
1178 49, 59, 4, 34, 59, 37, 22, 25,
1179 28, 46, 6, 40, 59, 42, 36, 61,
1180 28, 30, 31, 43, 10, 22, 23, 47,
1181 20, 52, 55, 36, 25, 16, 1, 11,
1182 27, 29, 5, 63, 18, 41, 31, 34,
1183 38, 1, 5, 13, 28, 31, 17, 38,
1184 39, 41, 36, 37, 22, 39, 33, 43,
1185 43, 15, 17, 49, 30, 21, 22, 20,
1186 10, 17, 25, 54, 57, 3, 34, 8,
1187 36, 25, 31, 14, 15, 19, 29, 25,
1188 18, 39, 53, 22, 27, 20, 29, 33,
1189 41, 42, 35, 62, 50, 29, 53, 50,
1190 35, 55, 42, 61, 63, 4, 7, 42,
1191 21, 46, 47, 49, 27, 46, 17, 55,
1192 41, 50, 63, 4, 56, 18, 8, 10,
1193 18, 51, 63, 36, 55, 18, 5, 55,
1194 9, 29, 17, 21, 30, 27, 1, 59,
1195 7, 11, 12, 15, 5, 42, 24, 41,
1196 43, 7, 27, 22, 25, 31, 30, 37,
1197 22, 39, 53, 29, 36, 37, 48, 0,
1198 5, 13, 17, 31, 32, 26, 46, 28,
1199 44, 45, 46, 53, 49, 51, 3, 41,
1200 3, 22, 42, 33, 5, 45, 7, 22,
1201 40, 53, 24, 14, 25, 27, 10, 12,
1202 34, 16, 17, 53, 20, 26, 39, 45,
1203 18, 45, 35, 33, 31, 49, 4, 39,
1204 42, 11, 51, 5, 13, 26, 27, 17,
1205 52, 30, 0, 22, 12, 34, 62, 36,
1206 38, 41, 47, 30, 63, 38, 41, 43,
1207 59, 33, 45, 37, 38, 40, 47, 24,
1208 48, 49, 30, 1, 10, 22, 49, 15,
1209 39, 59, 31, 32, 33, 18, 13, 15,
1210 31, 21, 27, 44, 42, 39, 46, 17,
1211 26, 32, 30, 31, 0, 30, 34, 9,
1212 12, 13, 25, 31, 32, 55, 43, 35,
1213 61, 33, 35, 46, 25, 47, 48, 62,
1214 63, 38, 61, 1, 2, 5, 7, 9,
1215 46, 10, 34, 35, 36, 55, 51, 7,
1216 40, 23, 34, 37, 5, 13, 42, 18,
1217 25, 27, 28,
1218 };
1219
1220 /* motion vector table 1 */
1221 static const uint16_t table1_mv_code[1100] = {
1222 0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c,
1223 0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041,
1224 0x004c, 0x004e, 0x005c, 0x0060, 0x0062, 0x0066, 0x0068, 0x0069,
1225 0x006b, 0x00a6, 0x00c1, 0x00cb, 0x00cc, 0x00ce, 0x00da, 0x00e8,
1226 0x00ee, 0x0087, 0x0090, 0x009e, 0x009f, 0x00ba, 0x00ca, 0x00d8,
1227 0x00db, 0x00df, 0x0104, 0x0109, 0x010c, 0x0143, 0x0145, 0x014a,
1228 0x0156, 0x015c, 0x01b3, 0x01d3, 0x01da, 0x0103, 0x0109, 0x010b,
1229 0x0122, 0x0127, 0x0134, 0x0161, 0x0164, 0x0176, 0x0184, 0x018d,
1230 0x018e, 0x018f, 0x0190, 0x0193, 0x0196, 0x019d, 0x019e, 0x019f,
1231 0x01a9, 0x01b2, 0x01b4, 0x01ba, 0x01bb, 0x01bc, 0x0201, 0x0202,
1232 0x0205, 0x0207, 0x020d, 0x0210, 0x0211, 0x0215, 0x021b, 0x021f,
1233 0x0281, 0x0285, 0x0290, 0x029c, 0x029d, 0x02a2, 0x02a7, 0x02a8,
1234 0x02aa, 0x02b0, 0x02b1, 0x02b4, 0x02bc, 0x02bf, 0x0320, 0x0326,
1235 0x0327, 0x0329, 0x032a, 0x0336, 0x0360, 0x0362, 0x0363, 0x0372,
1236 0x03b2, 0x03bc, 0x03bd, 0x0203, 0x0205, 0x021a, 0x0249, 0x024a,
1237 0x024c, 0x02c7, 0x02ca, 0x02ce, 0x02ef, 0x030d, 0x0322, 0x0325,
1238 0x0338, 0x0373, 0x037a, 0x0409, 0x0415, 0x0416, 0x0418, 0x0428,
1239 0x042d, 0x042f, 0x0434, 0x0508, 0x0509, 0x0510, 0x0511, 0x051c,
1240 0x051e, 0x0524, 0x0541, 0x0543, 0x0546, 0x0547, 0x054d, 0x0557,
1241 0x055f, 0x056a, 0x056c, 0x056d, 0x056f, 0x0576, 0x0577, 0x057a,
1242 0x057b, 0x057c, 0x057d, 0x0600, 0x0601, 0x0603, 0x0614, 0x0616,
1243 0x0617, 0x061c, 0x061f, 0x0642, 0x0648, 0x0649, 0x064a, 0x064b,
1244 0x0657, 0x0668, 0x0669, 0x066b, 0x066e, 0x067f, 0x06c2, 0x06c8,
1245 0x06cb, 0x06de, 0x06df, 0x06e2, 0x06e3, 0x06ef, 0x0748, 0x074b,
1246 0x076e, 0x076f, 0x077c, 0x0409, 0x0423, 0x0428, 0x0429, 0x042a,
1247 0x042b, 0x0432, 0x0433, 0x0496, 0x049a, 0x04d5, 0x04db, 0x0581,
1248 0x0582, 0x058b, 0x058c, 0x058d, 0x0598, 0x0599, 0x059a, 0x059e,
1249 0x05dd, 0x0619, 0x0632, 0x0633, 0x0648, 0x0672, 0x06a1, 0x06a2,
1250 0x06a3, 0x06af, 0x06e2, 0x06e3, 0x06e4, 0x0800, 0x0801, 0x0802,
1251 0x0803, 0x081a, 0x081b, 0x0829, 0x082f, 0x0832, 0x083e, 0x083f,
1252 0x0852, 0x0853, 0x0858, 0x086b, 0x0877, 0x0878, 0x0879, 0x087a,
1253 0x087b, 0x0a00, 0x0a01, 0x0a0d, 0x0a0e, 0x0a0f, 0x0a24, 0x0a37,
1254 0x0a3a, 0x0a3b, 0x0a3e, 0x0a46, 0x0a47, 0x0a4a, 0x0a4b, 0x0a5f,
1255 0x0a79, 0x0a7a, 0x0a7b, 0x0a80, 0x0a81, 0x0a84, 0x0a85, 0x0a99,
1256 0x0aa5, 0x0aa6, 0x0ab8, 0x0aba, 0x0abb, 0x0abc, 0x0abd, 0x0ac8,
1257 0x0ace, 0x0acf, 0x0ad7, 0x0adc, 0x0aeb, 0x0c04, 0x0c25, 0x0c26,
1258 0x0c27, 0x0c2a, 0x0c2b, 0x0c3a, 0x0c3b, 0x0c3c, 0x0c3d, 0x0ca0,
1259 0x0cad, 0x0cd4, 0x0cd5, 0x0cfc, 0x0cfd, 0x0d86, 0x0d92, 0x0d93,
1260 0x0d94, 0x0d95, 0x0db0, 0x0db8, 0x0db9, 0x0dba, 0x0dbb, 0x0dc0,
1261 0x0dc2, 0x0dc3, 0x0dda, 0x0ddb, 0x0ddc, 0x0ddd, 0x0e92, 0x0e93,
1262 0x0e94, 0x0e95, 0x0ec7, 0x0ecc, 0x0ece, 0x0ecf, 0x0ed8, 0x0ed9,
1263 0x0eda, 0x0edb, 0x0808, 0x0809, 0x080a, 0x0810, 0x0811, 0x0844,
1264 0x0845, 0x0861, 0x0862, 0x0863, 0x086c, 0x0922, 0x0923, 0x092e,
1265 0x092f, 0x0936, 0x0937, 0x09b1, 0x09b2, 0x09b3, 0x09b4, 0x09b5,
1266 0x09b8, 0x09b9, 0x09ba, 0x09bb, 0x09bc, 0x09bd, 0x09be, 0x09bf,
1267 0x0b00, 0x0b15, 0x0b2c, 0x0b2d, 0x0b2e, 0x0b2f, 0x0b36, 0x0bb9,
1268 0x0c28, 0x0c2a, 0x0c2b, 0x0c2c, 0x0c2d, 0x0c2e, 0x0c2f, 0x0c30,
1269 0x0c31, 0x0c38, 0x0c60, 0x0c61, 0x0c62, 0x0c63, 0x0c8d, 0x0c8e,
1270 0x0c8f, 0x0c92, 0x0cbe, 0x0cbf, 0x0ce6, 0x0ce7, 0x0d40, 0x0d41,
1271 0x0d57, 0x0d58, 0x0d59, 0x0d5a, 0x0d5b, 0x0d5c, 0x0d5d, 0x0d98,
1272 0x0d99, 0x0d9a, 0x0d9b, 0x0d9c, 0x0d9d, 0x0dad, 0x0dae, 0x0daf,
1273 0x0dc0, 0x0dc1, 0x0dc2, 0x0dc3, 0x0dca, 0x0dcb, 0x0dec, 0x0ded,
1274 0x0dee, 0x0def, 0x1018, 0x1022, 0x1023, 0x1030, 0x1031, 0x1032,
1275 0x1033, 0x1050, 0x1051, 0x105c, 0x1074, 0x1075, 0x1076, 0x1077,
1276 0x1078, 0x1079, 0x107a, 0x107b, 0x10b2, 0x10b3, 0x10b8, 0x10b9,
1277 0x10ba, 0x10bb, 0x10d4, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x1404,
1278 0x1405, 0x1406, 0x1407, 0x1410, 0x1411, 0x1412, 0x1413, 0x1414,
1279 0x1415, 0x1416, 0x1417, 0x1418, 0x1419, 0x1466, 0x1467, 0x1468,
1280 0x1469, 0x146a, 0x146b, 0x146c, 0x146d, 0x147e, 0x147f, 0x1488,
1281 0x1489, 0x148a, 0x148b, 0x14b6, 0x14b7, 0x14b8, 0x14b9, 0x14ba,
1282 0x14bb, 0x14bc, 0x14bd, 0x14f0, 0x14f1, 0x14f8, 0x14f9, 0x14fa,
1283 0x14fb, 0x14fc, 0x14fd, 0x14fe, 0x14ff, 0x152a, 0x152b, 0x152c,
1284 0x152d, 0x152e, 0x152f, 0x1530, 0x1531, 0x1548, 0x1549, 0x154e,
1285 0x154f, 0x1558, 0x1559, 0x155a, 0x155b, 0x1572, 0x159a, 0x159b,
1286 0x15ac, 0x15ba, 0x15bb, 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4,
1287 0x15d5, 0x181d, 0x181e, 0x181f, 0x1840, 0x1841, 0x1842, 0x1843,
1288 0x1844, 0x1845, 0x1846, 0x1847, 0x1848, 0x1849, 0x1861, 0x1862,
1289 0x1863, 0x1864, 0x1865, 0x1866, 0x1867, 0x1868, 0x1869, 0x186a,
1290 0x186b, 0x186c, 0x186d, 0x186e, 0x191b, 0x191c, 0x191d, 0x191e,
1291 0x191f, 0x1942, 0x1943, 0x1944, 0x1945, 0x1946, 0x1947, 0x1958,
1292 0x1959, 0x19ed, 0x19ee, 0x19ef, 0x19f0, 0x19f1, 0x19f2, 0x19f3,
1293 0x19f4, 0x19f5, 0x19f6, 0x19f7, 0x1b0e, 0x1b0f, 0x1b62, 0x1b63,
1294 0x1b64, 0x1b65, 0x1b66, 0x1b67, 0x1b68, 0x1b69, 0x1b6a, 0x1b6b,
1295 0x1b6c, 0x1b6d, 0x1b6e, 0x1b6f, 0x1b82, 0x1ba8, 0x1ba9, 0x1baa,
1296 0x1bab, 0x1bac, 0x1bad, 0x1bae, 0x1baf, 0x1bb0, 0x1bb1, 0x1bb2,
1297 0x1bb3, 0x1d80, 0x1d81, 0x1d82, 0x1d83, 0x1d84, 0x1d85, 0x1d86,
1298 0x1d87, 0x1d88, 0x1d89, 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8d, 0x1007,
1299 0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, 0x100f,
1300 0x1016, 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086,
1301 0x1087, 0x10c0, 0x123a, 0x123b, 0x123c, 0x123d, 0x123e, 0x123f,
1302 0x1240, 0x1241, 0x1242, 0x1243, 0x1350, 0x1352, 0x1353, 0x1358,
1303 0x1359, 0x135a, 0x135b, 0x135c, 0x135d, 0x135e, 0x135f, 0x1360,
1304 0x1361, 0x1602, 0x1603, 0x160c, 0x160d, 0x160e, 0x160f, 0x1620,
1305 0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628,
1306 0x1629, 0x166e, 0x166f, 0x167c, 0x167d, 0x167e, 0x167f, 0x1770,
1307 0x1771, 0x1852, 0x1853, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876,
1308 0x1877, 0x1878, 0x1879, 0x187a, 0x187b, 0x187c, 0x187d, 0x187e,
1309 0x187f, 0x1918, 0x1919, 0x1926, 0x1927, 0x1970, 0x1971, 0x1972,
1310 0x1973, 0x1974, 0x1975, 0x1976, 0x1977, 0x1978, 0x1979, 0x197a,
1311 0x197b, 0x1aa0, 0x1aa1, 0x1aa2, 0x1aa3, 0x1aa4, 0x1aa5, 0x1aa6,
1312 0x1aa7, 0x1aa8, 0x1aa9, 0x1aaa, 0x1aab, 0x1aac, 0x1aad, 0x1b3c,
1313 0x1b3d, 0x1b3e, 0x1b3f, 0x1b50, 0x1b51, 0x1b52, 0x1b53, 0x1b54,
1314 0x1b55, 0x1b56, 0x1b57, 0x1b58, 0x1b59, 0x2032, 0x2033, 0x2034,
1315 0x2035, 0x2036, 0x2037, 0x2038, 0x2039, 0x203a, 0x203b, 0x203c,
1316 0x203d, 0x203e, 0x203f, 0x2040, 0x2041, 0x2042, 0x2043, 0x20ba,
1317 0x20bb, 0x20cc, 0x20cd, 0x20ce, 0x20cf, 0x20e0, 0x20e1, 0x20e2,
1318 0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7, 0x21aa, 0x21ab, 0x21c0,
1319 0x21c1, 0x21c2, 0x21c3, 0x21c4, 0x21c5, 0x21c6, 0x21c7, 0x21c8,
1320 0x21c9, 0x21ca, 0x21cb, 0x21cc, 0x21cd, 0x21ce, 0x21cf, 0x21d0,
1321 0x21d1, 0x21d2, 0x21d3, 0x2894, 0x2895, 0x2896, 0x2897, 0x2898,
1322 0x2899, 0x289a, 0x289b, 0x289c, 0x289d, 0x289e, 0x289f, 0x28c0,
1323 0x28c1, 0x28c2, 0x28c3, 0x28c4, 0x28c5, 0x28c6, 0x28c7, 0x28c8,
1324 0x28c9, 0x28ca, 0x28cb, 0x2930, 0x2931, 0x2932, 0x2933, 0x2934,
1325 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c,
1326 0x293d, 0x293e, 0x293f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964,
1327 0x2965, 0x2966, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x2a40,
1328 0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48,
1329 0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50,
1330 0x2a51, 0x2a52, 0x2a53, 0x2ae6, 0x2ae7, 0x2b24, 0x2b25, 0x2b26,
1331 0x2b27, 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e,
1332 0x2b2f, 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b5a, 0x2b5b, 0x3014,
1333 0x3015, 0x3016, 0x3017, 0x3020, 0x3021, 0x3022, 0x3023, 0x3024,
1334 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c,
1335 0x302d, 0x302e, 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034,
1336 0x3035, 0x3036, 0x3037, 0x3038, 0x3039, 0x30c0, 0x30c1, 0x30de,
1337 0x30df, 0x3218, 0x3219, 0x321a, 0x321b, 0x321c, 0x321d, 0x321e,
1338 0x321f, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226,
1339 0x3227, 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e,
1340 0x322f, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3378,
1341 0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x337f, 0x33c0,
1342 0x33c1, 0x33c2, 0x33c3, 0x33c4, 0x33c5, 0x33c6, 0x33c7, 0x33c8,
1343 0x33c9, 0x33ca, 0x33cb, 0x33cc, 0x33cd, 0x33ce, 0x33cf, 0x33d0,
1344 0x33d1, 0x33d2, 0x33d3, 0x33d4, 0x33d5, 0x33d6, 0x33d7, 0x33d8,
1345 0x33d9, 0x3706, 0x3707, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
1346 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
1347 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
1348 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
1349 0x374d, 0x374e, 0x374f, 0x3b34, 0x3b35, 0x3b36, 0x3b37, 0x3be8,
1350 0x3be9, 0x3bea, 0x3beb, 0x3bec, 0x3bed, 0x3bee, 0x3bef, 0x3bf0,
1351 0x3bf1, 0x3bf2, 0x3bf3, 0x3bf4, 0x3bf5, 0x3bf6, 0x3bf7, 0x3bf8,
1352 0x3bf9, 0x3bfa, 0x3bfb, 0x3bfc, 0x3bfd, 0x3bfe, 0x3bff, 0x2000,
1353 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
1354 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x202e, 0x202f, 0x2182,
1355 0x2183, 0x21b4, 0x21b5, 0x21b6, 0x21b7, 0x21b8, 0x21b9, 0x21ba,
1356 0x21bb, 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x2460, 0x2461, 0x2462,
1357 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
1358 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
1359 0x2473, 0x26a2, 0x26a3, 0x000b,
1360 };
1361
1362 static const uint8_t table1_mv_bits[1100] = {
1363 2, 4, 4, 4, 5, 5, 5, 5,
1364 6, 6, 7, 7, 7, 7, 7, 8,
1365 8, 8, 8, 8, 8, 8, 8, 8,
1366 8, 8, 8, 8, 8, 8, 8, 8,
1367 8, 9, 9, 9, 9, 9, 9, 9,
1368 9, 9, 9, 9, 9, 9, 9, 9,
1369 9, 9, 9, 9, 9, 10, 10, 10,
1370 10, 10, 10, 10, 10, 10, 10, 10,
1371 10, 10, 10, 10, 10, 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, 11, 11, 11, 11, 11,
1378 11, 11, 11, 11, 11, 11, 11, 11,
1379 11, 11, 11, 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, 12, 12, 12, 12, 12,
1388 12, 12, 12, 12, 12, 12, 12, 12,
1389 12, 12, 12, 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, 13, 13, 13, 13, 13, 13,
1405 13, 13, 13, 13, 13, 13, 13, 13,
1406 13, 13, 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, 14,
1440 14, 14, 14, 14, 14, 14, 14, 14,
1441 14, 14, 14, 14, 14, 14, 14, 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, 15,
1494 15, 15, 15, 15, 15, 15, 15, 15,
1495 15, 15, 15, 15, 15, 15, 15, 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, 4,
1501 };
1502
1503 static const uint8_t table1_mvx[1099] = {
1504 32, 31, 32, 31, 33, 32, 33, 33,
1505 31, 34, 30, 32, 32, 34, 35, 32,
1506 34, 33, 29, 30, 30, 32, 31, 31,
1507 33, 35, 35, 33, 31, 29, 29, 33,
1508 34, 30, 31, 28, 36, 30, 34, 32,
1509 32, 37, 32, 32, 25, 27, 39, 32,
1510 32, 32, 38, 35, 36, 32, 37, 61,
1511 26, 32, 34, 35, 3, 35, 27, 28,
1512 29, 34, 28, 37, 31, 36, 32, 27,
1513 31, 30, 29, 39, 33, 29, 33, 35,
1514 25, 25, 29, 33, 31, 31, 31, 33,
1515 32, 30, 32, 32, 41, 39, 33, 36,
1516 32, 28, 34, 36, 38, 24, 60, 31,
1517 23, 28, 32, 33, 59, 32, 40, 30,
1518 5, 34, 32, 38, 32, 30, 43, 4,
1519 32, 32, 42, 31, 31, 32, 26, 38,
1520 26, 22, 21, 37, 61, 63, 37, 31,
1521 32, 33, 2, 1, 23, 33, 41, 27,
1522 35, 30, 38, 23, 33, 3, 28, 34,
1523 34, 27, 41, 29, 39, 35, 36, 29,
1524 32, 27, 30, 32, 24, 61, 37, 26,
1525 59, 25, 35, 27, 36, 37, 30, 31,
1526 34, 40, 3, 28, 34, 39, 32, 31,
1527 32, 30, 24, 28, 35, 36, 26, 32,
1528 31, 33, 29, 33, 39, 25, 30, 24,
1529 35, 59, 29, 34, 25, 30, 21, 35,
1530 43, 40, 32, 29, 5, 28, 31, 62,
1531 33, 33, 25, 31, 21, 31, 43, 31,
1532 34, 33, 20, 40, 39, 31, 31, 57,
1533 38, 32, 42, 33, 32, 31, 32, 29,
1534 30, 44, 5, 31, 22, 34, 36, 17,
1535 38, 58, 38, 35, 32, 60, 35, 24,
1536 32, 38, 16, 45, 42, 32, 31, 29,
1537 4, 30, 17, 40, 46, 48, 63, 32,
1538 42, 19, 41, 22, 28, 36, 45, 33,
1539 33, 32, 29, 7, 41, 42, 18, 33,
1540 33, 32, 22, 37, 1, 26, 22, 23,
1541 49, 28, 26, 27, 32, 33, 27, 23,
1542 28, 36, 15, 6, 34, 27, 31, 26,
1543 23, 2, 33, 32, 34, 41, 28, 32,
1544 41, 0, 36, 38, 34, 31, 47, 32,
1545 17, 31, 39, 33, 37, 51, 30, 47,
1546 32, 50, 32, 19, 63, 30, 25, 27,
1547 33, 62, 24, 31, 27, 30, 37, 31,
1548 45, 32, 39, 20, 46, 47, 35, 19,
1549 34, 1, 49, 21, 21, 14, 51, 26,
1550 23, 31, 36, 35, 58, 29, 29, 21,
1551 20, 42, 13, 28, 12, 40, 31, 33,
1552 39, 60, 32, 44, 33, 31, 28, 37,
1553 29, 32, 30, 49, 43, 28, 39, 25,
1554 32, 48, 2, 15, 20, 25, 31, 28,
1555 21, 24, 25, 15, 31, 17, 37, 43,
1556 18, 32, 33, 24, 33, 36, 13, 33,
1557 31, 39, 11, 31, 33, 32, 39, 37,
1558 32, 32, 29, 17, 44, 46, 36, 35,
1559 26, 37, 58, 32, 34, 38, 8, 38,
1560 38, 22, 29, 25, 16, 35, 32, 35,
1561 33, 43, 18, 46, 38, 50, 33, 18,
1562 53, 60, 13, 32, 36, 33, 51, 36,
1563 43, 45, 27, 42, 29, 24, 30, 25,
1564 31, 52, 31, 35, 38, 9, 22, 34,
1565 4, 17, 28, 55, 42, 25, 17, 20,
1566 47, 34, 33, 16, 40, 25, 16, 30,
1567 53, 29, 10, 11, 14, 26, 33, 4,
1568 35, 44, 26, 16, 31, 26, 34, 38,
1569 29, 31, 30, 24, 22, 61, 32, 9,
1570 45, 34, 31, 19, 9, 31, 46, 31,
1571 35, 54, 29, 57, 30, 50, 3, 31,
1572 63, 34, 47, 41, 51, 18, 31, 14,
1573 37, 38, 31, 24, 32, 31, 50, 33,
1574 31, 54, 27, 9, 33, 23, 19, 32,
1575 29, 29, 33, 28, 47, 49, 30, 47,
1576 33, 27, 25, 54, 44, 45, 50, 58,
1577 51, 48, 33, 59, 33, 34, 57, 13,
1578 26, 33, 13, 48, 30, 11, 7, 56,
1579 34, 55, 26, 0, 26, 35, 1, 51,
1580 33, 53, 31, 45, 12, 29, 29, 51,
1581 31, 48, 2, 6, 34, 30, 28, 33,
1582 60, 40, 27, 46, 31, 9, 35, 29,
1583 31, 39, 55, 46, 19, 37, 62, 34,
1584 30, 16, 19, 49, 41, 41, 39, 37,
1585 14, 5, 13, 35, 55, 30, 40, 40,
1586 42, 8, 20, 25, 45, 35, 33, 36,
1587 54, 38, 27, 37, 62, 40, 15, 59,
1588 49, 31, 29, 34, 34, 39, 24, 29,
1589 25, 29, 21, 29, 10, 61, 33, 49,
1590 35, 34, 3, 38, 39, 29, 7, 41,
1591 1, 35, 4, 23, 15, 23, 11, 37,
1592 28, 35, 30, 30, 24, 1, 43, 56,
1593 8, 34, 42, 24, 45, 30, 20, 23,
1594 8, 38, 22, 33, 17, 52, 34, 22,
1595 53, 43, 44, 1, 27, 31, 41, 43</