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