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