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