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