Statistics
| Branch: | Revision:

ffmpeg / libavcodec / msmpeg4data.c @ 2912e87a

History | View | Annotate | Download (83.1 KB)

1
/*
2
 * MSMPEG4 backend for ffmpeg 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 Libav.
9
 *
10
 * Libav 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
 * Libav 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 Libav; 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 "msmpeg4data.h"
31

    
32
VLC ff_msmp4_mb_i_vlc;
33
VLC ff_msmp4_dc_luma_vlc[2];
34
VLC ff_msmp4_dc_chroma_vlc[2];
35

    
36
/* intra picture macroblock coded block pattern */
37
const uint16_t ff_msmp4_mb_i_table[64][2] = {
38
{  0x1, 1 },{  0x17,  6 },{   0x9,  5 },{   0x5,  5 },
39
{  0x6, 5 },{  0x47,  9 },{  0x20,  7 },{  0x10,  7 },
40
{  0x2, 5 },{  0x7c,  9 },{  0x3a,  7 },{  0x1d,  7 },
41
{  0x2, 6 },{  0xec,  9 },{  0x77,  8 },{   0x0,  8 },
42
{  0x3, 5 },{  0xb7,  9 },{  0x2c,  7 },{  0x13,  7 },
43
{  0x1, 6 },{ 0x168, 10 },{  0x46,  8 },{  0x3f,  8 },
44
{ 0x1e, 6 },{ 0x712, 13 },{  0xb5,  9 },{  0x42,  8 },
45
{ 0x22, 7 },{ 0x1c5, 11 },{ 0x11e, 10 },{  0x87,  9 },
46
{  0x6, 4 },{   0x3,  9 },{  0x1e,  7 },{  0x1c,  6 },
47
{ 0x12, 7 },{ 0x388, 12 },{  0x44,  9 },{  0x70,  9 },
48
{ 0x1f, 6 },{ 0x23e, 11 },{  0x39,  8 },{  0x8e,  9 },
49
{  0x1, 7 },{ 0x1c6, 11 },{  0xb6,  9 },{  0x45,  9 },
50
{ 0x14, 6 },{ 0x23f, 11 },{  0x7d,  9 },{  0x18,  9 },
51
{  0x7, 7 },{ 0x1c7, 11 },{  0x86,  9 },{  0x19,  9 },
52
{ 0x15, 6 },{ 0x1db, 10 },{   0x2,  9 },{  0x46,  9 },
53
{  0xd, 8 },{ 0x713, 13 },{ 0x1da, 10 },{ 0x169, 10 },
54
};
55

    
56
/* non intra picture macroblock coded block pattern + mb type */
57
const uint32_t table_mb_non_intra[128][2] = {
58
{   0x40,  7 },{   0x13c9, 13 },{   0x9fd, 12 },{   0x1fc, 15 },
59
{  0x9fc, 12 },{    0xa83, 18 },{ 0x12d34, 17 },{  0x83bc, 16 },
60
{  0x83a, 12 },{    0x7f8, 17 },{   0x3fd, 16 },{   0x3ff, 16 },
61
{   0x79, 13 },{    0xa82, 18 },{  0x969d, 16 },{   0x2a4, 16 },
62
{  0x978, 12 },{    0x543, 17 },{  0x41df, 15 },{   0x7f9, 17 },
63
{ 0x12f3, 13 },{  0x25a6b, 18 },{ 0x25ef9, 18 },{   0x3fa, 16 },
64
{ 0x20ee, 14 },{  0x969ab, 20 },{  0x969c, 16 },{ 0x25ef8, 18 },
65
{ 0x12d2, 13 },{    0xa85, 18 },{  0x969e, 16 },{  0x4bc8, 15 },
66
{   0x3d, 12 },{  0x12f7f, 17 },{   0x2a2, 16 },{  0x969f, 16 },
67
{ 0x25ee, 14 },{ 0x12d355, 21 },{ 0x12f7d, 17 },{ 0x12f7e, 17 },
68
{  0x9e5, 12 },{    0xa81, 18 },{ 0x4b4d4, 19 },{  0x83bd, 16 },
69
{   0x78, 13 },{   0x969b, 16 },{   0x3fe, 16 },{   0x2a5, 16 },
70
{   0x7e, 13 },{    0xa80, 18 },{   0x2a3, 16 },{   0x3fb, 16 },
71
{ 0x1076, 13 },{    0xa84, 18 },{   0x153, 15 },{  0x4bc9, 15 },
72
{   0x55, 13 },{ 0x12d354, 21 },{  0x4bde, 15 },{  0x25e5, 14 },
73
{  0x25b, 10 },{   0x4b4c, 15 },{   0x96b, 12 },{   0x96a, 12 },
74
{    0x1,  2 },{      0x0,  7 },{    0x26,  6 },{   0x12b,  9 },
75
{    0x7,  3 },{    0x20f, 10 },{     0x4,  9 },{    0x28, 12 },
76
{    0x6,  3 },{    0x20a, 10 },{   0x128,  9 },{    0x2b, 12 },
77
{   0x11,  5 },{     0x1b, 11 },{   0x13a,  9 },{   0x4ff, 11 },
78
{    0x3,  4 },{    0x277, 10 },{   0x106,  9 },{   0x839, 12 },
79
{    0xb,  4 },{    0x27b, 10 },{   0x12c,  9 },{   0x4bf, 11 },
80
{    0x9,  6 },{     0x35, 12 },{   0x27e, 10 },{  0x13c8, 13 },
81
{    0x1,  6 },{    0x4aa, 11 },{   0x208, 10 },{    0x29, 12 },
82
{    0x1,  4 },{    0x254, 10 },{   0x12e,  9 },{   0x838, 12 },
83
{   0x24,  6 },{    0x4f3, 11 },{   0x276, 10 },{  0x12f6, 13 },
84
{    0x1,  5 },{    0x27a, 10 },{   0x13e,  9 },{    0x3e, 12 },
85
{    0x8,  6 },{    0x413, 11 },{     0xc, 10 },{   0x4be, 11 },
86
{   0x14,  5 },{    0x412, 11 },{   0x253, 10 },{   0x97a, 12 },
87
{   0x21,  6 },{    0x4ab, 11 },{   0x20b, 10 },{    0x34, 12 },
88
{   0x15,  5 },{    0x278, 10 },{   0x252, 10 },{   0x968, 12 },
89
{    0x5,  5 },{      0xb, 10 },{    0x9c,  8 },{     0xe, 10 },
90
};
91

    
92
/* dc table 0 */
93

    
94
const uint32_t ff_table0_dc_lum[120][2] = {
95
{     0x1,  1 },{      0x1, 2 },{     0x1,  4 },{     0x1,  5 },
96
{     0x5,  5 },{      0x7, 5 },{     0x8,  6 },{     0xc,  6 },
97
{     0x0,  7 },{      0x2, 7 },{    0x12,  7 },{    0x1a,  7 },
98
{     0x3,  8 },{      0x7, 8 },{    0x27,  8 },{    0x37,  8 },
99
{     0x5,  9 },{     0x4c, 9 },{    0x6c,  9 },{    0x6d,  9 },
100
{     0x8, 10 },{    0x19, 10 },{    0x9b, 10 },{    0x1b, 10 },
101
{    0x9a, 10 },{    0x13, 11 },{    0x34, 11 },{    0x35, 11 },
102
{    0x61, 12 },{    0x48, 13 },{    0xc4, 13 },{    0x4a, 13 },
103
{    0xc6, 13 },{    0xc7, 13 },{    0x92, 14 },{   0x18b, 14 },
104
{    0x93, 14 },{   0x183, 14 },{   0x182, 14 },{    0x96, 14 },
105
{    0x97, 14 },{   0x180, 14 },{   0x314, 15 },{   0x315, 15 },
106
{   0x605, 16 },{   0x604, 16 },{   0x606, 16 },{   0xc0e, 17 },
107
{ 0x303cd, 23 },{ 0x303c9, 23 },{ 0x303c8, 23 },{ 0x303ca, 23 },
108
{ 0x303cb, 23 },{ 0x303cc, 23 },{ 0x303ce, 23 },{ 0x303cf, 23 },
109
{ 0x303d0, 23 },{ 0x303d1, 23 },{ 0x303d2, 23 },{ 0x303d3, 23 },
110
{ 0x303d4, 23 },{ 0x303d5, 23 },{ 0x303d6, 23 },{ 0x303d7, 23 },
111
{ 0x303d8, 23 },{ 0x303d9, 23 },{ 0x303da, 23 },{ 0x303db, 23 },
112
{ 0x303dc, 23 },{ 0x303dd, 23 },{ 0x303de, 23 },{ 0x303df, 23 },
113
{ 0x303e0, 23 },{ 0x303e1, 23 },{ 0x303e2, 23 },{ 0x303e3, 23 },
114
{ 0x303e4, 23 },{ 0x303e5, 23 },{ 0x303e6, 23 },{ 0x303e7, 23 },
115
{ 0x303e8, 23 },{ 0x303e9, 23 },{ 0x303ea, 23 },{ 0x303eb, 23 },
116
{ 0x303ec, 23 },{ 0x303ed, 23 },{ 0x303ee, 23 },{ 0x303ef, 23 },
117
{ 0x303f0, 23 },{ 0x303f1, 23 },{ 0x303f2, 23 },{ 0x303f3, 23 },
118
{ 0x303f4, 23 },{ 0x303f5, 23 },{ 0x303f6, 23 },{ 0x303f7, 23 },
119
{ 0x303f8, 23 },{ 0x303f9, 23 },{ 0x303fa, 23 },{ 0x303fb, 23 },
120
{ 0x303fc, 23 },{ 0x303fd, 23 },{ 0x303fe, 23 },{ 0x303ff, 23 },
121
{ 0x60780, 24 },{ 0x60781, 24 },{ 0x60782, 24 },{ 0x60783, 24 },
122
{ 0x60784, 24 },{ 0x60785, 24 },{ 0x60786, 24 },{ 0x60787, 24 },
123
{ 0x60788, 24 },{ 0x60789, 24 },{ 0x6078a, 24 },{ 0x6078b, 24 },
124
{ 0x6078c, 24 },{ 0x6078d, 24 },{ 0x6078e, 24 },{ 0x6078f, 24 },
125
};
126

    
127
const uint32_t ff_table0_dc_chroma[120][2] = {
128
{      0x0,  2 },{      0x1,  2 },{      0x5,  3 },{      0x9,  4 },
129
{      0xd,  4 },{     0x11,  5 },{     0x1d,  5 },{     0x1f,  5 },
130
{     0x21,  6 },{     0x31,  6 },{     0x38,  6 },{     0x33,  6 },
131
{     0x39,  6 },{     0x3d,  6 },{     0x61,  7 },{     0x79,  7 },
132
{     0x80,  8 },{     0xc8,  8 },{     0xca,  8 },{     0xf0,  8 },
133
{     0x81,  8 },{     0xc0,  8 },{     0xc9,  8 },{    0x107,  9 },
134
{    0x106,  9 },{    0x196,  9 },{    0x183,  9 },{    0x1e3,  9 },
135
{    0x1e2,  9 },{    0x20a, 10 },{    0x20b, 10 },{    0x609, 11 },
136
{    0x412, 11 },{    0x413, 11 },{    0x60b, 11 },{    0x411, 11 },
137
{    0x60a, 11 },{    0x65f, 11 },{    0x410, 11 },{    0x65d, 11 },
138
{    0x65e, 11 },{    0xcb8, 12 },{    0xc10, 12 },{    0xcb9, 12 },
139
{   0x1823, 13 },{   0x3045, 14 },{   0x6089, 15 },{   0xc110, 16 },
140
{ 0x304448, 22 },{ 0x304449, 22 },{ 0x30444a, 22 },{ 0x30444b, 22 },
141
{ 0x30444c, 22 },{ 0x30444d, 22 },{ 0x30444e, 22 },{ 0x30444f, 22 },
142
{ 0x304450, 22 },{ 0x304451, 22 },{ 0x304452, 22 },{ 0x304453, 22 },
143
{ 0x304454, 22 },{ 0x304455, 22 },{ 0x304456, 22 },{ 0x304457, 22 },
144
{ 0x304458, 22 },{ 0x304459, 22 },{ 0x30445a, 22 },{ 0x30445b, 22 },
145
{ 0x30445c, 22 },{ 0x30445d, 22 },{ 0x30445e, 22 },{ 0x30445f, 22 },
146
{ 0x304460, 22 },{ 0x304461, 22 },{ 0x304462, 22 },{ 0x304463, 22 },
147
{ 0x304464, 22 },{ 0x304465, 22 },{ 0x304466, 22 },{ 0x304467, 22 },
148
{ 0x304468, 22 },{ 0x304469, 22 },{ 0x30446a, 22 },{ 0x30446b, 22 },
149
{ 0x30446c, 22 },{ 0x30446d, 22 },{ 0x30446e, 22 },{ 0x30446f, 22 },
150
{ 0x304470, 22 },{ 0x304471, 22 },{ 0x304472, 22 },{ 0x304473, 22 },
151
{ 0x304474, 22 },{ 0x304475, 22 },{ 0x304476, 22 },{ 0x304477, 22 },
152
{ 0x304478, 22 },{ 0x304479, 22 },{ 0x30447a, 22 },{ 0x30447b, 22 },
153
{ 0x30447c, 22 },{ 0x30447d, 22 },{ 0x30447e, 22 },{ 0x30447f, 22 },
154
{ 0x608880, 23 },{ 0x608881, 23 },{ 0x608882, 23 },{ 0x608883, 23 },
155
{ 0x608884, 23 },{ 0x608885, 23 },{ 0x608886, 23 },{ 0x608887, 23 },
156
{ 0x608888, 23 },{ 0x608889, 23 },{ 0x60888a, 23 },{ 0x60888b, 23 },
157
{ 0x60888c, 23 },{ 0x60888d, 23 },{ 0x60888e, 23 },{ 0x60888f, 23 },
158
};
159

    
160
/* dc table 1 */
161

    
162
const uint32_t ff_table1_dc_lum[120][2] = {
163
{      0x2,  2 },{      0x3,  2 },{      0x3,  3 },{      0x2,  4 },
164
{      0x5,  4 },{      0x1,  5 },{      0x3,  5 },{      0x8,  5 },
165
{      0x0,  6 },{      0x5,  6 },{      0xd,  6 },{      0xf,  6 },
166
{     0x13,  6 },{      0x8,  7 },{     0x18,  7 },{     0x1c,  7 },
167
{     0x24,  7 },{      0x4,  8 },{      0x6,  8 },{     0x12,  8 },
168
{     0x32,  8 },{     0x3b,  8 },{     0x4a,  8 },{     0x4b,  8 },
169
{      0xb,  9 },{     0x26,  9 },{     0x27,  9 },{     0x66,  9 },
170
{     0x74,  9 },{     0x75,  9 },{     0x14, 10 },{     0x1c, 10 },
171
{     0x1f, 10 },{     0x1d, 10 },{     0x2b, 11 },{     0x3d, 11 },
172
{    0x19d, 11 },{    0x19f, 11 },{     0x54, 12 },{    0x339, 12 },
173
{    0x338, 12 },{    0x33d, 12 },{     0xab, 13 },{     0xf1, 13 },
174
{    0x678, 13 },{     0xf2, 13 },{    0x1e0, 14 },{    0x1e1, 14 },
175
{    0x154, 14 },{    0xcf2, 14 },{    0x3cc, 15 },{    0x2ab, 15 },
176
{   0x19e7, 15 },{    0x3ce, 15 },{   0x19e6, 15 },{    0x554, 16 },
177
{    0x79f, 16 },{    0x555, 16 },{    0xf3d, 17 },{    0xf37, 17 },
178
{    0xf3c, 17 },{    0xf35, 17 },{   0x1e6d, 18 },{   0x1e68, 18 },
179
{   0x3cd8, 19 },{   0x3cd3, 19 },{   0x3cd9, 19 },{   0x79a4, 20 },
180
{  0xf34ba, 25 },{  0xf34b4, 25 },{  0xf34b5, 25 },{  0xf34b6, 25 },
181
{  0xf34b7, 25 },{  0xf34b8, 25 },{  0xf34b9, 25 },{  0xf34bb, 25 },
182
{  0xf34bc, 25 },{  0xf34bd, 25 },{  0xf34be, 25 },{  0xf34bf, 25 },
183
{ 0x1e6940, 26 },{ 0x1e6941, 26 },{ 0x1e6942, 26 },{ 0x1e6943, 26 },
184
{ 0x1e6944, 26 },{ 0x1e6945, 26 },{ 0x1e6946, 26 },{ 0x1e6947, 26 },
185
{ 0x1e6948, 26 },{ 0x1e6949, 26 },{ 0x1e694a, 26 },{ 0x1e694b, 26 },
186
{ 0x1e694c, 26 },{ 0x1e694d, 26 },{ 0x1e694e, 26 },{ 0x1e694f, 26 },
187
{ 0x1e6950, 26 },{ 0x1e6951, 26 },{ 0x1e6952, 26 },{ 0x1e6953, 26 },
188
{ 0x1e6954, 26 },{ 0x1e6955, 26 },{ 0x1e6956, 26 },{ 0x1e6957, 26 },
189
{ 0x1e6958, 26 },{ 0x1e6959, 26 },{ 0x1e695a, 26 },{ 0x1e695b, 26 },
190
{ 0x1e695c, 26 },{ 0x1e695d, 26 },{ 0x1e695e, 26 },{ 0x1e695f, 26 },
191
{ 0x1e6960, 26 },{ 0x1e6961, 26 },{ 0x1e6962, 26 },{ 0x1e6963, 26 },
192
{ 0x1e6964, 26 },{ 0x1e6965, 26 },{ 0x1e6966, 26 },{ 0x1e6967, 26 },
193
};
194

    
195
const uint32_t ff_table1_dc_chroma[120][2] = {
196
{       0x0,  2 },{       0x1,  2 },{       0x4,  3 },{       0x7,  3 },
197
{       0xb,  4 },{       0xd,  4 },{      0x15,  5 },{      0x28,  6 },
198
{      0x30,  6 },{      0x32,  6 },{      0x52,  7 },{      0x62,  7 },
199
{      0x66,  7 },{      0xa6,  8 },{      0xc6,  8 },{      0xcf,  8 },
200
{     0x14f,  9 },{     0x18e,  9 },{     0x19c,  9 },{     0x29d, 10 },
201
{     0x33a, 10 },{     0x538, 11 },{     0x63c, 11 },{     0x63e, 11 },
202
{     0x63f, 11 },{     0x676, 11 },{     0xa73, 12 },{     0xc7a, 12 },
203
{     0xcef, 12 },{    0x14e5, 13 },{    0x19dd, 13 },{    0x29c8, 14 },
204
{    0x29c9, 14 },{    0x63dd, 15 },{    0x33b8, 14 },{    0x33b9, 14 },
205
{    0xc7b6, 16 },{    0x63d8, 15 },{    0x63df, 15 },{    0xc7b3, 16 },
206
{    0xc7b4, 16 },{    0xc7b5, 16 },{    0x63de, 15 },{    0xc7b7, 16 },
207
{    0xc7b8, 16 },{    0xc7b9, 16 },{   0x18f65, 17 },{   0x31ec8, 18 },
208
{  0xc7b248, 24 },{  0xc7b249, 24 },{  0xc7b24a, 24 },{  0xc7b24b, 24 },
209
{  0xc7b24c, 24 },{  0xc7b24d, 24 },{  0xc7b24e, 24 },{  0xc7b24f, 24 },
210
{  0xc7b250, 24 },{  0xc7b251, 24 },{  0xc7b252, 24 },{  0xc7b253, 24 },
211
{  0xc7b254, 24 },{  0xc7b255, 24 },{  0xc7b256, 24 },{  0xc7b257, 24 },
212
{  0xc7b258, 24 },{  0xc7b259, 24 },{  0xc7b25a, 24 },{  0xc7b25b, 24 },
213
{  0xc7b25c, 24 },{  0xc7b25d, 24 },{  0xc7b25e, 24 },{  0xc7b25f, 24 },
214
{  0xc7b260, 24 },{  0xc7b261, 24 },{  0xc7b262, 24 },{  0xc7b263, 24 },
215
{  0xc7b264, 24 },{  0xc7b265, 24 },{  0xc7b266, 24 },{  0xc7b267, 24 },
216
{  0xc7b268, 24 },{  0xc7b269, 24 },{  0xc7b26a, 24 },{  0xc7b26b, 24 },
217
{  0xc7b26c, 24 },{  0xc7b26d, 24 },{  0xc7b26e, 24 },{  0xc7b26f, 24 },
218
{  0xc7b270, 24 },{  0xc7b271, 24 },{  0xc7b272, 24 },{  0xc7b273, 24 },
219
{  0xc7b274, 24 },{  0xc7b275, 24 },{  0xc7b276, 24 },{  0xc7b277, 24 },
220
{  0xc7b278, 24 },{  0xc7b279, 24 },{  0xc7b27a, 24 },{  0xc7b27b, 24 },
221
{  0xc7b27c, 24 },{  0xc7b27d, 24 },{  0xc7b27e, 24 },{  0xc7b27f, 24 },
222
{ 0x18f6480, 25 },{ 0x18f6481, 25 },{ 0x18f6482, 25 },{ 0x18f6483, 25 },
223
{ 0x18f6484, 25 },{ 0x18f6485, 25 },{ 0x18f6486, 25 },{ 0x18f6487, 25 },
224
{ 0x18f6488, 25 },{ 0x18f6489, 25 },{ 0x18f648a, 25 },{ 0x18f648b, 25 },
225
{ 0x18f648c, 25 },{ 0x18f648d, 25 },{ 0x18f648e, 25 },{ 0x18f648f, 25 },
226
};
227

    
228
/* vlc table 0, for intra luma */
229

    
230
static const uint16_t table0_vlc[133][2] = {
231
{   0x1,  2 },{   0x6,  3 },{   0xf,  4 },{  0x16,  5 },
232
{  0x20,  6 },{  0x18,  7 },{   0x8,  8 },{  0x9a,  8 },
233
{  0x56,  9 },{ 0x13e,  9 },{  0xf0, 10 },{ 0x3a5, 10 },
234
{  0x77, 11 },{ 0x1ef, 11 },{  0x9a, 12 },{  0x5d, 13 },
235
{   0x1,  4 },{  0x11,  5 },{   0x2,  7 },{   0xb,  8 },
236
{  0x12,  9 },{ 0x1d6,  9 },{ 0x27e, 10 },{ 0x191, 11 },
237
{  0xea, 12 },{ 0x3dc, 12 },{ 0x13b, 13 },{   0x4,  5 },
238
{  0x14,  7 },{  0x9e,  8 },{   0x9, 10 },{ 0x1ac, 11 },
239
{ 0x1e2, 11 },{ 0x3ca, 12 },{  0x5f, 13 },{  0x17,  5 },
240
{  0x4e,  7 },{  0x5e,  9 },{  0xf3, 10 },{ 0x1ad, 11 },
241
{  0xec, 12 },{ 0x5f0, 13 },{   0xe,  6 },{  0xe1,  8 },
242
{ 0x3a4, 10 },{  0x9c, 12 },{ 0x13d, 13 },{  0x3b,  6 },
243
{  0x1c,  9 },{  0x14, 11 },{ 0x9be, 12 },{   0x6,  7 },
244
{  0x7a,  9 },{ 0x190, 11 },{ 0x137, 13 },{  0x1b,  7 },
245
{   0x8, 10 },{ 0x75c, 11 },{  0x71,  7 },{  0xd7, 10 },
246
{ 0x9bf, 12 },{   0x7,  8 },{  0xaf, 10 },{ 0x4cc, 11 },
247
{  0x34,  8 },{ 0x265, 10 },{  0x9f, 12 },{  0xe0,  8 },
248
{  0x16, 11 },{ 0x327, 12 },{  0x15,  9 },{ 0x17d, 11 },
249
{ 0xebb, 12 },{  0x14,  9 },{  0xf6, 10 },{ 0x1e4, 11 },
250
{  0xcb, 10 },{ 0x99d, 12 },{  0xca, 10 },{ 0x2fc, 12 },
251
{ 0x17f, 11 },{ 0x4cd, 11 },{ 0x2fd, 12 },{ 0x4fe, 11 },
252
{ 0x13a, 13 },{   0xa,  4 },{  0x42,  7 },{ 0x1d3,  9 },
253
{ 0x4dd, 11 },{  0x12,  5 },{  0xe8,  8 },{  0x4c, 11 },
254
{ 0x136, 13 },{  0x39,  6 },{ 0x264, 10 },{ 0xeba, 12 },
255
{   0x0,  7 },{  0xae, 10 },{ 0x99c, 12 },{  0x1f,  7 },
256
{ 0x4de, 11 },{  0x43,  7 },{ 0x4dc, 11 },{   0x3,  8 },
257
{ 0x3cb, 12 },{   0x6,  8 },{ 0x99e, 12 },{  0x2a,  8 },
258
{ 0x5f1, 13 },{   0xf,  8 },{ 0x9fe, 12 },{  0x33,  8 },
259
{ 0x9ff, 12 },{  0x98,  8 },{ 0x99f, 12 },{  0xea,  8 },
260
{ 0x13c, 13 },{  0x2e,  8 },{ 0x192, 11 },{ 0x136,  9 },
261
{  0x6a,  9 },{  0x15, 11 },{ 0x3af, 10 },{ 0x1e3, 11 },
262
{  0x74, 11 },{  0xeb, 12 },{ 0x2f9, 12 },{  0x5c, 13 },
263
{  0xed, 12 },{ 0x3dd, 12 },{ 0x326, 12 },{  0x5e, 13 },
264
{  0x16,  7 },
265
};
266

    
267
static const int8_t table0_level[132] = {
268
  1,  2,  3,  4,  5,  6,  7,  8,
269
  9, 10, 11, 12, 13, 14, 15, 16,
270
  1,  2,  3,  4,  5,  6,  7,  8,
271
  9, 10, 11,  1,  2,  3,  4,  5,
272
  6,  7,  8,  1,  2,  3,  4,  5,
273
  6,  7,  1,  2,  3,  4,  5,  1,
274
  2,  3,  4,  1,  2,  3,  4,  1,
275
  2,  3,  1,  2,  3,  1,  2,  3,
276
  1,  2,  3,  1,  2,  3,  1,  2,
277
  3,  1,  2,  3,  1,  2,  1,  2,
278
  1,  1,  1,  1,  1,  1,  2,  3,
279
  4,  1,  2,  3,  4,  1,  2,  3,
280
  1,  2,  3,  1,  2,  1,  2,  1,
281
  2,  1,  2,  1,  2,  1,  2,  1,
282
  2,  1,  2,  1,  2,  1,  2,  1,
283
  1,  1,  1,  1,  1,  1,  1,  1,
284
  1,  1,  1,  1,
285
};
286

    
287
static const int8_t table0_run[132] = {
288
  0,  0,  0,  0,  0,  0,  0,  0,
289
  0,  0,  0,  0,  0,  0,  0,  0,
290
  1,  1,  1,  1,  1,  1,  1,  1,
291
  1,  1,  1,  2,  2,  2,  2,  2,
292
  2,  2,  2,  3,  3,  3,  3,  3,
293
  3,  3,  4,  4,  4,  4,  4,  5,
294
  5,  5,  5,  6,  6,  6,  6,  7,
295
  7,  7,  8,  8,  8,  9,  9,  9,
296
 10, 10, 10, 11, 11, 11, 12, 12,
297
 12, 13, 13, 13, 14, 14, 15, 15,
298
 16, 17, 18, 19, 20,  0,  0,  0,
299
  0,  1,  1,  1,  1,  2,  2,  2,
300
  3,  3,  3,  4,  4,  5,  5,  6,
301
  6,  7,  7,  8,  8,  9,  9, 10,
302
 10, 11, 11, 12, 12, 13, 13, 14,
303
 15, 16, 17, 18, 19, 20, 21, 22,
304
 23, 24, 25, 26,
305
};
306

    
307
/* vlc table 1, for intra chroma and P macroblocks */
308

    
309
static const uint16_t table1_vlc[149][2] = {
310
{    0x4,  3 },{   0x14,  5 },{   0x17,  7 },{   0x7f,  8 },
311
{  0x154,  9 },{  0x1f2, 10 },{   0xbf, 11 },{   0x65, 12 },
312
{  0xaaa, 12 },{  0x630, 13 },{ 0x1597, 13 },{  0x3b7, 14 },
313
{ 0x2b22, 14 },{  0xbe6, 15 },{    0xb,  4 },{   0x37,  7 },
314
{   0x62,  9 },{    0x7, 11 },{  0x166, 12 },{   0xce, 13 },
315
{ 0x1590, 13 },{  0x5f6, 14 },{  0xbe7, 15 },{    0x7,  5 },
316
{   0x6d,  8 },{    0x3, 11 },{  0x31f, 12 },{  0x5f2, 14 },
317
{    0x2,  6 },{   0x61,  9 },{   0x55, 12 },{  0x1df, 14 },
318
{   0x1a,  6 },{   0x1e, 10 },{  0xac9, 12 },{ 0x2b23, 14 },
319
{   0x1e,  6 },{   0x1f, 10 },{  0xac3, 12 },{ 0x2b2b, 14 },
320
{    0x6,  7 },{    0x4, 11 },{  0x2f8, 13 },{   0x19,  7 },
321
{    0x6, 11 },{  0x63d, 13 },{   0x57,  7 },{  0x182, 11 },
322
{ 0x2aa2, 14 },{    0x4,  8 },{  0x180, 11 },{  0x59c, 14 },
323
{   0x7d,  8 },{  0x164, 12 },{  0x76d, 15 },{    0x2,  9 },
324
{  0x18d, 11 },{ 0x1581, 13 },{   0xad,  8 },{   0x60, 12 },
325
{  0xc67, 14 },{   0x1c,  9 },{   0xee, 13 },{    0x3,  9 },
326
{  0x2cf, 13 },{   0xd9,  9 },{ 0x1580, 13 },{    0x2, 11 },
327
{  0x183, 11 },{   0x57, 12 },{   0x61, 12 },{   0x31, 11 },
328
{   0x66, 12 },{  0x631, 13 },{  0x632, 13 },{   0xac, 13 },
329
{  0x31d, 12 },{   0x76, 12 },{   0x3a, 11 },{  0x165, 12 },
330
{  0xc66, 14 },{    0x3,  2 },{   0x54,  7 },{  0x2ab, 10 },
331
{   0x16, 13 },{  0x5f7, 14 },{    0x5,  4 },{   0xf8,  9 },
332
{  0xaa9, 12 },{   0x5f, 15 },{    0x4,  4 },{   0x1c, 10 },
333
{ 0x1550, 13 },{    0x4,  5 },{   0x77, 11 },{  0x76c, 15 },
334
{    0xe,  5 },{    0xa, 12 },{    0xc,  5 },{  0x562, 11 },
335
{    0x4,  6 },{  0x31c, 12 },{    0x6,  6 },{   0xc8, 13 },
336
{    0xd,  6 },{  0x1da, 13 },{    0x7,  6 },{   0xc9, 13 },
337
{    0x1,  7 },{   0x2e, 14 },{   0x14,  7 },{ 0x1596, 13 },
338
{    0xa,  7 },{  0xac2, 12 },{   0x16,  7 },{  0x15b, 14 },
339
{   0x15,  7 },{  0x15a, 14 },{    0xf,  8 },{   0x5e, 15 },
340
{   0x7e,  8 },{   0xab,  8 },{   0x2d,  9 },{   0xd8,  9 },
341
{    0xb,  9 },{   0x14, 10 },{  0x2b3, 10 },{  0x1f3, 10 },
342
{   0x3a, 10 },{    0x0, 10 },{   0x58, 10 },{   0x2e,  9 },
343
{   0x5e, 10 },{  0x563, 11 },{   0xec, 12 },{   0x54, 12 },
344
{  0xac1, 12 },{ 0x1556, 13 },{  0x2fa, 13 },{  0x181, 11 },
345
{ 0x1557, 13 },{  0x59d, 14 },{ 0x2aa3, 14 },{ 0x2b2a, 14 },
346
{  0x1de, 14 },{  0x63c, 13 },{   0xcf, 13 },{ 0x1594, 13 },
347
{    0xd,  9 },
348
};
349

    
350
static const int8_t table1_level[148] = {
351
  1,  2,  3,  4,  5,  6,  7,  8,
352
  9, 10, 11, 12, 13, 14,  1,  2,
353
  3,  4,  5,  6,  7,  8,  9,  1,
354
  2,  3,  4,  5,  1,  2,  3,  4,
355
  1,  2,  3,  4,  1,  2,  3,  4,
356
  1,  2,  3,  1,  2,  3,  1,  2,
357
  3,  1,  2,  3,  1,  2,  3,  1,
358
  2,  3,  1,  2,  3,  1,  2,  1,
359
  2,  1,  2,  1,  1,  1,  1,  1,
360
  1,  1,  1,  1,  1,  1,  1,  1,
361
  1,  1,  2,  3,  4,  5,  1,  2,
362
  3,  4,  1,  2,  3,  1,  2,  3,
363
  1,  2,  1,  2,  1,  2,  1,  2,
364
  1,  2,  1,  2,  1,  2,  1,  2,
365
  1,  2,  1,  2,  1,  2,  1,  2,
366
  1,  1,  1,  1,  1,  1,  1,  1,
367
  1,  1,  1,  1,  1,  1,  1,  1,
368
  1,  1,  1,  1,  1,  1,  1,  1,
369
  1,  1,  1,  1,
370
};
371

    
372
static const int8_t table1_run[148] = {
373
  0,  0,  0,  0,  0,  0,  0,  0,
374
  0,  0,  0,  0,  0,  0,  1,  1,
375
  1,  1,  1,  1,  1,  1,  1,  2,
376
  2,  2,  2,  2,  3,  3,  3,  3,
377
  4,  4,  4,  4,  5,  5,  5,  5,
378
  6,  6,  6,  7,  7,  7,  8,  8,
379
  8,  9,  9,  9, 10, 10, 10, 11,
380
 11, 11, 12, 12, 12, 13, 13, 14,
381
 14, 15, 15, 16, 17, 18, 19, 20,
382
 21, 22, 23, 24, 25, 26, 27, 28,
383
 29,  0,  0,  0,  0,  0,  1,  1,
384
  1,  1,  2,  2,  2,  3,  3,  3,
385
  4,  4,  5,  5,  6,  6,  7,  7,
386
  8,  8,  9,  9, 10, 10, 11, 11,
387
 12, 12, 13, 13, 14, 14, 15, 15,
388
 16, 17, 18, 19, 20, 21, 22, 23,
389
 24, 25, 26, 27, 28, 29, 30, 31,
390
 32, 33, 34, 35, 36, 37, 38, 39,
391
 40, 41, 42, 43,
392
};
393

    
394
/* third vlc table */
395

    
396
static const uint16_t table2_vlc[186][2] = {
397
{    0x1,  2 },{    0x5,  3 },{    0xd,  4 },{   0x12,  5 },
398
{    0xe,  6 },{   0x15,  7 },{   0x13,  8 },{   0x3f,  8 },
399
{   0x4b,  9 },{  0x11f,  9 },{   0xb8, 10 },{  0x3e3, 10 },
400
{  0x172, 11 },{  0x24d, 12 },{  0x3da, 12 },{  0x2dd, 13 },
401
{ 0x1f55, 13 },{  0x5b9, 14 },{ 0x3eae, 14 },{    0x0,  4 },
402
{   0x10,  5 },{    0x8,  7 },{   0x20,  8 },{   0x29,  9 },
403
{  0x1f4,  9 },{  0x233, 10 },{  0x1e0, 11 },{  0x12a, 12 },
404
{  0x3dd, 12 },{  0x50a, 13 },{ 0x1f29, 13 },{  0xa42, 14 },
405
{ 0x1272, 15 },{ 0x1737, 15 },{    0x3,  5 },{   0x11,  7 },
406
{   0xc4,  8 },{   0x4b, 10 },{   0xb4, 11 },{  0x7d4, 11 },
407
{  0x345, 12 },{  0x2d7, 13 },{  0x7bf, 13 },{  0x938, 14 },
408
{  0xbbb, 14 },{  0x95e, 15 },{   0x13,  5 },{   0x78,  7 },
409
{   0x69,  9 },{  0x232, 10 },{  0x461, 11 },{  0x3ec, 12 },
410
{  0x520, 13 },{ 0x1f2a, 13 },{ 0x3e50, 14 },{ 0x3e51, 14 },
411
{ 0x1486, 15 },{    0xc,  6 },{   0x24,  9 },{   0x94, 11 },
412
{  0x8c0, 12 },{  0xf09, 14 },{ 0x1ef0, 15 },{   0x3d,  6 },
413
{   0x53,  9 },{  0x1a0, 11 },{  0x2d6, 13 },{  0xf08, 14 },
414
{   0x13,  7 },{   0x7c,  9 },{  0x7c1, 11 },{  0x4ac, 14 },
415
{   0x1b,  7 },{   0xa0, 10 },{  0x344, 12 },{  0xf79, 14 },
416
{   0x79,  7 },{  0x3e1, 10 },{  0x2d4, 13 },{ 0x2306, 14 },
417
{   0x21,  8 },{  0x23c, 10 },{  0xfae, 12 },{ 0x23de, 14 },
418
{   0x35,  8 },{  0x175, 11 },{  0x7b3, 13 },{   0xc5,  8 },
419
{  0x174, 11 },{  0x785, 13 },{   0x48,  9 },{  0x1a3, 11 },
420
{  0x49e, 13 },{   0x2c,  9 },{   0xfa, 10 },{  0x7d6, 11 },
421
{   0x92, 10 },{  0x5cc, 13 },{ 0x1ef1, 15 },{   0xa3, 10 },
422
{  0x3ed, 12 },{  0x93e, 14 },{  0x1e2, 11 },{ 0x1273, 15 },
423
{  0x7c4, 11 },{ 0x1487, 15 },{  0x291, 12 },{  0x293, 12 },
424
{  0xf8a, 12 },{  0x509, 13 },{  0x508, 13 },{  0x78d, 13 },
425
{  0x7be, 13 },{  0x78c, 13 },{  0x4ae, 14 },{  0xbba, 14 },
426
{ 0x2307, 14 },{  0xb9a, 14 },{ 0x1736, 15 },{    0xe,  4 },
427
{   0x45,  7 },{  0x1f3,  9 },{  0x47a, 11 },{  0x5dc, 13 },
428
{ 0x23df, 14 },{   0x19,  5 },{   0x28,  9 },{  0x176, 11 },
429
{  0x49d, 13 },{ 0x23dd, 14 },{   0x30,  6 },{   0xa2, 10 },
430
{  0x2ef, 12 },{  0x5b8, 14 },{   0x3f,  6 },{   0xa5, 10 },
431
{  0x3db, 12 },{  0x93f, 14 },{   0x44,  7 },{  0x7cb, 11 },
432
{  0x95f, 15 },{   0x63,  7 },{  0x3c3, 12 },{   0x15,  8 },
433
{  0x8f6, 12 },{   0x17,  8 },{  0x498, 13 },{   0x2c,  8 },
434
{  0x7b2, 13 },{   0x2f,  8 },{ 0x1f54, 13 },{   0x8d,  8 },
435
{  0x7bd, 13 },{   0x8e,  8 },{ 0x1182, 13 },{   0xfb,  8 },
436
{  0x50b, 13 },{   0x2d,  8 },{  0x7c0, 11 },{   0x79,  9 },
437
{ 0x1f5f, 13 },{   0x7a,  9 },{ 0x1f56, 13 },{  0x231, 10 },
438
{  0x3e4, 10 },{  0x1a1, 11 },{  0x143, 11 },{  0x1f7, 11 },
439
{  0x16f, 12 },{  0x292, 12 },{  0x2e7, 12 },{  0x16c, 12 },
440
{  0x16d, 12 },{  0x3dc, 12 },{  0xf8b, 12 },{  0x499, 13 },
441
{  0x3d8, 12 },{  0x78e, 13 },{  0x2d5, 13 },{ 0x1f5e, 13 },
442
{ 0x1f2b, 13 },{  0x78f, 13 },{  0x4ad, 14 },{ 0x3eaf, 14 },
443
{ 0x23dc, 14 },{   0x4a,  9 },
444
};
445

    
446
static const int8_t table2_level[185] = {
447
  1,  2,  3,  4,  5,  6,  7,  8,
448
  9, 10, 11, 12, 13, 14, 15, 16,
449
 17, 18, 19,  1,  2,  3,  4,  5,
450
  6,  7,  8,  9, 10, 11, 12, 13,
451
 14, 15,  1,  2,  3,  4,  5,  6,
452
  7,  8,  9, 10, 11, 12,  1,  2,
453
  3,  4,  5,  6,  7,  8,  9, 10,
454
 11,  1,  2,  3,  4,  5,  6,  1,
455
  2,  3,  4,  5,  1,  2,  3,  4,
456
  1,  2,  3,  4,  1,  2,  3,  4,
457
  1,  2,  3,  4,  1,  2,  3,  1,
458
  2,  3,  1,  2,  3,  1,  2,  3,
459
  1,  2,  3,  1,  2,  3,  1,  2,
460
  1,  2,  1,  1,  1,  1,  1,  1,
461
  1,  1,  1,  1,  1,  1,  1,  1,
462
  2,  3,  4,  5,  6,  1,  2,  3,
463
  4,  5,  1,  2,  3,  4,  1,  2,
464
  3,  4,  1,  2,  3,  1,  2,  1,
465
  2,  1,  2,  1,  2,  1,  2,  1,
466
  2,  1,  2,  1,  2,  1,  2,  1,
467
  2,  1,  2,  1,  1,  1,  1,  1,
468
  1,  1,  1,  1,  1,  1,  1,  1,
469
  1,  1,  1,  1,  1,  1,  1,  1,
470
  1,
471
};
472

    
473
static const int8_t table2_run[185] = {
474
  0,  0,  0,  0,  0,  0,  0,  0,
475
  0,  0,  0,  0,  0,  0,  0,  0,
476
  0,  0,  0,  1,  1,  1,  1,  1,
477
  1,  1,  1,  1,  1,  1,  1,  1,
478
  1,  1,  2,  2,  2,  2,  2,  2,
479
  2,  2,  2,  2,  2,  2,  3,  3,
480
  3,  3,  3,  3,  3,  3,  3,  3,
481
  3,  4,  4,  4,  4,  4,  4,  5,
482
  5,  5,  5,  5,  6,  6,  6,  6,
483
  7,  7,  7,  7,  8,  8,  8,  8,
484
  9,  9,  9,  9, 10, 10, 10, 11,
485
 11, 11, 12, 12, 12, 13, 13, 13,
486
 14, 14, 14, 15, 15, 15, 16, 16,
487
 17, 17, 18, 19, 20, 21, 22, 23,
488
 24, 25, 26, 27, 28, 29, 30,  0,
489
  0,  0,  0,  0,  0,  1,  1,  1,
490
  1,  1,  2,  2,  2,  2,  3,  3,
491
  3,  3,  4,  4,  4,  5,  5,  6,
492
  6,  7,  7,  8,  8,  9,  9, 10,
493
 10, 11, 11, 12, 12, 13, 13, 14,
494
 14, 15, 15, 16, 17, 18, 19, 20,
495
 21, 22, 23, 24, 25, 26, 27, 28,
496
 29, 30, 31, 32, 33, 34, 35, 36,
497
 37,
498
};
499

    
500
/* second non intra vlc table */
501
static const uint16_t table4_vlc[169][2] = {
502
{    0x0,  3 },{    0x3,  4 },{    0xb,  5 },{   0x14,  6 },
503
{   0x3f,  6 },{   0x5d,  7 },{   0xa2,  8 },{   0xac,  9 },
504
{  0x16e,  9 },{  0x20a, 10 },{  0x2e2, 10 },{  0x432, 11 },
505
{  0x5c9, 11 },{  0x827, 12 },{  0xb54, 12 },{  0x4e6, 13 },
506
{ 0x105f, 13 },{ 0x172a, 13 },{ 0x20b2, 14 },{ 0x2d4e, 14 },
507
{ 0x39f0, 14 },{ 0x4175, 15 },{ 0x5a9e, 15 },{    0x4,  4 },
508
{   0x1e,  5 },{   0x42,  7 },{   0xb6,  8 },{  0x173,  9 },
509
{  0x395, 10 },{  0x72e, 11 },{  0xb94, 12 },{ 0x16a4, 13 },
510
{ 0x20b3, 14 },{ 0x2e45, 14 },{    0x5,  5 },{   0x40,  7 },
511
{   0x49,  9 },{  0x28f, 10 },{  0x5cb, 11 },{  0x48a, 13 },
512
{  0x9dd, 14 },{ 0x73e2, 15 },{   0x18,  5 },{   0x25,  8 },
513
{   0x8a, 10 },{  0x51b, 11 },{  0xe5f, 12 },{  0x9c9, 14 },
514
{ 0x139c, 15 },{   0x29,  6 },{   0x4f,  9 },{  0x412, 11 },
515
{  0x48d, 13 },{ 0x2e41, 14 },{   0x38,  6 },{  0x10e,  9 },
516
{  0x5a8, 11 },{ 0x105c, 13 },{ 0x39f2, 14 },{   0x58,  7 },
517
{  0x21f, 10 },{  0xe7e, 12 },{ 0x39ff, 14 },{   0x23,  8 },
518
{  0x2e3, 10 },{  0x4e5, 13 },{ 0x2e40, 14 },{   0xa1,  8 },
519
{  0x5be, 11 },{  0x9c8, 14 },{   0x83,  8 },{  0x13a, 11 },
520
{ 0x1721, 13 },{   0x44,  9 },{  0x276, 12 },{ 0x39f6, 14 },
521
{   0x8b, 10 },{  0x4ef, 13 },{ 0x5a9b, 15 },{  0x208, 10 },
522
{ 0x1cfe, 13 },{  0x399, 10 },{ 0x1cb4, 13 },{  0x39e, 10 },
523
{ 0x39f3, 14 },{  0x5ab, 11 },{ 0x73e3, 15 },{  0x737, 11 },
524
{ 0x5a9f, 15 },{  0x82d, 12 },{  0xe69, 12 },{  0xe68, 12 },
525
{  0x433, 11 },{  0xb7b, 12 },{ 0x2df8, 14 },{ 0x2e56, 14 },
526
{ 0x2e57, 14 },{ 0x39f7, 14 },{ 0x51a5, 15 },{    0x3,  3 },
527
{   0x2a,  6 },{   0xe4,  8 },{  0x28e, 10 },{  0x735, 11 },
528
{ 0x1058, 13 },{ 0x1cfa, 13 },{ 0x2df9, 14 },{ 0x4174, 15 },
529
{    0x9,  4 },{   0x54,  8 },{  0x398, 10 },{  0x48b, 13 },
530
{ 0x139d, 15 },{    0xd,  4 },{   0xad,  9 },{  0x826, 12 },
531
{ 0x2d4c, 14 },{   0x11,  5 },{  0x16b,  9 },{  0xb7f, 12 },
532
{ 0x51a4, 15 },{   0x19,  5 },{  0x21b, 10 },{ 0x16fd, 13 },
533
{   0x1d,  5 },{  0x394, 10 },{ 0x28d3, 14 },{   0x2b,  6 },
534
{  0x5bc, 11 },{ 0x5a9a, 15 },{   0x2f,  6 },{  0x247, 12 },
535
{   0x10,  7 },{  0xa35, 12 },{   0x3e,  6 },{  0xb7a, 12 },
536
{   0x59,  7 },{ 0x105e, 13 },{   0x26,  8 },{  0x9cf, 14 },
537
{   0x55,  8 },{ 0x1cb5, 13 },{   0x57,  8 },{  0xe5b, 12 },
538
{   0xa0,  8 },{ 0x1468, 13 },{  0x170,  9 },{   0x90, 10 },
539
{  0x1ce,  9 },{  0x21a, 10 },{  0x218, 10 },{  0x168,  9 },
540
{  0x21e, 10 },{  0x244, 12 },{  0x736, 11 },{  0x138, 11 },
541
{  0x519, 11 },{  0xe5e, 12 },{  0x72c, 11 },{  0xb55, 12 },
542
{  0x9dc, 14 },{ 0x20bb, 14 },{  0x48c, 13 },{ 0x1723, 13 },
543
{ 0x2e44, 14 },{ 0x16a5, 13 },{  0x518, 11 },{ 0x39fe, 14 },
544
{  0x169,  9 },
545
};
546

    
547
static const int8_t table4_level[168] = {
548
  1,  2,  3,  4,  5,  6,  7,  8,
549
  9, 10, 11, 12, 13, 14, 15, 16,
550
 17, 18, 19, 20, 21, 22, 23,  1,
551
  2,  3,  4,  5,  6,  7,  8,  9,
552
 10, 11,  1,  2,  3,  4,  5,  6,
553
  7,  8,  1,  2,  3,  4,  5,  6,
554
  7,  1,  2,  3,  4,  5,  1,  2,
555
  3,  4,  5,  1,  2,  3,  4,  1,
556
  2,  3,  4,  1,  2,  3,  1,  2,
557
  3,  1,  2,  3,  1,  2,  3,  1,
558
  2,  1,  2,  1,  2,  1,  2,  1,
559
  2,  1,  1,  1,  1,  1,  1,  1,
560
  1,  1,  1,  1,  2,  3,  4,  5,
561
  6,  7,  8,  9,  1,  2,  3,  4,
562
  5,  1,  2,  3,  4,  1,  2,  3,
563
  4,  1,  2,  3,  1,  2,  3,  1,
564
  2,  3,  1,  2,  1,  2,  1,  2,
565
  1,  2,  1,  2,  1,  2,  1,  2,
566
  1,  2,  1,  1,  1,  1,  1,  1,
567
  1,  1,  1,  1,  1,  1,  1,  1,
568
  1,  1,  1,  1,  1,  1,  1,  1,
569
};
570

    
571
static const int8_t table4_run[168] = {
572
  0,  0,  0,  0,  0,  0,  0,  0,
573
  0,  0,  0,  0,  0,  0,  0,  0,
574
  0,  0,  0,  0,  0,  0,  0,  1,
575
  1,  1,  1,  1,  1,  1,  1,  1,
576
  1,  1,  2,  2,  2,  2,  2,  2,
577
  2,  2,  3,  3,  3,  3,  3,  3,
578
  3,  4,  4,  4,  4,  4,  5,  5,
579
  5,  5,  5,  6,  6,  6,  6,  7,
580
  7,  7,  7,  8,  8,  8,  9,  9,
581
  9, 10, 10, 10, 11, 11, 11, 12,
582
 12, 13, 13, 14, 14, 15, 15, 16,
583
 16, 17, 18, 19, 20, 21, 22, 23,
584
 24, 25, 26,  0,  0,  0,  0,  0,
585
  0,  0,  0,  0,  1,  1,  1,  1,
586
  1,  2,  2,  2,  2,  3,  3,  3,
587
  3,  4,  4,  4,  5,  5,  5,  6,
588
  6,  6,  7,  7,  8,  8,  9,  9,
589
 10, 10, 11, 11, 12, 12, 13, 13,
590
 14, 14, 15, 16, 17, 18, 19, 20,
591
 21, 22, 23, 24, 25, 26, 27, 28,
592
 29, 30, 31, 32, 33, 34, 35, 36,
593
};
594

    
595
extern const uint16_t inter_vlc[103][2];
596
extern const int8_t inter_level[102];
597
extern const int8_t inter_run[102];
598

    
599
extern const uint16_t ff_mpeg4_intra_vlc[103][2];
600
extern const int8_t ff_mpeg4_intra_level[102];
601
extern const int8_t ff_mpeg4_intra_run[102];
602

    
603
RLTable rl_table[NB_RL_TABLES] = {
604
    /* intra luminance tables */
605
    /* low motion  */
606
    {
607
        132,
608
        85,
609
        table0_vlc,
610
        table0_run,
611
        table0_level,
612
    },
613
    /* high motion */
614
    {
615
        185,
616
        119,
617
        table2_vlc,
618
        table2_run,
619
        table2_level,
620
    },
621
    /* mid-rate */
622
    {
623
        102,
624
        67,
625
        ff_mpeg4_intra_vlc,
626
        ff_mpeg4_intra_run,
627
        ff_mpeg4_intra_level,
628
    },
629
    /* intra chrominance / non intra tables */
630
    /* low motion inter */
631
    {
632
        148,
633
        81,
634
        table1_vlc,
635
        table1_run,
636
        table1_level,
637
    },
638
    /* high motion inter */
639
    {
640
        168,
641
        99,
642
        table4_vlc,
643
        table4_run,
644
        table4_level,
645
    },
646
    /* mid rate inter */
647
    {
648
        102,
649
        58,
650
        inter_vlc,
651
        inter_run,
652
        inter_level,
653
    },
654
};
655

    
656
/* motion vector table 0 */
657

    
658
static const uint16_t table0_mv_code[1100] = {
659
 0x0001, 0x0003, 0x0005, 0x0007, 0x0003, 0x0008, 0x000c, 0x0001,
660
 0x0002, 0x001b, 0x0006, 0x000b, 0x0015, 0x0002, 0x000e, 0x000f,
661
 0x0014, 0x0020, 0x0022, 0x0025, 0x0027, 0x0029, 0x002d, 0x004b,
662
 0x004d, 0x0003, 0x0022, 0x0023, 0x0025, 0x0027, 0x0042, 0x0048,
663
 0x0049, 0x0050, 0x005c, 0x0091, 0x009f, 0x000e, 0x0043, 0x004c,
664
 0x0054, 0x0056, 0x008c, 0x0098, 0x009a, 0x009b, 0x00b1, 0x00b2,
665
 0x0120, 0x0121, 0x0126, 0x0133, 0x0139, 0x01a1, 0x01a4, 0x01a5,
666
 0x01a6, 0x01a7, 0x01ae, 0x01af, 0x000b, 0x0019, 0x0085, 0x0090,
667
 0x009b, 0x00aa, 0x00af, 0x010c, 0x010e, 0x011c, 0x011e, 0x0133,
668
 0x0144, 0x0160, 0x0174, 0x0175, 0x0177, 0x0178, 0x0249, 0x024b,
669
 0x0252, 0x0261, 0x0265, 0x0270, 0x0352, 0x0353, 0x0355, 0x0359,
670
 0x0010, 0x0011, 0x0013, 0x0034, 0x0035, 0x0036, 0x0037, 0x003d,
671
 0x003e, 0x0109, 0x0126, 0x0156, 0x021a, 0x021e, 0x023a, 0x023e,
672
 0x028e, 0x028f, 0x02cf, 0x0491, 0x0494, 0x049f, 0x04a0, 0x04a3,
673
 0x04a6, 0x04a7, 0x04ad, 0x04ae, 0x04c0, 0x04c4, 0x04c6, 0x04c8,
674
 0x04c9, 0x04f5, 0x04f6, 0x04f7, 0x0680, 0x0682, 0x0683, 0x0688,
675
 0x0689, 0x068d, 0x068e, 0x068f, 0x06a2, 0x06a3, 0x06a9, 0x06b0,
676
 0x06b1, 0x06b4, 0x06b5, 0x0024, 0x0060, 0x0063, 0x0078, 0x0079,
677
 0x0211, 0x0244, 0x0245, 0x0247, 0x0248, 0x0249, 0x024a, 0x024b,
678
 0x026b, 0x02af, 0x02b8, 0x02bb, 0x0436, 0x0476, 0x0477, 0x047e,
679
 0x04c8, 0x04c9, 0x04ca, 0x0514, 0x0586, 0x0587, 0x0598, 0x059d,
680
 0x05d9, 0x05da, 0x0920, 0x0921, 0x093b, 0x093c, 0x093d, 0x0942,
681
 0x0943, 0x0944, 0x0945, 0x0959, 0x095e, 0x095f, 0x0982, 0x0983,
682
 0x098e, 0x098f, 0x09c4, 0x09e7, 0x09e8, 0x09e9, 0x0d02, 0x0d17,
683
 0x0d18, 0x0d19, 0x0d41, 0x0d42, 0x0d43, 0x0d50, 0x0d5f, 0x0d6d,
684
 0x0d6e, 0x0d6f, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
685
 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x041e, 0x041f, 0x0420, 0x0421,
686
 0x048c, 0x048d, 0x04d3, 0x04d4, 0x04d5, 0x055c, 0x055d, 0x0572,
687
 0x0573, 0x0574, 0x0575, 0x08de, 0x08df, 0x08fe, 0x08ff, 0x0996,
688
 0x0a36, 0x0a37, 0x0b08, 0x0b09, 0x0b0a, 0x0b0b, 0x0b32, 0x0b33,
689
 0x0b34, 0x0b35, 0x0b36, 0x0b37, 0x0b38, 0x0b39, 0x0bb0, 0x0bf7,
690
 0x0bf8, 0x0bf9, 0x0bfa, 0x0bfb, 0x0bfc, 0x0bfd, 0x0bfe, 0x0bff,
691
 0x1254, 0x1255, 0x1256, 0x1257, 0x1270, 0x1271, 0x1272, 0x1273,
692
 0x1274, 0x1275, 0x12ab, 0x12ac, 0x12ad, 0x12ae, 0x12af, 0x12b0,
693
 0x12b1, 0x1315, 0x1316, 0x1317, 0x13bf, 0x13c0, 0x13c1, 0x13c2,
694
 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca,
695
 0x13cb, 0x13cc, 0x13cd, 0x1a06, 0x1a07, 0x1a28, 0x1a29, 0x1a2a,
696
 0x1a2b, 0x1a2c, 0x1a2d, 0x1a80, 0x1abb, 0x1abc, 0x1abd, 0x1ad8,
697
 0x1ad9, 0x0094, 0x0095, 0x0096, 0x0097, 0x00a0, 0x00a1, 0x00a2,
698
 0x00a3, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, 0x0837,
699
 0x0838, 0x0839, 0x083a, 0x083b, 0x0939, 0x093a, 0x093b, 0x093c,
700
 0x093d, 0x093e, 0x093f, 0x09a0, 0x09a1, 0x09a2, 0x09a3, 0x09a4,
701
 0x09a5, 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2,
702
 0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba,
703
 0x11bb, 0x132f, 0x1454, 0x1455, 0x1456, 0x1457, 0x1458, 0x1459,
704
 0x145a, 0x145b, 0x145c, 0x145d, 0x145e, 0x145f, 0x1460, 0x1461,
705
 0x1462, 0x1463, 0x1464, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469,
706
 0x146a, 0x146b, 0x17de, 0x17df, 0x17e0, 0x17e1, 0x17e2, 0x17e3,
707
 0x17e4, 0x17e5, 0x17e6, 0x17e7, 0x17e8, 0x17e9, 0x17ea, 0x17eb,
708
 0x17ec, 0x17ed, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545,
709
 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d,
710
 0x254e, 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555,
711
 0x2628, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
712
 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2772, 0x2773, 0x2774,
713
 0x2775, 0x2776, 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c,
714
 0x277d, 0x3503, 0x3544, 0x3545, 0x3546, 0x3547, 0x3560, 0x3561,
715
 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568, 0x3569,
716
 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570, 0x3571,
717
 0x3572, 0x3573, 0x3574, 0x3575, 0x03f0, 0x103d, 0x103e, 0x103f,
718
 0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047,
719
 0x1048, 0x1049, 0x104a, 0x104b, 0x104c, 0x104d, 0x104e, 0x104f,
720
 0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057,
721
 0x1058, 0x1059, 0x105a, 0x105b, 0x105c, 0x105d, 0x105e, 0x105f,
722
 0x1060, 0x1061, 0x1270, 0x1271, 0x21b8, 0x21b9, 0x21ba, 0x21bb,
723
 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x21f0, 0x21f1, 0x21f2, 0x21f3,
724
 0x21f4, 0x21f5, 0x21f6, 0x21f7, 0x21f8, 0x21f9, 0x21fa, 0x21fb,
725
 0x21fc, 0x21fd, 0x21fe, 0x21ff, 0x2340, 0x2341, 0x2342, 0x2343,
726
 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b,
727
 0x234c, 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353,
728
 0x2354, 0x2355, 0x2356, 0x2357, 0x265c, 0x2f88, 0x2f89, 0x2f8a,
729
 0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f, 0x2f90, 0x2f91, 0x2f92,
730
 0x2f93, 0x2f94, 0x2f95, 0x2f96, 0x2f97, 0x2f98, 0x2f99, 0x2f9a,
731
 0x2f9b, 0x2f9c, 0x2f9d, 0x2f9e, 0x2f9f, 0x2fa0, 0x2fa1, 0x2fa2,
732
 0x2fa3, 0x2fa4, 0x2fa5, 0x2fa6, 0x2fa7, 0x2fa8, 0x2fa9, 0x2faa,
733
 0x2fab, 0x2fac, 0x2fad, 0x2fae, 0x2faf, 0x2fb0, 0x2fb1, 0x2fb2,
734
 0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7, 0x2fb8, 0x2fb9, 0x2fba,
735
 0x2fbb, 0x4c52, 0x4c53, 0x4e28, 0x4e29, 0x4e2a, 0x4e2b, 0x4e2c,
736
 0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34,
737
 0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c,
738
 0x4e3d, 0x4e3e, 0x4e3f, 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84,
739
 0x4e85, 0x4e86, 0x4e87, 0x4e88, 0x4e89, 0x4e8a, 0x4e8b, 0x4e8c,
740
 0x4e8d, 0x4e8e, 0x4e8f, 0x4e90, 0x4e91, 0x4e92, 0x4e93, 0x4e94,
741
 0x4e95, 0x4e96, 0x4e97, 0x4e98, 0x4e99, 0x4e9a, 0x4e9b, 0x4e9c,
742
 0x4e9d, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea1, 0x4ea2, 0x4ea3, 0x4ea4,
743
 0x4ea5, 0x4ea6, 0x4ea7, 0x4ea8, 0x4ea9, 0x4eaa, 0x4eab, 0x4eac,
744
 0x4ead, 0x4eae, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb2, 0x4eb3, 0x4eb4,
745
 0x4eb5, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9, 0x4eba, 0x4ebb, 0x4ebc,
746
 0x4ebd, 0x4ebe, 0x4ebf, 0x4ec0, 0x4ec1, 0x4ec2, 0x4ec3, 0x4ec4,
747
 0x4ec5, 0x4ec6, 0x4ec7, 0x4ec8, 0x4ec9, 0x4eca, 0x4ecb, 0x6a04,
748
 0x6a05, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, 0x07e8,
749
 0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, 0x07f0,
750
 0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, 0x07f8,
751
 0x07f9, 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x07fe, 0x07ff, 0x2000,
752
 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
753
 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, 0x2010,
754
 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, 0x2018,
755
 0x2019, 0x201a, 0x201b, 0x201c, 0x201d, 0x201e, 0x201f, 0x2020,
756
 0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, 0x2028,
757
 0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f, 0x2030,
758
 0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, 0x2038,
759
 0x2039, 0x203a, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f, 0x2040,
760
 0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046, 0x2047, 0x2048,
761
 0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f, 0x2050,
762
 0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057, 0x2058,
763
 0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f, 0x2060,
764
 0x2061, 0x2062, 0x2063, 0x2064, 0x2065, 0x2066, 0x2067, 0x2068,
765
 0x2069, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, 0x2070,
766
 0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078,
767
 0x2079, 0x4cba, 0x4cbb, 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c,
768
 0x5d8d, 0x5d8e, 0x5d8f, 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4,
769
 0x5db5, 0x5db6, 0x5db7, 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc,
770
 0x5dbd, 0x5dbe, 0x5dbf, 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44,
771
 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4c,
772
 0x5e4d, 0x5e4e, 0x5e4f, 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54,
773
 0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c,
774
 0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64,
775
 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c,
776
 0x5e6d, 0x5e6e, 0x5e6f, 0x5e70, 0x5e71, 0x5e72, 0x5e73, 0x5e74,
777
 0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c,
778
 0x5e7d, 0x5e7e, 0x5e7f, 0x5e80, 0x5e81, 0x5e82, 0x5e83, 0x5e84,
779
 0x5e85, 0x5e86, 0x5e87, 0x5e88, 0x5e89, 0x5e8a, 0x5e8b, 0x5e8c,
780
 0x5e8d, 0x5e8e, 0x5e8f, 0x5e90, 0x5e91, 0x5e92, 0x5e93, 0x5e94,
781
 0x5e95, 0x5e96, 0x5e97, 0x5e98, 0x5e99, 0x5e9a, 0x5e9b, 0x5e9c,
782
 0x5e9d, 0x5e9e, 0x5e9f, 0x5ea0, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4,
783
 0x5ea5, 0x5ea6, 0x5ea7, 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac,
784
 0x5ead, 0x5eae, 0x5eaf, 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb3, 0x5eb4,
785
 0x5eb5, 0x5eb6, 0x5eb7, 0x5eb8, 0x5eb9, 0x5eba, 0x5ebb, 0x5ebc,
786
 0x5ebd, 0x5ebe, 0x5ebf, 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4,
787
 0x5ec5, 0x5ec6, 0x5ec7, 0x5ec8, 0x5ec9, 0x5eca, 0x5ecb, 0x5ecc,
788
 0x5ecd, 0x5ece, 0x5ecf, 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4,
789
 0x5ed5, 0x5ed6, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edb, 0x5edc,
790
 0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
791
 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee8, 0x5ee9, 0x5eea, 0x5eeb, 0x5eec,
792
 0x5eed, 0x5eee, 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef4,
793
 0x5ef5, 0x5ef6, 0x5ef7, 0x5ef8, 0x5ef9, 0x5efa, 0x5efb, 0x5efc,
794
 0x5efd, 0x5efe, 0x5eff, 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04,
795
 0x5f05, 0x5f06, 0x5f07, 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c,
796
 0x5f0d, 0x5f0e, 0x5f0f, 0x0000,
797
};
798

    
799
static const uint8_t table0_mv_bits[1100] = {
800
  1,  4,  4,  4,  5,  5,  5,  6,
801
  6,  6,  7,  7,  7,  8,  8,  8,
802
  8,  8,  8,  8,  8,  8,  8,  8,
803
  8,  9,  9,  9,  9,  9,  9,  9,
804
  9,  9,  9,  9,  9, 10, 10, 10,
805
 10, 10, 10, 10, 10, 10, 10, 10,
806
 10, 10, 10, 10, 10, 10, 10, 10,
807
 10, 10, 10, 10, 11, 11, 11, 11,
808
 11, 11, 11, 11, 11, 11, 11, 11,
809
 11, 11, 11, 11, 11, 11, 11, 11,
810
 11, 11, 11, 11, 11, 11, 11, 11,
811
 12, 12, 12, 12, 12, 12, 12, 12,
812
 12, 12, 12, 12, 12, 12, 12, 12,
813
 12, 12, 12, 12, 12, 12, 12, 12,
814
 12, 12, 12, 12, 12, 12, 12, 12,
815
 12, 12, 12, 12, 12, 12, 12, 12,
816
 12, 12, 12, 12, 12, 12, 12, 12,
817
 12, 12, 12, 13, 13, 13, 13, 13,
818
 13, 13, 13, 13, 13, 13, 13, 13,
819
 13, 13, 13, 13, 13, 13, 13, 13,
820
 13, 13, 13, 13, 13, 13, 13, 13,
821
 13, 13, 13, 13, 13, 13, 13, 13,
822
 13, 13, 13, 13, 13, 13, 13, 13,
823
 13, 13, 13, 13, 13, 13, 13, 13,
824
 13, 13, 13, 13, 13, 13, 13, 13,
825
 13, 13, 14, 14, 14, 14, 14, 14,
826
 14, 14, 14, 14, 14, 14, 14, 14,
827
 14, 14, 14, 14, 14, 14, 14, 14,
828
 14, 14, 14, 14, 14, 14, 14, 14,
829
 14, 14, 14, 14, 14, 14, 14, 14,
830
 14, 14, 14, 14, 14, 14, 14, 14,
831
 14, 14, 14, 14, 14, 14, 14, 14,
832
 14, 14, 14, 14, 14, 14, 14, 14,
833
 14, 14, 14, 14, 14, 14, 14, 14,
834
 14, 14, 14, 14, 14, 14, 14, 14,
835
 14, 14, 14, 14, 14, 14, 14, 14,
836
 14, 14, 14, 14, 14, 14, 14, 14,
837
 14, 14, 14, 14, 14, 14, 14, 14,
838
 14, 15, 15, 15, 15, 15, 15, 15,
839
 15, 15, 15, 15, 15, 15, 15, 15,
840
 15, 15, 15, 15, 15, 15, 15, 15,
841
 15, 15, 15, 15, 15, 15, 15, 15,
842
 15, 15, 15, 15, 15, 15, 15, 15,
843
 15, 15, 15, 15, 15, 15, 15, 15,
844
 15, 15, 15, 15, 15, 15, 15, 15,
845
 15, 15, 15, 15, 15, 15, 15, 15,
846
 15, 15, 15, 15, 15, 15, 15, 15,
847
 15, 15, 15, 15, 15, 15, 15, 15,
848
 15, 15, 15, 15, 15, 15, 15, 15,
849
 15, 15, 15, 15, 15, 15, 15, 15,
850
 15, 15, 15, 15, 15, 15, 15, 15,
851
 15, 15, 15, 15, 15, 15, 15, 15,
852
 15, 15, 15, 15, 15, 15, 15, 15,
853
 15, 15, 15, 15, 15, 15, 15, 15,
854
 15, 15, 15, 15, 15, 15, 15, 15,
855
 15, 15, 15, 15, 15, 15, 15, 15,
856
 15, 15, 15, 15, 15, 15, 15, 15,
857
 15, 15, 15, 15, 15, 15, 15, 15,
858
 15, 15, 15, 15, 16, 16, 16, 16,
859
 16, 16, 16, 16, 16, 16, 16, 16,
860
 16, 16, 16, 16, 16, 16, 16, 16,
861
 16, 16, 16, 16, 16, 16, 16, 16,
862
 16, 16, 16, 16, 16, 16, 16, 16,
863
 16, 16, 16, 16, 16, 16, 16, 16,
864
 16, 16, 16, 16, 16, 16, 16, 16,
865
 16, 16, 16, 16, 16, 16, 16, 16,
866
 16, 16, 16, 16, 16, 16, 16, 16,
867
 16, 16, 16, 16, 16, 16, 16, 16,
868
 16, 16, 16, 16, 16, 16, 16, 16,
869
 16, 16, 16, 16, 16, 16, 16, 16,
870
 16, 16, 16, 16, 16, 16, 16, 16,
871
 16, 16, 16, 16, 16, 16, 16, 16,
872
 16, 16, 16, 16, 16, 16, 16, 16,
873
 16, 16, 16, 16, 16, 16, 16, 16,
874
 16, 16, 16, 16, 16, 16, 16, 16,
875
 16, 16, 16, 16, 16, 16, 16, 16,
876
 16, 16, 16, 16, 16, 16, 16, 16,
877
 16, 16, 16, 16, 16, 16, 16, 16,
878
 16, 16, 16, 16, 16, 16, 16, 16,
879
 16, 16, 16, 16, 16, 16, 16, 16,
880
 16, 16, 16, 16, 16, 16, 16, 16,
881
 16, 16, 16, 16, 16, 16, 16, 16,
882
 16, 16, 16, 16, 16, 16, 16, 16,
883
 16, 16, 16, 16, 16, 16, 16, 16,
884
 16, 16, 16, 16, 16, 16, 16, 16,
885
 16, 16, 16, 16, 16, 16, 16, 16,
886
 16, 16, 16, 16, 16, 16, 16, 16,
887
 16, 16, 16, 16, 16, 16, 16, 16,
888
 16, 16, 16, 16, 16, 16, 16, 16,
889
 16, 17, 17, 17, 17, 17, 17, 17,
890
 17, 17, 17, 17, 17, 17, 17, 17,
891
 17, 17, 17, 17, 17, 17, 17, 17,
892
 17, 17, 17, 17, 17, 17, 17, 17,
893
 17, 17, 17, 17, 17, 17, 17, 17,
894
 17, 17, 17, 17, 17, 17, 17, 17,
895
 17, 17, 17, 17, 17, 17, 17, 17,
896
 17, 17, 17, 17, 17, 17, 17, 17,
897
 17, 17, 17, 17, 17, 17, 17, 17,
898
 17, 17, 17, 17, 17, 17, 17, 17,
899
 17, 17, 17, 17, 17, 17, 17, 17,
900
 17, 17, 17, 17, 17, 17, 17, 17,
901
 17, 17, 17, 17, 17, 17, 17, 17,
902
 17, 17, 17, 17, 17, 17, 17, 17,
903
 17, 17, 17, 17, 17, 17, 17, 17,
904
 17, 17, 17, 17, 17, 17, 17, 17,
905
 17, 17, 17, 17, 17, 17, 17, 17,
906
 17, 17, 17, 17, 17, 17, 17, 17,
907
 17, 17, 17, 17, 17, 17, 17, 17,
908
 17, 17, 17, 17, 17, 17, 17, 17,
909
 17, 17, 17, 17, 17, 17, 17, 17,
910
 17, 17, 17, 17, 17, 17, 17, 17,
911
 17, 17, 17, 17, 17, 17, 17, 17,
912
 17, 17, 17, 17, 17, 17, 17, 17,
913
 17, 17, 17, 17, 17, 17, 17, 17,
914
 17, 17, 17, 17, 17, 17, 17, 17,
915
 17, 17, 17, 17, 17, 17, 17, 17,
916
 17, 17, 17, 17, 17, 17, 17, 17,
917
 17, 17, 17, 17, 17, 17, 17, 17,
918
 17, 17, 17, 17, 17, 17, 17, 17,
919
 17, 17, 17, 17, 17, 17, 17, 17,
920
 17, 17, 17, 17, 17, 17, 17, 17,
921
 17, 17, 17, 17, 17, 17, 17, 17,
922
 17, 17, 17, 17, 17, 17, 17, 17,
923
 17, 17, 17, 17, 17, 17, 17, 17,
924
 17, 17, 17, 17, 17, 17, 17, 17,
925
 17, 17, 17, 17, 17, 17, 17, 17,
926
 17, 17, 17, 17, 17, 17, 17, 17,
927
 17, 17, 17, 17, 17, 17, 17, 17,
928
 17, 17, 17, 17, 17, 17, 17, 17,
929
 17, 17, 17, 17, 17, 17, 17, 17,
930
 17, 17, 17, 17, 17, 17, 17, 17,
931
 17, 17, 17, 17, 17, 17, 17, 17,
932
 17, 17, 17, 17, 17, 17, 17, 17,
933
 17, 17, 17, 17, 17, 17, 17, 17,
934
 17, 17, 17, 17, 17, 17, 17, 17,
935
 17, 17, 17, 17, 17, 17, 17, 17,
936
 17, 17, 17, 17, 17, 17, 17, 17,
937
 17, 17, 17,  8,
938
};
939

    
940
static const uint8_t table0_mvx[1099] = {
941
 32, 32, 31, 32, 33, 31, 33, 31,
942
 33, 32, 34, 32, 30, 32, 31, 34,
943
 35, 32, 34, 33, 29, 33, 30, 30,
944
 31, 31, 35, 29, 33, 35, 33, 34,
945
 31, 29, 30, 34, 30, 36, 28, 32,
946
 34, 37, 30, 27, 32, 25, 39, 32,
947
 34, 32, 35, 35, 35, 31, 35, 29,
948
 32, 29, 30, 29, 37, 27, 36, 38,
949
 37, 33, 32, 31, 29, 31, 28, 36,
950
 33, 30, 34, 33, 33, 28, 27, 25,
951
 31, 26, 39, 32, 32, 31, 33, 39,
952
 31, 38, 28, 36, 21, 23, 43, 36,
953
 34, 41, 30, 25, 28, 31, 30, 34,
954
 38, 35, 61, 34, 28, 30, 37, 37,
955
 35, 27, 36,  3, 59, 38, 37, 32,
956
 31, 29, 26, 33, 37, 33, 27, 27,
957
 35, 34, 34, 40, 42, 33, 32, 29,
958
  4,  5, 28, 24, 25, 35, 39, 38,
959
 32, 23, 27, 32, 30, 35, 26, 34,
960
 60, 36, 29, 22, 26, 41,  7, 30,
961
 38, 30, 36, 29, 30, 41, 26, 25,
962
 32, 34, 24, 39,  1, 25, 39, 32,
963
 28, 29, 32, 38, 26, 36, 28, 63,
964
 28, 39, 23, 21, 26, 35, 31, 35,
965
 57, 31, 29, 29, 28, 30, 27, 35,
966
  2, 38, 40, 34, 37, 29, 38, 43,
967
 26, 32, 33, 42, 24, 40, 28, 32,
968
 32, 32, 36, 32, 43, 25, 21, 31,
969
 30, 31, 41, 29, 33, 37, 26, 37,
970
 27, 59, 23, 33, 35, 31, 31, 37,
971
 38, 39, 32, 23, 32, 27, 37, 36,
972
 31, 40, 25, 27, 38, 31, 36, 28,
973
 31, 36, 25, 45,  3, 34, 38, 39,
974
 40, 38, 30, 32, 19, 24, 25, 26,
975
 45, 20, 24, 33, 33, 31, 41, 34,
976
 39, 47, 40, 58, 59, 41, 33,  3,
977
 17, 61, 42, 30, 26, 29, 36, 61,
978
 33, 37, 62, 28, 25, 38, 25, 38,
979
 17, 23, 34, 33, 21, 33, 49, 27,
980
 32, 23, 27, 22, 24, 22, 39, 43,
981
 27, 37,  6, 42, 47, 26, 30, 31,
982
 41, 39, 33, 22, 45, 36, 32, 45,
983
 19, 22, 30,  5,  5, 17, 29, 22,
984
 31, 31, 43, 37, 27, 32, 32, 32,
985
 33, 34, 43, 35, 29, 26, 22, 32,
986
 19, 32, 25, 31, 41, 49, 28, 34,
987
 28, 39, 34, 19, 37, 38, 29, 21,
988
 36, 42, 24, 48, 16, 28, 49, 22,
989
 34, 31, 38, 39, 44, 11, 35, 30,
990
 33, 33, 23, 28, 33, 46, 15, 13,
991
 24, 41, 24, 34, 34, 30, 26, 24,
992
 14, 60, 21, 29, 39, 23, 35, 37,
993
 63, 45, 33, 34, 47, 41, 22, 42,
994
 35, 35, 23, 32, 35, 43, 32,  7,
995
 31, 41, 20, 31, 16, 13, 63, 25,
996
 30, 32, 35, 30, 30, 31, 42, 47,
997
 39, 38, 40, 40, 51, 55, 56, 18,
998
 21, 39, 39, 33, 17, 41, 23, 24,
999
 43, 25, 31, 20, 19, 45,  1, 34,
1000
 31, 22, 35, 15, 46, 46, 35, 31,
1001
 28, 29, 29, 23, 41, 27, 14, 53,
1002
 53, 27, 24, 32, 57, 32, 17, 42,
1003
 37, 29, 33,  1, 25, 32, 32, 63,
1004
 26, 40, 44, 36, 31, 39, 20, 20,
1005
 44, 23, 33, 34, 35, 33, 33, 28,
1006
 41, 23, 41, 41, 29, 25, 26, 49,
1007
 29, 24, 37, 49, 50, 51, 51, 26,
1008
 39, 25, 26, 15, 39, 18, 42, 17,
1009
  4, 31, 32, 32, 60,  1, 42, 32,
1010
  0, 12, 19, 35, 21, 41, 17, 26,
1011
 20, 45, 46, 32, 37, 22, 47, 29,
1012
 31, 27, 29, 30, 21, 33, 35, 18,
1013
 25, 33, 50, 51, 42,  2, 15, 51,
1014
 53, 33, 25, 29, 55, 37, 38, 33,
1015
 38, 59, 38, 33, 39, 13, 32, 40,
1016
 61, 61, 32,  9, 44,  3, 31, 29,
1017
 25, 31, 27, 23,  9, 25,  9, 29,
1018
 20, 30, 30, 42, 18, 28, 25, 28,
1019
 28, 21, 29, 43, 29, 43, 26, 44,
1020
 44, 21, 38, 21, 24, 45, 45, 35,
1021
 39, 22, 35, 36, 34, 34, 45, 34,
1022
 29, 31, 46, 25, 46, 16, 17, 31,
1023
 20, 32, 47, 47, 47, 32, 49, 49,
1024
 49, 31,  1, 27, 28, 39, 39, 21,
1025
 36, 23, 51,  2, 40, 51, 32, 53,
1026
 24, 30, 24, 30, 21, 40, 57, 57,
1027
 31, 41, 58, 32, 12,  4, 32, 34,
1028
 59, 31, 32, 13,  9, 35, 26, 35,
1029
 37, 61, 37, 63, 26, 29, 41, 38,
1030
 23, 20, 41, 26, 41, 42, 42, 42,
1031
 26, 26, 26, 26,  1, 26, 37, 37,
1032
 37, 23, 34, 42, 27, 43, 34, 27,
1033
 31, 24, 33, 16,  3, 31, 24, 33,
1034
 24,  4, 44, 44, 11, 44, 31, 13,
1035
 13, 44, 45, 13, 25, 22, 38, 26,
1036
 38, 38, 39, 32, 30, 39, 30, 22,
1037
 32, 26, 30, 47, 47, 47, 19, 47,
1038
 30, 31, 35,  8, 23, 47, 47, 27,
1039
 35, 47, 31, 48, 35, 19, 36, 49,
1040
 49, 33, 31, 39, 27, 39, 49, 49,
1041
 50, 50, 50, 39, 31, 51, 51, 39,
1042
 28, 33, 33, 21, 40, 31, 52, 53,
1043
 40, 53,  9, 33, 31, 53, 54, 54,
1044
 54, 55, 55, 34, 15, 56, 25, 56,
1045
 21, 21, 40, 40, 25, 40, 58, 36,
1046
  5, 41, 41, 12, 60, 41, 41, 37,
1047
 22, 61, 18, 29, 29, 30, 61, 30,
1048
 61, 62, 62, 30, 30, 63, 18, 13,
1049
 30, 23, 19, 20, 20, 41, 13,  2,
1050
  5,  5,  1,  5, 32,  6, 32, 35,
1051
 20, 35, 27, 35, 35, 36, 36, 13,
1052
 36, 41, 41, 41,  3, 30, 42, 27,
1053
 20, 30, 27, 28, 30, 21, 33, 33,
1054
 14, 24, 30, 42, 24, 33, 25, 42,
1055
 43, 14, 43, 43, 14, 43,  7, 36,
1056
 37, 37, 37, 37,  7, 14, 25, 43,
1057
 43, 44, 15, 37,  7,  7,  3,  1,
1058
  8, 15, 15,  8, 44, 44, 44, 45,
1059
 45, 45, 45,  8,  8, 45, 21, 45,
1060
 28, 28, 28, 21, 28, 28, 22, 37,
1061
 46, 46, 37,  8, 29, 37, 29, 22,
1062
 46, 37, 22, 29, 47, 47, 38, 38,
1063
 16, 38, 38, 33, 38, 22, 47, 47,
1064
 29, 25, 16,  0, 48,  1, 34, 48,
1065
 48, 34, 25, 26, 26, 49, 49, 26,
1066
  1, 49,  4, 26,  4, 49,  1,  9,
1067
 49, 49, 49, 10, 49, 17, 38, 17,
1068
 17, 50, 38, 50, 50, 22, 38, 51,
1069
 38, 38, 51, 39, 39, 18, 22, 39,
1070
 51, 22, 52, 52, 52, 39, 53, 53,
1071
 10, 23, 18, 29, 10, 53, 29, 54,
1072
 11, 54, 11, 11, 55,  1, 18, 55,
1073
 55, 55, 55, 55, 55, 29, 34, 18,
1074
 29, 56, 56, 34, 57, 34, 34, 29,
1075
 29, 57, 57, 35, 35, 35, 35, 35,
1076
 39, 35, 59, 59, 18, 59, 39, 30,
1077
 18, 40, 60, 60, 61, 30, 18, 61,
1078
 61, 19, 19,
1079
};
1080

    
1081
static const uint8_t table0_mvy[1099] = {
1082
 32, 31, 32, 33, 32, 31, 31, 33,
1083
 33, 34, 32, 30, 32, 35, 34, 31,
1084
 32, 29, 33, 30, 32, 34, 33, 31,
1085
 30, 35, 31, 31, 29, 33, 35, 30,
1086
 29, 33, 34, 34, 30, 32, 32, 36,
1087
 29, 32, 35, 32, 28, 32, 32, 27,
1088
 35, 37, 34, 29, 30, 36, 35, 34,
1089
 25, 30, 29, 35, 33, 31, 31, 32,
1090
 31, 28, 39, 28, 29, 37, 31, 33,
1091
 27, 36, 28, 36, 37, 33, 33, 31,
1092
 27, 32, 31, 38, 26, 25, 25, 33,
1093
 39, 31, 34, 30, 32, 32, 32, 34,
1094
 36, 32, 28, 33, 30, 38, 37, 27,
1095
 33, 28, 32, 37, 35, 38, 29, 34,
1096
 27, 29, 29, 32, 32, 34, 35,  3,
1097
 26, 36, 31, 38, 30, 26, 35, 34,
1098
 37, 26, 25, 32, 32, 39, 23, 37,
1099
 32, 32, 29, 32, 29, 36, 29, 30,
1100
 41, 31, 30, 21, 39, 25, 34, 38,
1101
 32, 35, 39, 32, 33, 33, 32, 27,
1102
 29, 25, 28, 27, 26, 31, 30, 35,
1103
 24, 24, 31, 34, 32, 30, 35, 40,
1104
 28, 38,  5, 35, 29, 36, 36, 32,
1105
 38, 30, 33, 31, 35, 26, 23, 38,
1106
 32, 41, 28, 25, 37, 40, 37, 39,
1107
 32, 36, 33, 39, 25, 26, 28, 31,
1108
 28, 42, 23, 31, 33, 31, 39,  1,
1109
 59, 22, 27,  4, 33, 34, 33, 24,
1110
 41,  3, 35, 41, 41, 28, 36, 36,
1111
 28, 33, 35, 21, 23, 21, 22, 37,
1112
 27, 27, 43, 29, 60, 39, 27, 25,
1113
 59, 34, 27, 27, 26, 40, 37, 27,
1114
 61, 26, 39, 33, 31, 22, 37, 25,
1115
 30, 25, 24, 61, 31, 34, 25, 38,
1116
 32, 32, 30,  3, 61, 43, 29, 23,
1117
 28, 32, 28, 32, 31, 34,  5, 33,
1118
 32, 33, 33, 42, 37, 23, 38, 31,
1119
 40, 26, 32, 26, 37, 38, 36, 24,
1120
 29, 30, 20, 22, 29, 24, 32, 41,
1121
  2, 34, 25, 33, 29, 31, 39, 35,
1122
 36, 24, 32, 30, 33, 27, 44, 60,
1123
 30, 36, 19, 34, 31, 24, 16, 35,
1124
 32, 38, 21, 33, 31, 31, 21, 35,
1125
  5, 17, 29, 38, 38, 18, 58, 19,
1126
 43, 41, 30, 41, 43, 39, 29,  7,
1127
 29, 17, 28, 19, 28, 31, 25, 19,
1128
 40, 26, 21, 33, 39, 23, 40, 30,
1129
 39, 34, 35, 32, 32, 24, 33, 30,
1130
 40, 47, 39, 37, 32, 33, 24, 23,
1131
 45, 47, 27, 23, 42, 32, 32, 33,
1132
 36, 37, 37, 17, 18, 22, 40, 38,
1133
 32, 31, 35, 24, 17, 25, 17, 23,
1134
 33, 34, 51, 42, 31, 36, 36, 29,
1135
 21, 22, 37, 44, 43, 25, 47, 33,
1136
 45, 27, 31, 58, 31, 32, 31, 38,
1137
 43, 20, 47, 45, 54,  1, 26, 34,
1138
 38, 14, 22, 24, 33, 34, 32, 32,
1139
 37, 21, 23, 49, 35, 23, 28, 39,
1140
 39, 23, 55, 33, 30, 30, 63, 16,
1141
 42, 28, 13, 33, 33, 35, 19, 46,
1142
 43, 17, 19, 36, 39, 24, 31, 32,
1143
 33, 26, 28, 62, 33, 63, 33, 39,
1144
 19, 49, 17, 31, 43, 13, 15, 29,
1145
 25, 35, 33, 23, 49, 41, 28, 29,
1146
 34, 38,  7, 61, 11, 50, 13, 41,
1147
 19, 47, 25, 26, 15, 42, 41, 29,
1148
 45, 27, 17, 35, 32, 29, 32, 24,
1149
 13, 26, 26, 31, 24, 33, 28, 30,
1150
 31, 11, 45, 46, 33, 33, 35, 57,
1151
 32, 32, 35, 45, 34, 11, 37, 42,
1152
 39, 37, 31, 49, 21, 27, 29, 47,
1153
 53, 40, 51, 16, 26,  1, 40, 30,
1154
 41, 44, 34, 25, 27, 31, 35, 35,
1155
 31, 15, 49,  1, 35, 40,  5, 58,
1156
 21, 29, 22, 59, 45, 31,  9, 26,
1157
  9, 29, 11, 32, 30,  3, 13, 20,
1158
 18, 20, 11,  3, 29, 40, 31, 53,
1159
 30, 17, 20, 37, 31, 42, 47, 47,
1160
 54, 38,  9, 34, 13, 37, 21, 25,
1161
 27, 43, 42, 45, 40, 25, 27, 46,
1162
 22, 25, 53, 20,  2, 14, 39, 15,
1163
 22, 44, 34, 21, 38, 33, 27, 48,
1164
 34, 52, 35, 47, 49, 54,  2, 13,
1165
 23, 52, 29, 45, 22, 49, 54, 21,
1166
 40, 42, 31, 30, 29, 34,  0, 25,
1167
 23, 51, 24, 59, 28, 38, 29, 31,
1168
  2, 13, 31,  8, 31, 33, 12, 45,
1169
 41,  7, 14, 30, 25, 18, 43, 20,
1170
 43, 35, 44,  1, 49, 42, 42, 18,
1171
 41, 38, 41, 44, 53, 11, 20, 25,
1172
 45, 46, 47, 48, 39, 52, 46, 49,
1173
 63, 55, 44, 38, 13, 13, 57, 22,
1174
 51, 16, 12, 28, 35, 57, 25, 20,
1175
 26, 28, 28, 29, 32, 31, 62, 34,
1176
 35, 35, 19, 49, 48, 39, 40, 18,
1177
 43, 46, 11,  6, 48, 19, 49, 41,
1178
 10, 23, 58, 17, 21, 23, 34, 30,
1179
 60,  0, 44, 34, 26, 37, 46, 43,
1180
 49, 59,  4, 34, 59, 37, 22, 25,
1181
 28, 46,  6, 40, 59, 42, 36, 61,
1182
 28, 30, 31, 43, 10, 22, 23, 47,
1183
 20, 52, 55, 36, 25, 16,  1, 11,
1184
 27, 29,  5, 63, 18, 41, 31, 34,
1185
 38,  1,  5, 13, 28, 31, 17, 38,
1186
 39, 41, 36, 37, 22, 39, 33, 43,
1187
 43, 15, 17, 49, 30, 21, 22, 20,
1188
 10, 17, 25, 54, 57,  3, 34,  8,
1189
 36, 25, 31, 14, 15, 19, 29, 25,
1190
 18, 39, 53, 22, 27, 20, 29, 33,
1191
 41, 42, 35, 62, 50, 29, 53, 50,
1192
 35, 55, 42, 61, 63,  4,  7, 42,
1193
 21, 46, 47, 49, 27, 46, 17, 55,
1194
 41, 50, 63,  4, 56, 18,  8, 10,
1195
 18, 51, 63, 36, 55, 18,  5, 55,
1196
  9, 29, 17, 21, 30, 27,  1, 59,
1197
  7, 11, 12, 15,  5, 42, 24, 41,
1198
 43,  7, 27, 22, 25, 31, 30, 37,
1199
 22, 39, 53, 29, 36, 37, 48,  0,
1200
  5, 13, 17, 31, 32, 26, 46, 28,
1201
 44, 45, 46, 53, 49, 51,  3, 41,
1202
  3, 22, 42, 33,  5, 45,  7, 22,
1203
 40, 53, 24, 14, 25, 27, 10, 12,
1204
 34, 16, 17, 53, 20, 26, 39, 45,
1205
 18, 45, 35, 33, 31, 49,  4, 39,
1206
 42, 11, 51,  5, 13, 26, 27, 17,
1207
 52, 30,  0, 22, 12, 34, 62, 36,
1208
 38, 41, 47, 30, 63, 38, 41, 43,
1209
 59, 33, 45, 37, 38, 40, 47, 24,
1210
 48, 49, 30,  1, 10, 22, 49, 15,
1211
 39, 59, 31, 32, 33, 18, 13, 15,
1212
 31, 21, 27, 44, 42, 39, 46, 17,
1213
 26, 32, 30, 31,  0, 30, 34,  9,
1214
 12, 13, 25, 31, 32, 55, 43, 35,
1215
 61, 33, 35, 46, 25, 47, 48, 62,
1216
 63, 38, 61,  1,  2,  5,  7,  9,
1217
 46, 10, 34, 35, 36, 55, 51,  7,
1218
 40, 23, 34, 37,  5, 13, 42, 18,
1219
 25, 27, 28,
1220
};
1221

    
1222
/* motion vector table 1 */
1223
static const uint16_t table1_mv_code[1100] = {
1224
 0x0000, 0x0007, 0x0009, 0x000f, 0x000a, 0x0011, 0x001a, 0x001c,
1225
 0x0011, 0x0031, 0x0025, 0x002d, 0x002f, 0x006f, 0x0075, 0x0041,
1226
 0x004c, 0x004e, 0x005c, 0x0060, 0x0062, 0x0066, 0x0068, 0x0069,
1227
 0x006b, 0x00a6, 0x00c1, 0x00cb, 0x00cc, 0x00ce, 0x00da, 0x00e8,
1228
 0x00ee, 0x0087, 0x0090, 0x009e, 0x009f, 0x00ba, 0x00ca, 0x00d8,
1229
 0x00db, 0x00df, 0x0104, 0x0109, 0x010c, 0x0143, 0x0145, 0x014a,
1230
 0x0156, 0x015c, 0x01b3, 0x01d3, 0x01da, 0x0103, 0x0109, 0x010b,
1231
 0x0122, 0x0127, 0x0134, 0x0161, 0x0164, 0x0176, 0x0184, 0x018d,
1232
 0x018e, 0x018f, 0x0190, 0x0193, 0x0196, 0x019d, 0x019e, 0x019f,
1233
 0x01a9, 0x01b2, 0x01b4, 0x01ba, 0x01bb, 0x01bc, 0x0201, 0x0202,
1234
 0x0205, 0x0207, 0x020d, 0x0210, 0x0211, 0x0215, 0x021b, 0x021f,
1235
 0x0281, 0x0285, 0x0290, 0x029c, 0x029d, 0x02a2, 0x02a7, 0x02a8,
1236
 0x02aa, 0x02b0, 0x02b1, 0x02b4, 0x02bc, 0x02bf, 0x0320, 0x0326,
1237
 0x0327, 0x0329, 0x032a, 0x0336, 0x0360, 0x0362, 0x0363, 0x0372,
1238
 0x03b2, 0x03bc, 0x03bd, 0x0203, 0x0205, 0x021a, 0x0249, 0x024a,
1239
 0x024c, 0x02c7, 0x02ca, 0x02ce, 0x02ef, 0x030d, 0x0322, 0x0325,
1240
 0x0338, 0x0373, 0x037a, 0x0409, 0x0415, 0x0416, 0x0418, 0x0428,
1241
 0x042d, 0x042f, 0x0434, 0x0508, 0x0509, 0x0510, 0x0511, 0x051c,
1242
 0x051e, 0x0524, 0x0541, 0x0543, 0x0546, 0x0547, 0x054d, 0x0557,
1243
 0x055f, 0x056a, 0x056c, 0x056d, 0x056f, 0x0576, 0x0577, 0x057a,
1244
 0x057b, 0x057c, 0x057d, 0x0600, 0x0601, 0x0603, 0x0614, 0x0616,
1245
 0x0617, 0x061c, 0x061f, 0x0642, 0x0648, 0x0649, 0x064a, 0x064b,
1246
 0x0657, 0x0668, 0x0669, 0x066b, 0x066e, 0x067f, 0x06c2, 0x06c8,
1247
 0x06cb, 0x06de, 0x06df, 0x06e2, 0x06e3, 0x06ef, 0x0748, 0x074b,
1248
 0x076e, 0x076f, 0x077c, 0x0409, 0x0423, 0x0428, 0x0429, 0x042a,
1249
 0x042b, 0x0432, 0x0433, 0x0496, 0x049a, 0x04d5, 0x04db, 0x0581,
1250
 0x0582, 0x058b, 0x058c, 0x058d, 0x0598, 0x0599, 0x059a, 0x059e,
1251
 0x05dd, 0x0619, 0x0632, 0x0633, 0x0648, 0x0672, 0x06a1, 0x06a2,
1252
 0x06a3, 0x06af, 0x06e2, 0x06e3, 0x06e4, 0x0800, 0x0801, 0x0802,
1253
 0x0803, 0x081a, 0x081b, 0x0829, 0x082f, 0x0832, 0x083e, 0x083f,
1254
 0x0852, 0x0853, 0x0858, 0x086b, 0x0877, 0x0878, 0x0879, 0x087a,
1255
 0x087b, 0x0a00, 0x0a01, 0x0a0d, 0x0a0e, 0x0a0f, 0x0a24, 0x0a37,
1256
 0x0a3a, 0x0a3b, 0x0a3e, 0x0a46, 0x0a47, 0x0a4a, 0x0a4b, 0x0a5f,
1257
 0x0a79, 0x0a7a, 0x0a7b, 0x0a80, 0x0a81, 0x0a84, 0x0a85, 0x0a99,
1258
 0x0aa5, 0x0aa6, 0x0ab8, 0x0aba, 0x0abb, 0x0abc, 0x0abd, 0x0ac8,
1259
 0x0ace, 0x0acf, 0x0ad7, 0x0adc, 0x0aeb, 0x0c04, 0x0c25, 0x0c26,
1260
 0x0c27, 0x0c2a, 0x0c2b, 0x0c3a, 0x0c3b, 0x0c3c, 0x0c3d, 0x0ca0,
1261
 0x0cad, 0x0cd4, 0x0cd5, 0x0cfc, 0x0cfd, 0x0d86, 0x0d92, 0x0d93,
1262
 0x0d94, 0x0d95, 0x0db0, 0x0db8, 0x0db9, 0x0dba, 0x0dbb, 0x0dc0,
1263
 0x0dc2, 0x0dc3, 0x0dda, 0x0ddb, 0x0ddc, 0x0ddd, 0x0e92, 0x0e93,
1264
 0x0e94, 0x0e95, 0x0ec7, 0x0ecc, 0x0ece, 0x0ecf, 0x0ed8, 0x0ed9,
1265
 0x0eda, 0x0edb, 0x0808, 0x0809, 0x080a, 0x0810, 0x0811, 0x0844,
1266
 0x0845, 0x0861, 0x0862, 0x0863, 0x086c, 0x0922, 0x0923, 0x092e,
1267
 0x092f, 0x0936, 0x0937, 0x09b1, 0x09b2, 0x09b3, 0x09b4, 0x09b5,
1268
 0x09b8, 0x09b9, 0x09ba, 0x09bb, 0x09bc, 0x09bd, 0x09be, 0x09bf,
1269
 0x0b00, 0x0b15, 0x0b2c, 0x0b2d, 0x0b2e, 0x0b2f, 0x0b36, 0x0bb9,
1270
 0x0c28, 0x0c2a, 0x0c2b, 0x0c2c, 0x0c2d, 0x0c2e, 0x0c2f, 0x0c30,
1271
 0x0c31, 0x0c38, 0x0c60, 0x0c61, 0x0c62, 0x0c63, 0x0c8d, 0x0c8e,
1272
 0x0c8f, 0x0c92, 0x0cbe, 0x0cbf, 0x0ce6, 0x0ce7, 0x0d40, 0x0d41,
1273
 0x0d57, 0x0d58, 0x0d59, 0x0d5a, 0x0d5b, 0x0d5c, 0x0d5d, 0x0d98,
1274
 0x0d99, 0x0d9a, 0x0d9b, 0x0d9c, 0x0d9d, 0x0dad, 0x0dae, 0x0daf,
1275
 0x0dc0, 0x0dc1, 0x0dc2, 0x0dc3, 0x0dca, 0x0dcb, 0x0dec, 0x0ded,
1276
 0x0dee, 0x0def, 0x1018, 0x1022, 0x1023, 0x1030, 0x1031, 0x1032,
1277
 0x1033, 0x1050, 0x1051, 0x105c, 0x1074, 0x1075, 0x1076, 0x1077,
1278
 0x1078, 0x1079, 0x107a, 0x107b, 0x10b2, 0x10b3, 0x10b8, 0x10b9,
1279
 0x10ba, 0x10bb, 0x10d4, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x1404,
1280
 0x1405, 0x1406, 0x1407, 0x1410, 0x1411, 0x1412, 0x1413, 0x1414,
1281
 0x1415, 0x1416, 0x1417, 0x1418, 0x1419, 0x1466, 0x1467, 0x1468,
1282
 0x1469, 0x146a, 0x146b, 0x146c, 0x146d, 0x147e, 0x147f, 0x1488,
1283
 0x1489, 0x148a, 0x148b, 0x14b6, 0x14b7, 0x14b8, 0x14b9, 0x14ba,
1284
 0x14bb, 0x14bc, 0x14bd, 0x14f0, 0x14f1, 0x14f8, 0x14f9, 0x14fa,
1285
 0x14fb, 0x14fc, 0x14fd, 0x14fe, 0x14ff, 0x152a, 0x152b, 0x152c,
1286
 0x152d, 0x152e, 0x152f, 0x1530, 0x1531, 0x1548, 0x1549, 0x154e,
1287
 0x154f, 0x1558, 0x1559, 0x155a, 0x155b, 0x1572, 0x159a, 0x159b,
1288
 0x15ac, 0x15ba, 0x15bb, 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4,
1289
 0x15d5, 0x181d, 0x181e, 0x181f, 0x1840, 0x1841, 0x1842, 0x1843,
1290
 0x1844, 0x1845, 0x1846, 0x1847, 0x1848, 0x1849, 0x1861, 0x1862,
1291
 0x1863, 0x1864, 0x1865, 0x1866, 0x1867, 0x1868, 0x1869, 0x186a,
1292
 0x186b, 0x186c, 0x186d, 0x186e, 0x191b, 0x191c, 0x191d, 0x191e,
1293
 0x191f, 0x1942, 0x1943, 0x1944, 0x1945, 0x1946, 0x1947, 0x1958,
1294
 0x1959, 0x19ed, 0x19ee, 0x19ef, 0x19f0, 0x19f1, 0x19f2, 0x19f3,
1295
 0x19f4, 0x19f5, 0x19f6, 0x19f7, 0x1b0e, 0x1b0f, 0x1b62, 0x1b63,
1296
 0x1b64, 0x1b65, 0x1b66, 0x1b67, 0x1b68, 0x1b69, 0x1b6a, 0x1b6b,
1297
 0x1b6c, 0x1b6d, 0x1b6e, 0x1b6f, 0x1b82, 0x1ba8, 0x1ba9, 0x1baa,
1298
 0x1bab, 0x1bac, 0x1bad, 0x1bae, 0x1baf, 0x1bb0, 0x1bb1, 0x1bb2,
1299
 0x1bb3, 0x1d80, 0x1d81, 0x1d82, 0x1d83, 0x1d84, 0x1d85, 0x1d86,
1300
 0x1d87, 0x1d88, 0x1d89, 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8d, 0x1007,
1301
 0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, 0x100f,
1302
 0x1016, 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086,
1303
 0x1087, 0x10c0, 0x123a, 0x123b, 0x123c, 0x123d, 0x123e, 0x123f,
1304
 0x1240, 0x1241, 0x1242, 0x1243, 0x1350, 0x1352, 0x1353, 0x1358,
1305
 0x1359, 0x135a, 0x135b, 0x135c, 0x135d, 0x135e, 0x135f, 0x1360,
1306
 0x1361, 0x1602, 0x1603, 0x160c, 0x160d, 0x160e, 0x160f, 0x1620,
1307
 0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, 0x1628,
1308
 0x1629, 0x166e, 0x166f, 0x167c, 0x167d, 0x167e, 0x167f, 0x1770,
1309
 0x1771, 0x1852, 0x1853, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876,
1310
 0x1877, 0x1878, 0x1879, 0x187a, 0x187b, 0x187c, 0x187d, 0x187e,
1311
 0x187f, 0x1918, 0x1919, 0x1926, 0x1927, 0x1970, 0x1971, 0x1972,
1312
 0x1973, 0x1974, 0x1975, 0x1976, 0x1977, 0x1978, 0x1979, 0x197a,
1313
 0x197b, 0x1aa0, 0x1aa1, 0x1aa2, 0x1aa3, 0x1aa4, 0x1aa5, 0x1aa6,
1314
 0x1aa7, 0x1aa8, 0x1aa9, 0x1aaa, 0x1aab, 0x1aac, 0x1aad, 0x1b3c,
1315
 0x1b3d, 0x1b3e, 0x1b3f, 0x1b50, 0x1b51, 0x1b52, 0x1b53, 0x1b54,
1316
 0x1b55, 0x1b56, 0x1b57, 0x1b58, 0x1b59, 0x2032, 0x2033, 0x2034,
1317
 0x2035, 0x2036, 0x2037, 0x2038, 0x2039, 0x203a, 0x203b, 0x203c,
1318
 0x203d, 0x203e, 0x203f, 0x2040, 0x2041, 0x2042, 0x2043, 0x20ba,
1319
 0x20bb, 0x20cc, 0x20cd, 0x20ce, 0x20cf, 0x20e0, 0x20e1, 0x20e2,
1320
 0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7, 0x21aa, 0x21ab, 0x21c0,
1321
 0x21c1, 0x21c2, 0x21c3, 0x21c4, 0x21c5, 0x21c6, 0x21c7, 0x21c8,
1322
 0x21c9, 0x21ca, 0x21cb, 0x21cc, 0x21cd, 0x21ce, 0x21cf, 0x21d0,
1323
 0x21d1, 0x21d2, 0x21d3, 0x2894, 0x2895, 0x2896, 0x2897, 0x2898,
1324
 0x2899, 0x289a, 0x289b, 0x289c, 0x289d, 0x289e, 0x289f, 0x28c0,
1325
 0x28c1, 0x28c2, 0x28c3, 0x28c4, 0x28c5, 0x28c6, 0x28c7, 0x28c8,
1326
 0x28c9, 0x28ca, 0x28cb, 0x2930, 0x2931, 0x2932, 0x2933, 0x2934,
1327
 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c,
1328
 0x293d, 0x293e, 0x293f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964,
1329
 0x2965, 0x2966, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x2a40,
1330
 0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48,
1331
 0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50,
1332
 0x2a51, 0x2a52, 0x2a53, 0x2ae6, 0x2ae7, 0x2b24, 0x2b25, 0x2b26,
1333
 0x2b27, 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e,
1334
 0x2b2f, 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b5a, 0x2b5b, 0x3014,
1335
 0x3015, 0x3016, 0x3017, 0x3020, 0x3021, 0x3022, 0x3023, 0x3024,
1336
 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c,
1337
 0x302d, 0x302e, 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034,
1338
 0x3035, 0x3036, 0x3037, 0x3038, 0x3039, 0x30c0, 0x30c1, 0x30de,
1339
 0x30df, 0x3218, 0x3219, 0x321a, 0x321b, 0x321c, 0x321d, 0x321e,
1340
 0x321f, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226,
1341
 0x3227, 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e,
1342
 0x322f, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3378,
1343
 0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x337f, 0x33c0,
1344
 0x33c1, 0x33c2, 0x33c3, 0x33c4, 0x33c5, 0x33c6, 0x33c7, 0x33c8,
1345
 0x33c9, 0x33ca, 0x33cb, 0x33cc, 0x33cd, 0x33ce, 0x33cf, 0x33d0,
1346
 0x33d1, 0x33d2, 0x33d3, 0x33d4, 0x33d5, 0x33d6, 0x33d7, 0x33d8,
1347
 0x33d9, 0x3706, 0x3707, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
1348
 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
1349
 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
1350
 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
1351
 0x374d, 0x374e, 0x374f, 0x3b34, 0x3b35, 0x3b36, 0x3b37, 0x3be8,
1352
 0x3be9, 0x3bea, 0x3beb, 0x3bec, 0x3bed, 0x3bee, 0x3bef, 0x3bf0,
1353
 0x3bf1, 0x3bf2, 0x3bf3, 0x3bf4, 0x3bf5, 0x3bf6, 0x3bf7, 0x3bf8,
1354
 0x3bf9, 0x3bfa, 0x3bfb, 0x3bfc, 0x3bfd, 0x3bfe, 0x3bff, 0x2000,
1355
 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
1356
 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x202e, 0x202f, 0x2182,
1357
 0x2183, 0x21b4, 0x21b5, 0x21b6, 0x21b7, 0x21b8, 0x21b9, 0x21ba,
1358
 0x21bb, 0x21bc, 0x21bd, 0x21be, 0x21bf, 0x2460, 0x2461, 0x2462,
1359
 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
1360
 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
1361
 0x2473, 0x26a2, 0x26a3, 0x000b,
1362
};
1363

    
1364
static const uint8_t table1_mv_bits[1100] = {
1365
  2,  4,  4,  4,  5,  5,  5,  5,
1366
  6,  6,  7,  7,  7,  7,  7,  8,
1367
  8,  8,  8,  8,  8,  8,  8,  8,
1368
  8,  8,  8,  8,  8,  8,  8,  8,
1369
  8,  9,  9,  9,  9,  9,  9,  9,
1370
  9,  9,  9,  9,  9,  9,  9,  9,
1371
  9,  9,  9,  9,  9, 10, 10, 10,
1372
 10, 10, 10, 10, 10, 10, 10, 10,
1373
 10, 10, 10, 10, 10, 10, 10, 10,
1374
 10, 10, 10, 10, 10, 10, 10, 10,
1375
 10, 10, 10, 10, 10, 10, 10, 10,
1376
 10, 10, 10, 10, 10, 10, 10, 10,
1377
 10, 10, 10, 10, 10, 10, 10, 10,
1378
 10, 10, 10, 10, 10, 10, 10, 10,
1379
 10, 10, 10, 11, 11, 11, 11, 11,
1380
 11, 11, 11, 11, 11, 11, 11, 11,
1381
 11, 11, 11, 11, 11, 11, 11, 11,
1382
 11, 11, 11, 11, 11, 11, 11, 11,
1383
 11, 11, 11, 11, 11, 11, 11, 11,
1384
 11, 11, 11, 11, 11, 11, 11, 11,
1385
 11, 11, 11, 11, 11, 11, 11, 11,
1386
 11, 11, 11, 11, 11, 11, 11, 11,
1387
 11, 11, 11, 11, 11, 11, 11, 11,
1388
 11, 11, 11, 11, 11, 11, 11, 11,
1389
 11, 11, 11, 12, 12, 12, 12, 12,
1390
 12, 12, 12, 12, 12, 12, 12, 12,
1391
 12, 12, 12, 12, 12, 12, 12, 12,
1392
 12, 12, 12, 12, 12, 12, 12, 12,
1393
 12, 12, 12, 12, 12, 12, 12, 12,
1394
 12, 12, 12, 12, 12, 12, 12, 12,
1395
 12, 12, 12, 12, 12, 12, 12, 12,
1396
 12, 12, 12, 12, 12, 12, 12, 12,
1397
 12, 12, 12, 12, 12, 12, 12, 12,
1398
 12, 12, 12, 12, 12, 12, 12, 12,
1399
 12, 12, 12, 12, 12, 12, 12, 12,
1400
 12, 12, 12, 12, 12, 12, 12, 12,
1401
 12, 12, 12, 12, 12, 12, 12, 12,
1402
 12, 12, 12, 12, 12, 12, 12, 12,
1403
 12, 12, 12, 12, 12, 12, 12, 12,
1404
 12, 12, 12, 12, 12, 12, 12, 12,
1405
 12, 12, 12, 12, 12, 12, 12, 12,
1406
 12, 12, 13, 13, 13, 13, 13, 13,
1407
 13, 13, 13, 13, 13, 13, 13, 13,
1408
 13, 13, 13, 13, 13, 13, 13, 13,
1409
 13, 13, 13, 13, 13, 13, 13, 13,
1410
 13, 13, 13, 13, 13, 13, 13, 13,
1411
 13, 13, 13, 13, 13, 13, 13, 13,
1412
 13, 13, 13, 13, 13, 13, 13, 13,
1413
 13, 13, 13, 13, 13, 13, 13, 13,
1414
 13, 13, 13, 13, 13, 13, 13, 13,
1415
 13, 13, 13, 13, 13, 13, 13, 13,
1416
 13, 13, 13, 13, 13, 13, 13, 13,
1417
 13, 13, 13, 13, 13, 13, 13, 13,
1418
 13, 13, 13, 13, 13, 13, 13, 13,
1419
 13, 13, 13, 13, 13, 13, 13, 13,
1420
 13, 13, 13, 13, 13, 13, 13, 13,
1421
 13, 13, 13, 13, 13, 13, 13, 13,
1422
 13, 13, 13, 13, 13, 13, 13, 13,
1423
 13, 13, 13, 13, 13, 13, 13, 13,
1424
 13, 13, 13, 13, 13, 13, 13, 13,
1425
 13, 13, 13, 13, 13, 13, 13, 13,
1426
 13, 13, 13, 13, 13, 13, 13, 13,
1427
 13, 13, 13, 13, 13, 13, 13, 13,
1428
 13, 13, 13, 13, 13, 13, 13, 13,
1429
 13, 13, 13, 13, 13, 13, 13, 13,
1430
 13, 13, 13, 13, 13, 13, 13, 13,
1431
 13, 13, 13, 13, 13, 13, 13, 13,
1432
 13, 13, 13, 13, 13, 13, 13, 13,
1433
 13, 13, 13, 13, 13, 13, 13, 13,
1434
 13, 13, 13, 13, 13, 13, 13, 13,
1435
 13, 13, 13, 13, 13, 13, 13, 13,
1436
 13, 13, 13, 13, 13, 13, 13, 13,
1437
 13, 13, 13, 13, 13, 13, 13, 13,
1438
 13, 13, 13, 13, 13, 13, 13, 13,
1439
 13, 13, 13, 13, 13, 13, 13, 13,
1440
 13, 13, 13, 13, 13, 13, 13, 13,
1441
 13, 13, 13, 13, 13, 13, 13, 14,
1442
 14, 14, 14, 14, 14, 14, 14, 14,
1443
 14, 14, 14, 14, 14, 14, 14, 14,
1444
 14, 14, 14, 14, 14, 14, 14, 14,
1445
 14, 14, 14, 14, 14, 14, 14, 14,
1446
 14, 14, 14, 14, 14, 14, 14, 14,
1447
 14, 14, 14, 14, 14, 14, 14, 14,
1448
 14, 14, 14, 14, 14, 14, 14, 14,
1449
 14, 14, 14, 14, 14, 14, 14, 14,
1450
 14, 14, 14, 14, 14, 14, 14, 14,
1451
 14, 14, 14, 14, 14, 14, 14, 14,
1452
 14, 14, 14, 14, 14, 14, 14, 14,
1453
 14, 14, 14, 14, 14, 14, 14, 14,
1454
 14, 14, 14, 14, 14, 14, 14, 14,
1455
 14, 14, 14, 14, 14, 14, 14, 14,
1456
 14, 14, 14, 14, 14, 14, 14, 14,
1457
 14, 14, 14, 14, 14, 14, 14, 14,
1458
 14, 14, 14, 14, 14, 14, 14, 14,
1459
 14, 14, 14, 14, 14, 14, 14, 14,
1460
 14, 14, 14, 14, 14, 14, 14, 14,
1461
 14, 14, 14, 14, 14, 14, 14, 14,
1462
 14, 14, 14, 14, 14, 14, 14, 14,
1463
 14, 14, 14, 14, 14, 14, 14, 14,
1464
 14, 14, 14, 14, 14, 14, 14, 14,
1465
 14, 14, 14, 14, 14, 14, 14, 14,
1466
 14, 14, 14, 14, 14, 14, 14, 14,
1467
 14, 14, 14, 14, 14, 14, 14, 14,
1468
 14, 14, 14, 14, 14, 14, 14, 14,
1469
 14, 14, 14, 14, 14, 14, 14, 14,
1470
 14, 14, 14, 14, 14, 14, 14, 14,
1471
 14, 14, 14, 14, 14, 14, 14, 14,
1472
 14, 14, 14, 14, 14, 14, 14, 14,
1473
 14, 14, 14, 14, 14, 14, 14, 14,
1474
 14, 14, 14, 14, 14, 14, 14, 14,
1475
 14, 14, 14, 14, 14, 14, 14, 14,
1476
 14, 14, 14, 14, 14, 14, 14, 14,
1477
 14, 14, 14, 14, 14, 14, 14, 14,
1478
 14, 14, 14, 14, 14, 14, 14, 14,
1479
 14, 14, 14, 14, 14, 14, 14, 14,
1480
 14, 14, 14, 14, 14, 14, 14, 14,
1481
 14, 14, 14, 14, 14, 14, 14, 14,
1482
 14, 14, 14, 14, 14, 14, 14, 14,
1483
 14, 14, 14, 14, 14, 14, 14, 14,
1484
 14, 14, 14, 14, 14, 14, 14, 14,
1485
 14, 14, 14, 14, 14, 14, 14, 14,
1486
 14, 14, 14, 14, 14, 14, 14, 14,
1487
 14, 14, 14, 14, 14, 14, 14, 14,
1488
 14, 14, 14, 14, 14, 14, 14, 14,
1489
 14, 14, 14, 14, 14, 14, 14, 14,
1490
 14, 14, 14, 14, 14, 14, 14, 14,
1491
 14, 14, 14, 14, 14, 14, 14, 14,
1492
 14, 14, 14, 14, 14, 14, 14, 14,
1493
 14, 14, 14, 14, 14, 14, 14, 14,
1494
 14, 14, 14, 14, 14, 14, 14, 14,
1495
 14, 14, 14, 14, 14, 14, 14, 15,
1496
 15, 15, 15, 15, 15, 15, 15, 15,
1497
 15, 15, 15, 15, 15, 15, 15, 15,
1498
 15, 15, 15, 15, 15, 15, 15, 15,
1499
 15, 15, 15, 15, 15, 15, 15, 15,
1500
 15, 15, 15, 15, 15, 15, 15, 15,
1501
 15, 15, 15, 15, 15, 15, 15, 15,
1502
 15, 15, 15,  4,
1503
};
1504

    
1505
static const uint8_t table1_mvx[1099] = {
1506
 32, 31, 32, 31, 33, 32, 33, 33,
1507
 31, 34, 30, 32, 32, 34, 35, 32,
1508
 34, 33, 29, 30, 30, 32, 31, 31,
1509
 33, 35, 35, 33, 31, 29, 29, 33,
1510
 34, 30, 31, 28, 36, 30, 34, 32,
1511
 32, 37, 32, 32, 25, 27, 39, 32,
1512
 32, 32, 38, 35, 36, 32, 37, 61,
1513
 26, 32, 34, 35,  3, 35, 27, 28,
1514
 29, 34, 28, 37, 31, 36, 32, 27,
1515
 31, 30, 29, 39, 33, 29, 33, 35,
1516
 25, 25, 29, 33, 31, 31, 31, 33,
1517
 32, 30, 32, 32, 41, 39, 33, 36,
1518
 32, 28, 34, 36, 38, 24, 60, 31,
1519
 23, 28, 32, 33, 59, 32, 40, 30,
1520
  5, 34, 32, 38, 32, 30, 43,  4,
1521
 32, 32, 42, 31, 31, 32, 26, 38,
1522
 26, 22, 21, 37, 61, 63, 37, 31,
1523
 32, 33,  2,  1, 23, 33, 41, 27,
1524
 35, 30, 38, 23, 33,  3, 28, 34,
1525
 34, 27, 41, 29, 39, 35, 36, 29,
1526
 32, 27, 30, 32, 24, 61, 37, 26,
1527
 59, 25, 35, 27, 36, 37, 30, 31,
1528
 34, 40,  3, 28, 34, 39, 32, 31,
1529
 32, 30, 24, 28, 35, 36, 26, 32,
1530
 31, 33, 29, 33, 39, 25, 30, 24,
1531
 35, 59, 29, 34, 25, 30, 21, 35,
1532
 43, 40, 32, 29,  5, 28, 31, 62,
1533
 33, 33, 25, 31, 21, 31, 43, 31,
1534
 34, 33, 20, 40, 39, 31, 31, 57,
1535
 38, 32, 42, 33, 32, 31, 32, 29,
1536
 30, 44,  5, 31, 22, 34, 36, 17,
1537
 38, 58, 38, 35, 32, 60, 35, 24,
1538
 32, 38, 16, 45, 42, 32, 31, 29,
1539
  4, 30, 17, 40, 46, 48, 63, 32,
1540
 42, 19, 41, 22, 28, 36, 45, 33,
1541
 33, 32, 29,  7, 41, 42, 18, 33,
1542
 33, 32, 22, 37,  1, 26, 22, 23,
1543
 49, 28, 26, 27, 32, 33, 27, 23,
1544
 28, 36, 15,  6, 34, 27, 31, 26,
1545
 23,  2, 33, 32, 34, 41, 28, 32,
1546
 41,  0, 36, 38, 34, 31, 47, 32,
1547
 17, 31, 39, 33, 37, 51, 30, 47,
1548
 32, 50, 32, 19, 63, 30, 25, 27,
1549
 33, 62, 24, 31, 27, 30, 37, 31,
1550
 45, 32, 39, 20, 46, 47, 35, 19,
1551
 34,  1, 49, 21, 21, 14, 51, 26,
1552
 23, 31, 36, 35, 58, 29, 29, 21,
1553
 20, 42, 13, 28, 12, 40, 31, 33,
1554
 39, 60, 32, 44, 33, 31, 28, 37,
1555
 29, 32, 30, 49, 43, 28, 39, 25,
1556
 32, 48,  2, 15, 20, 25, 31, 28,
1557
 21, 24, 25, 15, 31, 17, 37, 43,
1558
 18, 32, 33, 24, 33, 36, 13, 33,
1559
 31, 39, 11, 31, 33, 32, 39, 37,
1560
 32, 32, 29, 17, 44, 46, 36, 35,
1561
 26, 37, 58, 32, 34, 38,  8, 38,
1562
 38, 22, 29, 25, 16, 35, 32, 35,
1563
 33, 43, 18, 46, 38, 50, 33, 18,
1564
 53, 60, 13, 32, 36, 33, 51, 36,
1565
 43, 45, 27, 42, 29, 24, 30, 25,
1566
 31, 52, 31, 35, 38,  9, 22, 34,
1567
  4, 17, 28, 55, 42, 25, 17, 20,
1568
 47, 34, 33, 16, 40, 25, 16, 30,
1569
 53, 29, 10, 11, 14, 26, 33,  4,
1570
 35, 44, 26, 16, 31, 26, 34, 38,
1571
 29, 31, 30, 24, 22, 61, 32,  9,
1572
 45, 34, 31, 19,  9, 31, 46, 31,
1573
 35, 54, 29, 57, 30, 50,  3, 31,
1574
 63, 34, 47, 41, 51, 18, 31, 14,
1575
 37, 38, 31, 24, 32, 31, 50, 33,
1576
 31, 54, 27,  9, 33, 23, 19, 32,
1577
 29, 29, 33, 28, 47, 49, 30, 47,
1578
 33, 27, 25, 54, 44, 45, 50, 58,
1579
 51, 48, 33, 59, 33, 34, 57, 13,
1580
 26, 33, 13, 48, 30, 11,  7, 56,
1581
 34, 55, 26,  0, 26, 35,  1, 51,
1582
 33, 53, 31, 45, 12, 29, 29, 51,
1583
 31, 48,  2,  6, 34, 30, 28, 33,
1584
 60, 40, 27, 46, 31,  9, 35, 29,
1585
 31, 39, 55, 46, 19, 37, 62, 34,
1586
 30, 16, 19, 49, 41, 41, 39, 37,
1587
 14,  5, 13, 35, 55, 30, 40, 40,
1588
 42,  8, 20, 25, 45, 35, 33, 36,
1589
 54, 38, 27, 37, 62, 40, 15, 59,
1590
 49, 31, 29, 34, 34, 39, 24, 29,
1591
 25, 29, 21, 29, 10, 61, 33, 49,
1592
 35, 34,  3, 38, 39, 29,  7, 41,
1593
  1, 35,  4, 23, 15, 23, 11, 37,
1594
 28, 35, 30, 30, 24,  1, 43, 56,
1595
  8, 34, 42, 24, 45, 30, 20, 23,
1596
  8, 38, 22, 33, 17, 52, 34, 22,
1597
 53, 43, 44,  1, 27, 31, 41, 43,
1598
 41, 30, 31, 36, 30,  5, 55, 31,
1599
 33, 30, 40, 23, 15, 29, 34, 34,
1600
 59, 34, 30, 11, 13, 38,  5,  0,
1601
 30, 42,  5, 30, 29, 34, 10, 44,
1602
 30, 63, 35, 12,  3, 26, 15, 17,
1603
 25, 34, 43, 39, 34, 56, 29, 23,
1604
 30, 12, 30, 10, 35,  9, 24, 58,
1605
 10, 12, 54, 33, 37, 20, 41, 35,
1606
 29, 18, 61, 30, 40, 24, 39, 53,
1607
 62, 26, 29, 33, 34, 53, 49, 21,
1608
 27, 11, 63, 20, 26, 23,  7, 13,
1609
  6, 47, 29, 30,  9, 51, 22, 34,
1610
 21, 25, 33, 56, 57, 30, 38, 51,
1611
 51, 38, 63, 28, 40, 35, 33, 18,
1612
 33, 33, 24, 58, 58, 34, 49, 29,
1613
 43,  4,  1,  4, 42, 35, 35, 30,
1614
 17,  5, 56, 61, 25, 37, 36, 55,
1615
 28, 35, 29, 50, 48, 52,  2, 42,
1616
 34, 40, 46, 46, 43, 35, 29, 48,
1617
 20, 29, 31, 41,  7, 30, 35, 19,
1618
 14, 21,  8, 39, 39, 40, 46, 55,
1619
 34,  6, 30, 34, 37, 25, 37, 33,
1620
 22, 44, 52, 17, 35, 29, 36, 35,
1621
 40, 37, 28, 30, 50, 14, 28, 55,
1622
  6, 23, 19, 14, 30,  3, 30, 28,
1623
 28, 61, 61, 47, 45, 48, 40, 40,
1624
 34, 34, 25, 30, 29, 35,  4, 26,
1625
 53, 50, 26, 41, 27, 59, 27, 38,
1626
 39,  3, 50, 43, 47, 23, 33, 55,
1627
 35, 21, 23, 35, 61, 33, 46, 52,
1628
 35, 34, 24, 30, 43, 16, 37, 21,
1629
  2, 24, 45, 34, 30, 55, 55,  1,
1630
 29, 29, 26, 28, 25, 31, 36, 22,
1631
 17, 30, 52,  2, 44, 44, 57, 26,
1632
 62, 41, 39, 57, 26, 46, 49, 11,
1633
 16, 19,  5, 59, 38, 39, 58, 38,
1634
 25, 49, 50, 22, 28, 59,  9, 59,
1635
  7, 28, 55, 17,  4, 35, 50, 21,
1636
 29, 44, 47, 18, 24, 19, 25, 42,
1637
 35,  3, 51, 35, 16, 35, 30, 63,
1638
 57, 39, 39, 25, 35, 38,  9, 16,
1639
 36, 45, 31, 60, 14, 34, 42, 24,
1640
  0, 37, 18, 61, 57, 37, 28, 53,
1641
 20, 46, 14, 47, 38, 38, 38,  9,
1642
 34, 39, 43, 17, 39, 59,  5, 27,
1643
  0, 12, 27,
1644
};
1645

    
1646
static const uint8_t table1_mvy[1099] = {
1647
 32, 32, 31, 31, 32, 33, 31, 33,
1648
 33, 32, 32, 30, 34, 31, 32, 29,
1649
 33, 30, 32, 33, 31, 35, 34, 30,
1650
 34, 31, 33, 29, 29, 31, 33, 35,
1651
 30, 30, 35, 32, 32, 34, 34, 28,
1652
 25, 32, 36, 27, 32, 32, 32, 37,
1653
 39,  3, 32, 30, 31, 26, 31, 32,
1654
 32, 38, 29, 29, 32, 34, 31, 31,
1655
 34, 35, 33, 33, 28, 33,  1, 33,
1656
 27, 29, 30, 31, 28, 29, 37, 35,
1657
 31, 33, 35, 27, 36, 37, 25, 25,
1658
 61, 35,  4,  5, 32, 33, 36, 30,
1659
 23, 30, 28, 34, 31, 32, 32, 39,
1660
 32, 34, 21, 39, 32, 59, 32, 28,
1661
 32, 36, 60, 33, 24, 36, 32, 32,
1662
 41,  2, 32, 38, 26, 22, 33, 30,
1663
 31, 32, 32, 30, 31, 32, 29,  3,
1664
 40, 38, 32, 32, 33, 26, 31, 34,
1665
 28, 38, 34, 31,  3, 31, 35, 38,
1666
 27, 35, 33, 28, 29, 27, 29, 27,
1667
 43, 29, 37, 63, 31, 33, 34, 30,
1668
 31, 30, 37, 30, 35, 35, 26, 41,
1669
 37, 31, 33, 28, 26, 30, 42, 24,
1670
  7, 27, 33, 29, 36, 28, 34, 57,
1671
 23, 41, 36, 23, 35, 34, 25, 30,
1672
 25, 33, 25, 25, 29, 24, 33, 39,
1673
 33, 33,  0, 37, 31, 36, 21, 32,
1674
 61, 24, 35, 61, 31,  5, 31, 59,
1675
 39, 21, 32, 30, 34, 22, 40, 32,
1676
 29, 16, 31,  5, 62,  2, 20, 39,
1677
 39, 32, 33,  1, 31, 24, 36, 32,
1678
 36, 32, 28, 26,  6, 31, 38, 34,
1679
 58, 35, 32, 33, 33, 17, 43, 26,
1680
 31, 40, 31, 34, 32, 32, 31, 19,
1681
 30, 32, 29, 33, 38, 38, 32, 59,
1682
 40, 18, 38, 32, 35, 34, 32, 17,
1683
  1, 15, 30, 28, 31, 28, 34, 29,
1684
 32, 27, 35, 27, 49, 22, 37, 34,
1685
 37, 26, 32, 32, 22, 28, 45, 29,
1686
 30, 31, 43, 46, 41, 30, 26, 13,
1687
 34, 32, 27, 38, 42, 42, 33, 47,
1688
 33, 60, 27, 42, 25, 32, 22, 32,
1689
 48, 32, 45, 33, 33, 41, 27, 25,
1690
 19, 31, 35, 19, 36, 42, 27, 17,
1691
 31, 44, 28, 33, 33, 31, 23, 31,
1692
 40, 33, 31, 34, 30, 32, 33, 36,
1693
 35, 47, 37, 41, 31, 23, 41, 29,
1694
 30, 35, 32, 25, 32, 28, 58,  2,
1695
 37, 33, 14, 33, 49, 20, 39, 36,
1696
 21,  9, 23, 33, 35, 24, 39, 37,
1697
 11, 33, 30, 31, 31, 28, 51, 40,
1698
 35, 29, 25, 33, 46, 35, 37, 30,
1699
 30,  8, 63, 28, 15, 40, 33, 45,
1700
 49, 25, 32,  4, 47, 51, 36, 39,
1701
 53, 10, 24, 29, 30, 31, 25, 40,
1702
 38, 38, 33, 56, 23, 27, 32, 37,
1703
 26, 29, 43, 36, 33, 24, 55, 43,
1704
  9, 29, 34, 34, 24, 33, 18, 33,
1705
 33, 30, 31, 50, 24, 60, 30, 39,
1706
 34, 30, 39, 28, 22, 38,  2, 26,
1707
 63, 32, 57, 21, 39, 33, 28, 18,
1708
 30, 34, 22, 33, 29, 41, 30, 34,
1709
 35, 21, 13, 34, 35, 39, 30, 46,
1710
 32, 42, 32, 31, 33, 26, 11, 33,
1711
 22, 31, 25, 31, 53, 27, 43, 25,
1712
 40, 50, 21, 36, 38, 30, 12, 31,
1713
 34, 20, 15, 29, 32, 62, 30, 13,
1714
 17, 32, 19, 31, 20, 31, 30,  7,
1715
  1, 17, 34, 37, 31, 31, 44, 34,
1716
 26, 40, 16, 37, 52, 48, 30, 20,
1717
 18, 33, 38, 29,  7, 25, 30, 54,
1718
 45, 47, 46, 41, 29, 29, 16, 30,
1719
 14, 26, 38, 34, 34, 29, 34, 30,
1720
 29, 30, 57, 30,  4, 46, 33, 29,
1721
 39, 44, 30, 31, 50, 33, 31, 32,
1722
 19, 32, 40, 31, 37, 47,  1, 35,
1723
 16, 31,  0, 35, 33,  1, 17, 34,
1724
  9, 34, 33, 31, 49, 43, 42, 51,
1725
 34, 29, 23, 29, 14, 30, 45, 49,
1726
 11, 24, 31, 28, 35, 41, 30, 44,
1727
 18, 29, 34, 35, 36, 25, 26, 21,
1728
 31, 30, 34, 19, 34, 44, 36, 38,
1729
 25, 31, 28, 23, 37,  3, 55, 41,
1730
 30, 22, 41, 24, 33, 26, 35, 35,
1731
 30, 55, 51, 47, 48, 38, 24, 15,
1732
 21, 50, 25, 46, 30, 29, 10, 34,
1733
 42, 45, 29, 42, 22,  3, 33, 27,
1734
 34,  1, 34, 28, 34, 36, 35, 23,
1735
 23, 13, 58,  3, 26, 63, 25, 31,
1736
 34, 61, 38, 39, 25, 61, 29, 37,
1737
 30, 41, 26, 48, 28, 33, 50, 35,
1738
 30, 37, 29, 29, 40,  6, 39, 28,
1739
 28, 19,  8, 22, 45, 34, 35, 10,
1740
 58, 17, 37, 39, 30, 18, 54, 14,
1741
 29, 16, 59, 30, 35, 23, 35, 30,
1742
 47, 36, 29, 55, 20, 12, 31, 35,
1743
 14, 29, 18, 34, 34, 24, 29, 26,
1744
 22,  2, 27, 23,  8, 30, 55, 38,
1745
 60, 31,  4, 34, 49, 34, 27, 34,
1746
 33, 30, 31, 54, 42, 35, 38, 46,
1747
 44, 26, 27,  9, 39, 25, 21, 29,
1748
 28, 42, 13,  0,  5, 34, 37, 28,
1749
 24, 29, 63, 26, 22, 27, 29, 25,
1750
 33, 25, 61,  0, 35, 25, 36, 15,
1751
 27, 40, 53, 33,  3, 10, 16, 37,
1752
 38, 18, 30, 46, 27,  9,  6, 29,
1753
 62,  8, 42, 28, 29,  3, 25, 16,
1754
 26, 29, 35, 28, 27, 51, 61, 48,
1755
 37,  9, 34,  7, 49, 45, 20, 29,
1756
 21,  5,  5, 29, 28, 34, 29, 24,
1757
 10, 24, 35, 36, 38, 55, 11, 36,
1758
 38, 53, 54, 26, 30, 49, 20, 27,
1759
 30, 39, 33, 41, 49, 22, 38, 38,
1760
  4, 30,  8,  9,  3, 24, 22, 50,
1761
 37, 36, 31, 27,  2,  9, 42, 63,
1762
 25, 19, 44,  1, 28, 28, 48, 30,
1763
 34, 41, 41, 38, 12, 27, 15,  0,
1764
 16, 34, 35, 38, 28, 29, 40, 42,
1765
 51, 52, 45, 54, 59, 59, 42, 44,
1766
 37, 26, 46, 24, 15, 39, 22, 46,
1767
 19, 35, 38, 17, 37, 23, 52, 55,
1768
 50, 37, 26, 11, 37, 12, 24, 30,
1769
 16, 13, 22, 13, 36, 35, 40, 41,
1770
 34, 41, 26, 53, 51,  5, 21, 30,
1771
  2, 63, 41, 20,  1, 56, 21, 24,
1772
 25,  5, 28, 35, 26, 28, 30, 18,
1773
 29, 23, 40, 34, 20, 42, 39, 34,
1774
 28, 61, 38, 27, 62,  9, 36, 17,
1775
  9, 49, 24, 25, 54, 34, 39, 37,
1776
  3,  1, 25, 38, 38, 44, 35, 36,
1777
 12, 60, 36, 38, 40, 25, 43, 39,
1778
 53, 28, 39, 57, 46, 10, 52, 27,
1779
 35, 42, 45, 59, 15, 60, 38, 24,
1780
 23, 39, 12, 29, 24,  0, 20, 16,
1781
 28, 43, 35, 28,  1, 49,  4, 21,
1782
 42, 39, 29,  3, 44, 21, 53, 55,
1783
 11,  5,  3, 39, 53, 28, 25, 19,
1784
 34, 28, 21,
1785
};
1786

    
1787
MVTable mv_tables[2] = {
1788
    {
1789
        1099,
1790
        table0_mv_code,
1791
        table0_mv_bits,
1792
        table0_mvx,
1793
        table0_mvy,
1794
    },
1795
    {
1796
        1099,
1797
        table1_mv_code,
1798
        table1_mv_bits,
1799
        table1_mvx,
1800
        table1_mvy,
1801
    }
1802
};
1803

    
1804
const uint8_t v2_mb_type[8][2] = {
1805
 {1, 1}, {0   , 2}, {3   , 3}, {9   , 5},
1806
 {5, 4}, {0x21, 7}, {0x20, 7}, {0x11, 6},
1807
};
1808

    
1809
const uint8_t v2_intra_cbpc[4][2] = {
1810
 {1, 1}, {0, 3}, {1, 3}, {1, 2},
1811
};
1812

    
1813
const uint8_t wmv1_y_dc_scale_table[32]={
1814
//  0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1815
    0, 8, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21
1816
};
1817
const uint8_t wmv1_c_dc_scale_table[32]={
1818
//  0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
1819
    0, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22
1820
};
1821

    
1822
const uint8_t old_ff_y_dc_scale_table[32]={
1823
//  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1824
    0, 8, 8, 8, 8,10,12,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
1825
};
1826

    
1827
const uint8_t wmv1_scantable[WMV1_SCANTABLE_COUNT][64]={
1828
  {
1829
    0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11,
1830
    0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28,
1831
    0x30, 0x38, 0x29, 0x21, 0x1A, 0x13, 0x0C, 0x05,
1832
    0x06, 0x0D, 0x14, 0x1B, 0x22, 0x31, 0x39, 0x3A,
1833
    0x32, 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F,
1834
    0x16, 0x1D, 0x24, 0x2B, 0x33, 0x3B, 0x3C, 0x34,
1835
    0x2C, 0x25, 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x35,
1836
    0x3D, 0x3E, 0x36, 0x2E, 0x27, 0x2F, 0x37, 0x3F,
1837
  },
1838
  {
1839
    0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11,
1840
    0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28,
1841
    0x21, 0x30, 0x1A, 0x13, 0x0C, 0x05, 0x06, 0x0D,
1842
    0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 0x2A,
1843
    0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 0x16, 0x1D,
1844
    0x24, 0x2B, 0x32, 0x3A, 0x33, 0x3B, 0x2C, 0x25,
1845
    0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3C, 0x35,
1846
    0x3D, 0x2E, 0x27, 0x2F, 0x36, 0x3E, 0x37, 0x3F,
1847
  },
1848
  {
1849
    0x00, 0x01, 0x08, 0x02, 0x03, 0x09, 0x10, 0x18,
1850
    0x11, 0x0A, 0x04, 0x05, 0x0B, 0x12, 0x19, 0x20,
1851
    0x28, 0x30, 0x21, 0x1A, 0x13, 0x0C, 0x06, 0x07,
1852
    0x0D, 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39,
1853
    0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x0F, 0x16, 0x1D,
1854
    0x24, 0x2B, 0x32, 0x3A, 0x33, 0x2C, 0x25, 0x1E,
1855
    0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3B, 0x3C, 0x35,
1856
    0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F,
1857
  },
1858
  {
1859
    0x00, 0x08, 0x10, 0x01, 0x18, 0x20, 0x28, 0x09,
1860
    0x02, 0x03, 0x0A, 0x11, 0x19, 0x30, 0x38, 0x29,
1861
    0x21, 0x1A, 0x12, 0x0B, 0x04, 0x05, 0x0C, 0x13,
1862
    0x1B, 0x22, 0x31, 0x39, 0x32, 0x2A, 0x23, 0x1C,
1863
    0x14, 0x0D, 0x06, 0x07, 0x0E, 0x15, 0x1D, 0x24,
1864
    0x2B, 0x33, 0x3A, 0x3B, 0x34, 0x2C, 0x25, 0x1E,
1865
    0x16, 0x0F, 0x17, 0x1F, 0x26, 0x2D, 0x3C, 0x35,
1866
    0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F,
1867
  }
1868
};
1869

    
1870
const uint8_t table_inter_intra[4][2]={
1871
    {0,1} /*Luma-Left Chroma-Left*/,
1872
    {2,2} /*Luma-Top  Chroma-Left*/,
1873
    {6,3} /*luma-Left Chroma-Top */,
1874
    {7,3} /*luma-Top  Chroma-Top */
1875
};
1876

    
1877
static const uint32_t table_mb_non_intra2[128][2] = {
1878
{0x0000A7, 14}, {0x01B2B8, 18}, {0x01B28E, 18}, {0x036575, 19},
1879
{0x006CAC, 16}, {0x000A69, 18}, {0x002934, 20}, {0x00526B, 21},
1880
{0x006CA1, 16}, {0x01B2B9, 18}, {0x0029AD, 20}, {0x029353, 24},
1881
{0x006CA7, 16}, {0x006CAB, 16}, {0x01B2BB, 18}, {0x00029B, 16},
1882
{0x00D944, 17}, {0x000A6A, 18}, {0x0149A8, 23}, {0x03651F, 19},
1883
{0x006CAF, 16}, {0x000A4C, 18}, {0x03651E, 19}, {0x000A48, 18},
1884
{0x00299C, 20}, {0x00299F, 20}, {0x029352, 24}, {0x0029AC, 20},
1885
{0x000296, 16}, {0x00D946, 17}, {0x000A68, 18}, {0x000298, 16},
1886
{0x000527, 17}, {0x00D94D, 17}, {0x0014D7, 19}, {0x036574, 19},
1887
{0x000A5C, 18}, {0x01B299, 18}, {0x00299D, 20}, {0x00299E, 20},
1888
{0x000525, 17}, {0x000A66, 18}, {0x00A4D5, 22}, {0x00149B, 19},
1889
{0x000295, 16}, {0x006CAD, 16}, {0x000A49, 18}, {0x000521, 17},
1890
{0x006CAA, 16}, {0x00D945, 17}, {0x01B298, 18}, {0x00052F, 17},
1891
{0x003654, 15}, {0x006CA0, 16}, {0x000532, 17}, {0x000291, 16},
1892
{0x003652, 15}, {0x000520, 17}, {0x000A5D, 18}, {0x000294, 16},
1893
{0x00009B, 11}, {0x0006E2, 12}, {0x000028, 12}, {0x0001B0, 10},
1894
{0x000001,  3}, {0x000010,  8}, {0x00002F,  6}, {0x00004C, 10},
1895
{0x00000D,  4}, {0x000000, 10}, {0x000006,  9}, {0x000134, 12},
1896
{0x00000C,  4}, {0x000007, 10}, {0x000007,  9}, {0x0006E1, 12},
1897
{0x00000E,  5}, {0x0000DA,  9}, {0x000022,  9}, {0x000364, 11},
1898
{0x00000F,  4}, {0x000006, 10}, {0x00000F,  9}, {0x000135, 12},
1899
{0x000014,  5}, {0x0000DD,  9}, {0x000004,  9}, {0x000015, 11},
1900
{0x00001A,  6}, {0x0001B3, 10}, {0x000005, 10}, {0x0006E3, 12},
1901
{0x00000C,  5}, {0x0000B9,  8}, {0x000004,  8}, {0x0000DB,  9},
1902
{0x00000E,  4}, {0x00000B, 10}, {0x000023,  9}, {0x0006CB, 12},
1903
{0x000005,  6}, {0x0001B1, 10}, {0x000001, 10}, {0x0006E0, 12},
1904
{0x000011,  5}, {0x0000DF,  9}, {0x00000E,  9}, {0x000373, 11},
1905
{0x000003,  5}, {0x0000B8,  8}, {0x000006,  8}, {0x000175,  9},
1906
{0x000015,  5}, {0x000174,  9}, {0x000027,  9}, {0x000372, 11},
1907
{0x000010,  5}, {0x0000BB,  8}, {0x000005,  8}, {0x0000DE,  9},
1908
{0x00000F,  5}, {0x000001,  9}, {0x000012,  8}, {0x000004, 10},
1909
{0x000002,  3}, {0x000016,  5}, {0x000009,  4}, {0x000001,  5},
1910
};
1911

    
1912
static const uint32_t table_mb_non_intra3[128][2] = {
1913
{0x0002A1, 10}, {0x005740, 15}, {0x01A0BF, 18}, {0x015D19, 17},
1914
{0x001514, 13}, {0x00461E, 15}, {0x015176, 17}, {0x015177, 17},
1915
{0x0011AD, 13}, {0x00682E, 16}, {0x0682F9, 20}, {0x03417D, 19},
1916
{0x001A36, 14}, {0x002A2D, 14}, {0x00D05E, 17}, {0x006824, 16},
1917
{0x001515, 13}, {0x00545C, 15}, {0x0230E9, 18}, {0x011AFA, 17},
1918
{0x0015D7, 13}, {0x005747, 15}, {0x008D79, 16}, {0x006825, 16},
1919
{0x002BA2, 14}, {0x00A8BA, 16}, {0x0235F6, 18}, {0x015D18, 17},
1920
{0x0011AE, 13}, {0x00346F, 15}, {0x008C3B, 16}, {0x00346E, 15},
1921
{0x000D1A, 13}, {0x00461F, 15}, {0x0682F8, 20}, {0x011875, 17},
1922
{0x002BA1, 14}, {0x008D61, 16}, {0x0235F7, 18}, {0x0230E8, 18},
1923
{0x001513, 13}, {0x008D7B, 16}, {0x011AF4, 17}, {0x011AF5, 17},
1924
{0x001185, 13}, {0x0046BF, 15}, {0x008D60, 16}, {0x008D7C, 16},
1925
{0x001512, 13}, {0x00461C, 15}, {0x00AE8D, 16}, {0x008D78, 16},
1926
{0x000D0E, 13}, {0x003413, 15}, {0x0046B1, 15}, {0x003416, 15},
1927
{0x000AEA, 12}, {0x002A2C, 14}, {0x005741, 15}, {0x002A2F, 14},
1928
{0x000158,  9}, {0x0008D2, 12}, {0x00054C, 11}, {0x000686, 12},
1929
{0x000000,  2}, {0x000069,  8}, {0x00006B,  8}, {0x00068C, 12},
1930
{0x000007,  3}, {0x00015E,  9}, {0x0002A3, 10}, {0x000AE9, 12},
1931
{0x000006,  3}, {0x000231, 10}, {0x0002B8, 10}, {0x001A08, 14},
1932
{0x000010,  5}, {0x0001A9, 10}, {0x000342, 11}, {0x000A88, 12},
1933
{0x000004,  4}, {0x0001A2, 10}, {0x0002A4, 10}, {0x001184, 13},
1934
{0x000012,  5}, {0x000232, 10}, {0x0002B2, 10}, {0x000680, 12},
1935
{0x00001B,  6}, {0x00046A, 11}, {0x00068E, 12}, {0x002359, 14},
1936
{0x000016,  5}, {0x00015F,  9}, {0x0002A0, 10}, {0x00054D, 11},
1937
{0x000005,  4}, {0x000233, 10}, {0x0002B9, 10}, {0x0015D6, 13},
1938
{0x000022,  6}, {0x000468, 11}, {0x000683, 12}, {0x001A0A, 14},
1939
{0x000013,  5}, {0x000236, 10}, {0x0002BB, 10}, {0x001186, 13},
1940
{0x000017,  5}, {0x0001AB, 10}, {0x0002A7, 10}, {0x0008D3, 12},
1941
{0x000014,  5}, {0x000237, 10}, {0x000460, 11}, {0x000D0F, 13},
1942
{0x000019,  6}, {0x0001AA, 10}, {0x0002B3, 10}, {0x000681, 12},
1943
{0x000018,  6}, {0x0001A8, 10}, {0x0002A5, 10}, {0x00068F, 12},
1944
{0x000007,  4}, {0x000055,  7}, {0x000047,  7}, {0x0000AD,  8},
1945
};
1946

    
1947
static const uint32_t table_mb_non_intra4[128][2] = {
1948
{0x0000D4,  8}, {0x0021C5, 14}, {0x00F18A, 16}, {0x00D5BC, 16},
1949
{0x000879, 12}, {0x00354D, 14}, {0x010E3F, 17}, {0x010F54, 17},
1950
{0x000866, 12}, {0x00356E, 14}, {0x010F55, 17}, {0x010E3E, 17},
1951
{0x0010CE, 13}, {0x003C84, 14}, {0x00D5BD, 16}, {0x00F18B, 16},
1952
{0x000868, 12}, {0x00438C, 15}, {0x0087AB, 16}, {0x00790B, 15},
1953
{0x000F10, 12}, {0x00433D, 15}, {0x006AD3, 15}, {0x00790A, 15},
1954
{0x001AA7, 13}, {0x0043D4, 15}, {0x00871E, 16}, {0x006ADF, 15},
1955
{0x000D7C, 12}, {0x003C94, 14}, {0x00438D, 15}, {0x006AD2, 15},
1956
{0x0006BC, 11}, {0x0021E9, 14}, {0x006ADA, 15}, {0x006A99, 15},
1957
{0x0010F7, 13}, {0x004389, 15}, {0x006ADB, 15}, {0x0078C4, 15},
1958
{0x000D56, 12}, {0x0035F7, 14}, {0x00438E, 15}, {0x006A98, 15},
1959
{0x000D52, 12}, {0x003C95, 14}, {0x004388, 15}, {0x00433C, 15},
1960
{0x000D54, 12}, {0x001E4B, 13}, {0x003C63, 14}, {0x003C83, 14},
1961
{0x000861, 12}, {0x0021EB, 14}, {0x00356C, 14}, {0x0035F6, 14},
1962
{0x000863, 12}, {0x00219F, 14}, {0x003568, 14}, {0x003C82, 14},
1963
{0x0001AE,  9}, {0x0010C0, 13}, {0x000F11, 12}, {0x001AFA, 13},
1964
{0x000000,  1}, {0x0000F0,  8}, {0x0001AD,  9}, {0x0010C1, 13},
1965
{0x00000A,  4}, {0x0003C5, 10}, {0x000789, 11}, {0x001AB5, 13},
1966
{0x000009,  4}, {0x000435, 11}, {0x000793, 11}, {0x001E40, 13},
1967
{0x00001D,  5}, {0x0003CB, 10}, {0x000878, 12}, {0x001AAF, 13},
1968
{0x00000B,  4}, {0x0003C7, 10}, {0x000791, 11}, {0x001AAB, 13},
1969
{0x00001F,  5}, {0x000436, 11}, {0x0006BF, 11}, {0x000F19, 12},
1970
{0x00003D,  6}, {0x000D51, 12}, {0x0010C4, 13}, {0x0021E8, 14},
1971
{0x000036,  6}, {0x000437, 11}, {0x0006AF, 11}, {0x0010C5, 13},
1972
{0x00000C,  4}, {0x000432, 11}, {0x000794, 11}, {0x001E30, 13},
1973
{0x000042,  7}, {0x000870, 12}, {0x000F24, 12}, {0x001E43, 13},
1974
{0x000020,  6}, {0x00043E, 11}, {0x000795, 11}, {0x001AAA, 13},
1975
{0x000037,  6}, {0x0006AC, 11}, {0x0006AE, 11}, {0x0010F6, 13},
1976
{0x000034,  6}, {0x00043A, 11}, {0x000D50, 12}, {0x001AAE, 13},
1977
{0x000039,  6}, {0x00043F, 11}, {0x00078D, 11}, {0x0010D2, 13},
1978
{0x000038,  6}, {0x00043B, 11}, {0x0006BD, 11}, {0x0010D3, 13},
1979
{0x000011,  5}, {0x0001AC,  9}, {0x0000F3,  8}, {0x000439, 11},
1980
};
1981

    
1982
const uint32_t (* const wmv2_inter_table[WMV2_INTER_CBP_TABLE_COUNT])[2]={
1983
    table_mb_non_intra2,
1984
    table_mb_non_intra3,
1985
    table_mb_non_intra4,
1986
    table_mb_non_intra,
1987
};
1988

    
1989
const uint8_t wmv2_scantableA[64]={
1990
0x00, 0x01, 0x02, 0x08, 0x03, 0x09, 0x0A, 0x10,
1991
0x04, 0x0B, 0x11, 0x18, 0x12, 0x0C, 0x05, 0x13,
1992
0x19, 0x0D, 0x14, 0x1A, 0x1B, 0x06, 0x15, 0x1C,
1993
0x0E, 0x16, 0x1D, 0x07, 0x1E, 0x0F, 0x17, 0x1F,
1994
};
1995

    
1996
const uint8_t wmv2_scantableB[64]={
1997
0x00, 0x08, 0x01, 0x10, 0x09, 0x18, 0x11, 0x02,
1998
0x20, 0x0A, 0x19, 0x28, 0x12, 0x30, 0x21, 0x1A,
1999
0x38, 0x29, 0x22, 0x03, 0x31, 0x39, 0x0B, 0x2A,
2000
0x13, 0x32, 0x1B, 0x3A, 0x23, 0x2B, 0x33, 0x3B,
2001
};