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