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
34uint32_t ff_v2_dc_lum_table[512][2];
35uint32_t ff_v2_dc_chroma_table[512][2];
36
37VLC ff_msmp4_mb_i_vlc;
38VLC ff_msmp4_dc_luma_vlc[2];
39VLC ff_msmp4_dc_chroma_vlc[2];
40
41/* intra picture macroblock coded block pattern */
42const 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 */
62const 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
99const 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
132const 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
167const 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
200const 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
235static 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
272static 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
292static 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
314static 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
355static 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
377static 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
401static 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
451static 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
478static 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 */
506static 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
552static 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
576static 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
600RLTable 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
643static 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
784static 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
925static 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
1066static 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 */
1208static 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
1349static 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
1490static 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
1631static 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
1772MVTable 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
1783const 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
1788const uint8_t ff_v2_intra_cbpc[4][2] = {
1789    { 1, 1 }, { 0, 3 }, { 1, 3 }, { 1, 2 },
1790};
1791
1792const 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};
1796const 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
1801const 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
1806const 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
1841const 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
1848static 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
1883static 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
1918static 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
1953const 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