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