Statistics
| Branch: | Revision:

ffmpeg / libavcodec / msmpeg4tab.h @ 699b3f99

History | View | Annotate | Download (81.2 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
 * This file is part of FFmpeg.
7
 *
8
 * FFmpeg is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU Lesser General Public
10
 * License as published by the Free Software Foundation; either
11
 * version 2.1 of the License, or (at your option) any later version.
12
 *
13
 * FFmpeg is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
 * Lesser General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU Lesser General Public
19
 * License along with FFmpeg; if not, write to the Free Software
20
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
 *
22
 * msmpeg4v1 & v2 stuff by Michael Niedermayer <michaelni@gmx.at>
23
 */
24

    
25
/**
26
 * @file msmpeg4tab.h
27
 * MSMPEG4 data tables.
28
 */
29

    
30
#ifndef AVCODEC_MSMPEG4TAB_H
31
#define AVCODEC_MSMPEG4TAB_H
32

    
33
#include <stdint.h>
34
#include "bitstream.h"
35
#include "rl.h"
36

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

    
73
/* dc table 0 */
74

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

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

    
141
/* dc table 1 */
142

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

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

    
209
/* vlc table 0, for intra luma */
210

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

    
248
static const int8_t table0_level[132] = {
249
  1,  2,  3,  4,  5,  6,  7,  8,
250
  9, 10, 11, 12, 13, 14, 15, 16,
251
  1,  2,  3,  4,  5,  6,  7,  8,
252
  9, 10, 11,  1,  2,  3,  4,  5,
253
  6,  7,  8,  1,  2,  3,  4,  5,
254
  6,  7,  1,  2,  3,  4,  5,  1,
255
  2,  3,  4,  1,  2,  3,  4,  1,
256
  2,  3,  1,  2,  3,  1,  2,  3,
257
  1,  2,  3,  1,  2,  3,  1,  2,
258
  3,  1,  2,  3,  1,  2,  1,  2,
259
  1,  1,  1,  1,  1,  1,  2,  3,
260
  4,  1,  2,  3,  4,  1,  2,  3,
261
  1,  2,  3,  1,  2,  1,  2,  1,
262
  2,  1,  2,  1,  2,  1,  2,  1,
263
  2,  1,  2,  1,  2,  1,  2,  1,
264
  1,  1,  1,  1,  1,  1,  1,  1,
265
  1,  1,  1,  1,
266
};
267

    
268
static const int8_t table0_run[132] = {
269
  0,  0,  0,  0,  0,  0,  0,  0,
270
  0,  0,  0,  0,  0,  0,  0,  0,
271
  1,  1,  1,  1,  1,  1,  1,  1,
272
  1,  1,  1,  2,  2,  2,  2,  2,
273
  2,  2,  2,  3,  3,  3,  3,  3,
274
  3,  3,  4,  4,  4,  4,  4,  5,
275
  5,  5,  5,  6,  6,  6,  6,  7,
276
  7,  7,  8,  8,  8,  9,  9,  9,
277
 10, 10, 10, 11, 11, 11, 12, 12,
278
 12, 13, 13, 13, 14, 14, 15, 15,
279
 16, 17, 18, 19, 20,  0,  0,  0,
280
  0,  1,  1,  1,  1,  2,  2,  2,
281
  3,  3,  3,  4,  4,  5,  5,  6,
282
  6,  7,  7,  8,  8,  9,  9, 10,
283
 10, 11, 11, 12, 12, 13, 13, 14,
284
 15, 16, 17, 18, 19, 20, 21, 22,
285
 23, 24, 25, 26,
286
};
287

    
288
/* vlc table 1, for intra chroma and P macro blocks */
289

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

    
331
static const int8_t table1_level[148] = {
332
  1,  2,  3,  4,  5,  6,  7,  8,
333
  9, 10, 11, 12, 13, 14,  1,  2,
334
  3,  4,  5,  6,  7,  8,  9,  1,
335
  2,  3,  4,  5,  1,  2,  3,  4,
336
  1,  2,  3,  4,  1,  2,  3,  4,
337
  1,  2,  3,  1,  2,  3,  1,  2,
338
  3,  1,  2,  3,  1,  2,  3,  1,
339
  2,  3,  1,  2,  3,  1,  2,  1,
340
  2,  1,  2,  1,  1,  1,  1,  1,
341
  1,  1,  1,  1,  1,  1,  1,  1,
342
  1,  1,  2,  3,  4,  5,  1,  2,
343
  3,  4,  1,  2,  3,  1,  2,  3,
344
  1,  2,  1,  2,  1,  2,  1,  2,
345
  1,  2,  1,  2,  1,  2,  1,  2,
346
  1,  2,  1,  2,  1,  2,  1,  2,
347
  1,  1,  1,  1,  1,  1,  1,  1,
348
  1,  1,  1,  1,  1,  1,  1,  1,
349
  1,  1,  1,  1,  1,  1,  1,  1,
350
  1,  1,  1,  1,
351
};
352

    
353
static const int8_t table1_run[148] = {
354
  0,  0,  0,  0,  0,  0,  0,  0,
355
  0,  0,  0,  0,  0,  0,  1,  1,
356
  1,  1,  1,  1,  1,  1,  1,  2,
357
  2,  2,  2,  2,  3,  3,  3,  3,
358
  4,  4,  4,  4,  5,  5,  5,  5,
359
  6,  6,  6,  7,  7,  7,  8,  8,
360
  8,  9,  9,  9, 10, 10, 10, 11,
361
 11, 11, 12, 12, 12, 13, 13, 14,
362
 14, 15, 15, 16, 17, 18, 19, 20,
363
 21, 22, 23, 24, 25, 26, 27, 28,
364
 29,  0,  0,  0,  0,  0,  1,  1,
365
  1,  1,  2,  2,  2,  3,  3,  3,
366
  4,  4,  5,  5,  6,  6,  7,  7,
367
  8,  8,  9,  9, 10, 10, 11, 11,
368
 12, 12, 13, 13, 14, 14, 15, 15,
369
 16, 17, 18, 19, 20, 21, 22, 23,
370
 24, 25, 26, 27, 28, 29, 30, 31,
371
 32, 33, 34, 35, 36, 37, 38, 39,
372
 40, 41, 42, 43,
373
};
374

    
375
/* third vlc table */
376

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

    
427
static const int8_t table2_level[185] = {
428
  1,  2,  3,  4,  5,  6,  7,  8,
429
  9, 10, 11, 12, 13, 14, 15, 16,
430
 17, 18, 19,  1,  2,  3,  4,  5,
431
  6,  7,  8,  9, 10, 11, 12, 13,
432
 14, 15,  1,  2,  3,  4,  5,  6,
433
  7,  8,  9, 10, 11, 12,  1,  2,
434
  3,  4,  5,  6,  7,  8,  9, 10,
435
 11,  1,  2,  3,  4,  5,  6,  1,
436
  2,  3,  4,  5,  1,  2,  3,  4,
437
  1,  2,  3,  4,  1,  2,  3,  4,
438
  1,  2,  3,  4,  1,  2,  3,  1,
439
  2,  3,  1,  2,  3,  1,  2,  3,
440
  1,  2,  3,  1,  2,  3,  1,  2,
441
  1,  2,  1,  1,  1,  1,  1,  1,
442
  1,  1,  1,  1,  1,  1,  1,  1,
443
  2,  3,  4,  5,  6,  1,  2,  3,
444
  4,  5,  1,  2,  3,  4,  1,  2,
445
  3,  4,  1,  2,  3,  1,  2,  1,
446
  2,  1,  2,  1,  2,  1,  2,  1,
447
  2,  1,  2,  1,  2,  1,  2,  1,
448
  2,  1,  2,  1,  1,  1,  1,  1,
449
  1,  1,  1,  1,  1,  1,  1,  1,
450
  1,  1,  1,  1,  1,  1,  1,  1,
451
  1,
452
};
453

    
454
static const int8_t table2_run[185] = {
455
  0,  0,  0,  0,  0,  0,  0,  0,
456
  0,  0,  0,  0,  0,  0,  0,  0,
457
  0,  0,  0,  1,  1,  1,  1,  1,
458
  1,  1,  1,  1,  1,  1,  1,  1,
459
  1,  1,  2,  2,  2,  2,  2,  2,
460
  2,  2,  2,  2,  2,  2,  3,  3,
461
  3,  3,  3,  3,  3,  3,  3,  3,
462
  3,  4,  4,  4,  4,  4,  4,  5,
463
  5,  5,  5,  5,  6,  6,  6,  6,
464
  7,  7,  7,  7,  8,  8,  8,  8,
465
  9,  9,  9,  9, 10, 10, 10, 11,
466
 11, 11, 12, 12, 12, 13, 13, 13,
467
 14, 14, 14, 15, 15, 15, 16, 16,
468
 17, 17, 18, 19, 20, 21, 22, 23,
469
 24, 25, 26, 27, 28, 29, 30,  0,
470
  0,  0,  0,  0,  0,  1,  1,  1,
471
  1,  1,  2,  2,  2,  2,  3,  3,
472
  3,  3,  4,  4,  4,  5,  5,  6,
473
  6,  7,  7,  8,  8,  9,  9, 10,
474
 10, 11, 11, 12, 12, 13, 13, 14,
475
 14, 15, 15, 16, 17, 18, 19, 20,
476
 21, 22, 23, 24, 25, 26, 27, 28,
477
 29, 30, 31, 32, 33, 34, 35, 36,
478
 37,
479
};
480

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

    
528
static const int8_t table4_level[168] = {
529
  1,  2,  3,  4,  5,  6,  7,  8,
530
  9, 10, 11, 12, 13, 14, 15, 16,
531
 17, 18, 19, 20, 21, 22, 23,  1,
532
  2,  3,  4,  5,  6,  7,  8,  9,
533
 10, 11,  1,  2,  3,  4,  5,  6,
534
  7,  8,  1,  2,  3,  4,  5,  6,
535
  7,  1,  2,  3,  4,  5,  1,  2,
536
  3,  4,  5,  1,  2,  3,  4,  1,
537
  2,  3,  4,  1,  2,  3,  1,  2,
538
  3,  1,  2,  3,  1,  2,  3,  1,
539
  2,  1,  2,  1,  2,  1,  2,  1,
540
  2,  1,  1,  1,  1,  1,  1,  1,
541
  1,  1,  1,  1,  2,  3,  4,  5,
542
  6,  7,  8,  9,  1,  2,  3,  4,
543
  5,  1,  2,  3,  4,  1,  2,  3,
544
  4,  1,  2,  3,  1,  2,  3,  1,
545
  2,  3,  1,  2,  1,  2,  1,  2,
546
  1,  2,  1,  2,  1,  2,  1,  2,
547
  1,  2,  1,  1,  1,  1,  1,  1,
548
  1,  1,  1,  1,  1,  1,  1,  1,
549
  1,  1,  1,  1,  1,  1,  1,  1,
550
};
551

    
552
static const int8_t table4_run[168] = {
553
  0,  0,  0,  0,  0,  0,  0,  0,
554
  0,  0,  0,  0,  0,  0,  0,  0,
555
  0,  0,  0,  0,  0,  0,  0,  1,
556
  1,  1,  1,  1,  1,  1,  1,  1,
557
  1,  1,  2,  2,  2,  2,  2,  2,
558
  2,  2,  3,  3,  3,  3,  3,  3,
559
  3,  4,  4,  4,  4,  4,  5,  5,
560
  5,  5,  5,  6,  6,  6,  6,  7,
561
  7,  7,  7,  8,  8,  8,  9,  9,
562
  9, 10, 10, 10, 11, 11, 11, 12,
563
 12, 13, 13, 14, 14, 15, 15, 16,
564
 16, 17, 18, 19, 20, 21, 22, 23,
565
 24, 25, 26,  0,  0,  0,  0,  0,
566
  0,  0,  0,  0,  1,  1,  1,  1,
567
  1,  2,  2,  2,  2,  3,  3,  3,
568
  3,  4,  4,  4,  5,  5,  5,  6,
569
  6,  6,  7,  7,  8,  8,  9,  9,
570
 10, 10, 11, 11, 12, 12, 13, 13,
571
 14, 14, 15, 16, 17, 18, 19, 20,
572
 21, 22, 23, 24, 25, 26, 27, 28,
573
 29, 30, 31, 32, 33, 34, 35, 36,
574
};
575

    
576
extern const uint16_t inter_vlc[103][2];
577
extern const int8_t inter_level[102];
578
extern const int8_t inter_run[102];
579

    
580
extern const uint16_t intra_vlc[103][2];
581
extern const int8_t intra_level[102];
582
extern const int8_t intra_run[102];
583

    
584
extern const uint8_t DCtab_lum[13][2];
585
extern const uint8_t DCtab_chrom[13][2];
586

    
587
extern const uint8_t cbpy_tab[16][2];
588
extern const uint8_t mvtab[33][2];
589

    
590
extern const uint8_t intra_MCBPC_code[9];
591
extern const uint8_t intra_MCBPC_bits[9];
592

    
593
extern const uint8_t inter_MCBPC_code[28];
594
extern const uint8_t inter_MCBPC_bits[28];
595

    
596
#define NB_RL_TABLES  6
597

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

    
651
/* motion vector table 0 */
652

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

    
794
static const uint8_t table0_mv_bits[1100] = {
795
  1,  4,  4,  4,  5,  5,  5,  6,
796
  6,  6,  7,  7,  7,  8,  8,  8,
797
  8,  8,  8,  8,  8,  8,  8,  8,
798
  8,  9,  9,  9,  9,  9,  9,  9,
799
  9,  9,  9,  9,  9, 10, 10, 10,
800
 10, 10, 10, 10, 10, 10, 10, 10,
801
 10, 10, 10, 10, 10, 10, 10, 10,
802
 10, 10, 10, 10, 11, 11, 11, 11,
803
 11, 11, 11, 11, 11, 11, 11, 11,
804
 11, 11, 11, 11, 11, 11, 11, 11,
805
 11, 11, 11, 11, 11, 11, 11, 11,
806
 12, 12, 12, 12, 12, 12, 12, 12,
807
 12, 12, 12, 12, 12, 12, 12, 12,
808
 12, 12, 12, 12, 12, 12, 12, 12,
809
 12, 12, 12, 12, 12, 12, 12, 12,
810
 12, 12, 12, 12, 12, 12, 12, 12,
811
 12, 12, 12, 12, 12, 12, 12, 12,
812
 12, 12, 12, 13, 13, 13, 13, 13,
813
 13, 13, 13, 13, 13, 13, 13, 13,
814
 13, 13, 13, 13, 13, 13, 13, 13,
815
 13, 13, 13, 13, 13, 13, 13, 13,
816
 13, 13, 13, 13, 13, 13, 13, 13,
817
 13, 13, 13, 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, 14, 14, 14, 14, 14, 14,
821
 14, 14, 14, 14, 14, 14, 14, 14,
822
 14, 14, 14, 14, 14, 14, 14, 14,
823
 14, 14, 14, 14, 14, 14, 14, 14,
824
 14, 14, 14, 14, 14, 14, 14, 14,
825
 14, 14, 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, 15, 15, 15, 15, 15, 15, 15,
834
 15, 15, 15, 15, 15, 15, 15, 15,
835
 15, 15, 15, 15, 15, 15, 15, 15,
836
 15, 15, 15, 15, 15, 15, 15, 15,
837
 15, 15, 15, 15, 15, 15, 15, 15,
838
 15, 15, 15, 15, 15, 15, 15, 15,
839
 15, 15, 15, 15, 15, 15, 15, 15,
840
 15, 15, 15, 15, 15, 15, 15, 15,
841
 15, 15, 15, 15, 15, 15, 15, 15,
842
 15, 15, 15, 15, 15, 15, 15, 15,
843
 15, 15, 15, 15, 15, 15, 15, 15,
844
 15, 15, 15, 15, 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, 16, 16, 16, 16,
854
 16, 16, 16, 16, 16, 16, 16, 16,
855
 16, 16, 16, 16, 16, 16, 16, 16,
856
 16, 16, 16, 16, 16, 16, 16, 16,
857
 16, 16, 16, 16, 16, 16, 16, 16,
858
 16, 16, 16, 16, 16, 16, 16, 16,
859
 16, 16, 16, 16, 16, 16, 16, 16,
860
 16, 16, 16, 16, 16, 16, 16, 16,
861
 16, 16, 16, 16, 16, 16, 16, 16,
862
 16, 16, 16, 16, 16, 16, 16, 16,
863
 16, 16, 16, 16, 16, 16, 16, 16,
864
 16, 16, 16, 16, 16, 16, 16, 16,
865
 16, 16, 16, 16, 16, 16, 16, 16,
866
 16, 16, 16, 16, 16, 16, 16, 16,
867
 16, 16, 16, 16, 16, 16, 16, 16,
868
 16, 16, 16, 16, 16, 16, 16, 16,
869
 16, 16, 16, 16, 16, 16, 16, 16,
870
 16, 16, 16, 16, 16, 16, 16, 16,
871
 16, 16, 16, 16, 16, 16, 16, 16,
872
 16, 16, 16, 16, 16, 16, 16, 16,
873
 16, 16, 16, 16, 16, 16, 16, 16,
874
 16, 16, 16, 16, 16, 16, 16, 16,
875
 16, 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, 17, 17, 17, 17, 17, 17, 17,
885
 17, 17, 17, 17, 17, 17, 17, 17,
886
 17, 17, 17, 17, 17, 17, 17, 17,
887
 17, 17, 17, 17, 17, 17, 17, 17,
888
 17, 17, 17, 17, 17, 17, 17, 17,
889
 17, 17, 17, 17, 17, 17, 17, 17,
890
 17, 17, 17, 17, 17, 17, 17, 17,
891
 17, 17, 17, 17, 17, 17, 17, 17,
892
 17, 17, 17, 17, 17, 17, 17, 17,
893
 17, 17, 17, 17, 17, 17, 17, 17,
894
 17, 17, 17, 17, 17, 17, 17, 17,
895
 17, 17, 17, 17, 17, 17, 17, 17,
896
 17, 17, 17, 17, 17, 17, 17, 17,
897
 17, 17, 17, 17, 17, 17, 17, 17,
898
 17, 17, 17, 17, 17, 17, 17, 17,
899
 17, 17, 17, 17, 17, 17, 17, 17,
900
 17, 17, 17, 17, 17, 17, 17, 17,
901
 17, 17, 17, 17, 17, 17, 17, 17,
902
 17, 17, 17, 17, 17, 17, 17, 17,
903
 17, 17, 17, 17, 17, 17, 17, 17,
904
 17, 17, 17, 17, 17, 17, 17, 17,
905
 17, 17, 17, 17, 17, 17, 17, 17,
906
 17, 17, 17, 17, 17, 17, 17, 17,
907
 17, 17, 17, 17, 17, 17, 17, 17,
908
 17, 17, 17, 17, 17, 17, 17, 17,
909
 17, 17, 17, 17, 17, 17, 17, 17,
910
 17, 17, 17, 17, 17, 17, 17, 17,
911
 17, 17, 17, 17, 17, 17, 17, 17,
912
 17, 17, 17, 17, 17, 17, 17, 17,
913
 17, 17, 17, 17, 17, 17, 17, 17,
914
 17, 17, 17, 17, 17, 17, 17, 17,
915
 17, 17, 17, 17, 17, 17, 17, 17,
916
 17, 17, 17, 17, 17, 17, 17, 17,
917
 17, 17, 17, 17, 17, 17, 17, 17,
918
 17, 17, 17, 17, 17, 17, 17, 17,
919
 17, 17, 17, 17, 17, 17, 17, 17,
920
 17, 17, 17, 17, 17, 17, 17, 17,
921
 17, 17, 17, 17, 17, 17, 17, 17,
922
 17, 17, 17, 17, 17, 17, 17, 17,
923
 17, 17, 17, 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,  8,
933
};
934

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

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

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

    
1359
static const uint8_t table1_mv_bits[1100] = {
1360
  2,  4,  4,  4,  5,  5,  5,  5,
1361
  6,  6,  7,  7,  7,  7,  7,  8,
1362
  8,  8,  8,  8,  8,  8,  8,  8,
1363
  8,  8,  8,  8,  8,  8,  8,  8,
1364
  8,  9,  9,  9,  9,  9,  9,  9,
1365
  9,  9,  9,  9,  9,  9,  9,  9,
1366
  9,  9,  9,  9,  9, 10, 10, 10,
1367
 10, 10, 10, 10, 10, 10, 10, 10,
1368
 10, 10, 10, 10, 10, 10, 10, 10,
1369
 10, 10, 10, 10, 10, 10, 10, 10,
1370
 10, 10, 10, 10, 10, 10, 10, 10,
1371
 10, 10, 10, 10, 10, 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, 11, 11, 11, 11, 11,
1375
 11, 11, 11, 11, 11, 11, 11, 11,
1376
 11, 11, 11, 11, 11, 11, 11, 11,
1377
 11, 11, 11, 11, 11, 11, 11, 11,
1378
 11, 11, 11, 11, 11, 11, 11, 11,
1379
 11, 11, 11, 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, 12, 12, 12, 12, 12,
1385
 12, 12, 12, 12, 12, 12, 12, 12,
1386
 12, 12, 12, 12, 12, 12, 12, 12,
1387
 12, 12, 12, 12, 12, 12, 12, 12,
1388
 12, 12, 12, 12, 12, 12, 12, 12,
1389
 12, 12, 12, 12, 12, 12, 12, 12,
1390
 12, 12, 12, 12, 12, 12, 12, 12,
1391
 12, 12, 12, 12, 12, 12, 12, 12,
1392
 12, 12, 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, 13, 13, 13, 13, 13, 13,
1402
 13, 13, 13, 13, 13, 13, 13, 13,
1403
 13, 13, 13, 13, 13, 13, 13, 13,
1404
 13, 13, 13, 13, 13, 13, 13, 13,
1405
 13, 13, 13, 13, 13, 13, 13, 13,
1406
 13, 13, 13, 13, 13, 13, 13, 13,
1407
 13, 13, 13, 13, 13, 13, 13, 13,
1408
 13, 13, 13, 13, 13, 13, 13, 13,
1409
 13, 13, 13, 13, 13, 13, 13, 13,
1410
 13, 13, 13, 13, 13, 13, 13, 13,
1411
 13, 13, 13, 13, 13, 13, 13, 13,
1412
 13, 13, 13, 13, 13, 13, 13, 13,
1413
 13, 13, 13, 13, 13, 13, 13, 13,
1414
 13, 13, 13, 13, 13, 13, 13, 13,
1415
 13, 13, 13, 13, 13, 13, 13, 13,
1416
 13, 13, 13, 13, 13, 13, 13, 13,
1417
 13, 13, 13, 13, 13, 13, 13, 13,
1418
 13, 13, 13, 13, 13, 13, 13, 13,
1419
 13, 13, 13, 13, 13, 13, 13, 13,
1420
 13, 13, 13, 13, 13, 13, 13, 13,
1421
 13, 13, 13, 13, 13, 13, 13, 13,
1422
 13, 13, 13, 13, 13, 13, 13, 13,
1423
 13, 13, 13, 13, 13, 13, 13, 13,
1424
 13, 13, 13, 13, 13, 13, 13, 13,
1425
 13, 13, 13, 13, 13, 13, 13, 13,
1426
 13, 13, 13, 13, 13, 13, 13, 13,
1427
 13, 13, 13, 13, 13, 13, 13, 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, 14,
1437
 14, 14, 14, 14, 14, 14, 14, 14,
1438
 14, 14, 14, 14, 14, 14, 14, 14,
1439
 14, 14, 14, 14, 14, 14, 14, 14,
1440
 14, 14, 14, 14, 14, 14, 14, 14,
1441
 14, 14, 14, 14, 14, 14, 14, 14,
1442
 14, 14, 14, 14, 14, 14, 14, 14,
1443
 14, 14, 14, 14, 14, 14, 14, 14,
1444
 14, 14, 14, 14, 14, 14, 14, 14,
1445
 14, 14, 14, 14, 14, 14, 14, 14,
1446
 14, 14, 14, 14, 14, 14, 14, 14,
1447
 14, 14, 14, 14, 14, 14, 14, 14,
1448
 14, 14, 14, 14, 14, 14, 14, 14,
1449
 14, 14, 14, 14, 14, 14, 14, 14,
1450
 14, 14, 14, 14, 14, 14, 14, 14,
1451
 14, 14, 14, 14, 14, 14, 14, 14,
1452
 14, 14, 14, 14, 14, 14, 14, 14,
1453
 14, 14, 14, 14, 14, 14, 14, 14,
1454
 14, 14, 14, 14, 14, 14, 14, 14,
1455
 14, 14, 14, 14, 14, 14, 14, 14,
1456
 14, 14, 14, 14, 14, 14, 14, 14,
1457
 14, 14, 14, 14, 14, 14, 14, 14,
1458
 14, 14, 14, 14, 14, 14, 14, 14,
1459
 14, 14, 14, 14, 14, 14, 14, 14,
1460
 14, 14, 14, 14, 14, 14, 14, 14,
1461
 14, 14, 14, 14, 14, 14, 14, 14,
1462
 14, 14, 14, 14, 14, 14, 14, 14,
1463
 14, 14, 14, 14, 14, 14, 14, 14,
1464
 14, 14, 14, 14, 14, 14, 14, 14,
1465
 14, 14, 14, 14, 14, 14, 14, 14,
1466
 14, 14, 14, 14, 14, 14, 14, 14,
1467
 14, 14, 14, 14, 14, 14, 14, 14,
1468
 14, 14, 14, 14, 14, 14, 14, 14,
1469
 14, 14, 14, 14, 14, 14, 14, 14,
1470
 14, 14, 14, 14, 14, 14, 14, 14,
1471
 14, 14, 14, 14, 14, 14, 14, 14,
1472
 14, 14, 14, 14, 14, 14, 14, 14,
1473
 14, 14, 14, 14, 14, 14, 14, 14,
1474
 14, 14, 14, 14, 14, 14, 14, 14,
1475
 14, 14, 14, 14, 14, 14, 14, 14,
1476
 14, 14, 14, 14, 14, 14, 14, 14,
1477
 14, 14, 14, 14, 14, 14, 14, 14,
1478
 14, 14, 14, 14, 14, 14, 14, 14,
1479
 14, 14, 14, 14, 14, 14, 14, 14,
1480
 14, 14, 14, 14, 14, 14, 14, 14,
1481
 14, 14, 14, 14, 14, 14, 14, 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, 15,
1491
 15, 15, 15, 15, 15, 15, 15, 15,
1492
 15, 15, 15, 15, 15, 15, 15, 15,
1493
 15, 15, 15, 15, 15, 15, 15, 15,
1494
 15, 15, 15, 15, 15, 15, 15, 15,
1495
 15, 15, 15, 15, 15, 15, 15, 15,
1496
 15, 15, 15, 15, 15, 15, 15, 15,
1497
 15, 15, 15,  4,
1498
};
1499

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

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

    
1782
/* motion vector table */
1783
typedef struct MVTable {
1784
    int n;
1785
    const uint16_t *table_mv_code;
1786
    const uint8_t *table_mv_bits;
1787
    const uint8_t *table_mvx;
1788
    const uint8_t *table_mvy;
1789
    uint16_t *table_mv_index; /* encoding: convert mv to index in table_mv */
1790
    VLC vlc;                /* decoding: vlc */
1791
} MVTable;
1792

    
1793
static MVTable mv_tables[2] = {
1794
    {
1795
        1099,
1796
        table0_mv_code,
1797
        table0_mv_bits,
1798
        table0_mvx,
1799
        table0_mvy,
1800
    },
1801
    {
1802
        1099,
1803
        table1_mv_code,
1804
        table1_mv_bits,
1805
        table1_mvx,
1806
        table1_mvy,
1807
    }
1808
};
1809

    
1810
static const uint8_t v2_mb_type[8][2] = {
1811
 {1, 1}, {0   , 2}, {3   , 3}, {9   , 5},
1812
 {5, 4}, {0x21, 7}, {0x20, 7}, {0x11, 6},
1813
};
1814

    
1815
static const uint8_t v2_intra_cbpc[4][2] = {
1816
 {1, 1}, {0, 3}, {1, 3}, {1, 2},
1817
};
1818

    
1819
static const uint8_t wmv1_y_dc_scale_table[32]={
1820
//  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
1821
    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
1822
};
1823
static const uint8_t wmv1_c_dc_scale_table[32]={
1824
//  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
1825
    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
1826
};
1827

    
1828
static const uint8_t old_ff_y_dc_scale_table[32]={
1829
//  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
1830
    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
1831
};
1832
static const uint8_t old_ff_c_dc_scale_table[32]={
1833
//  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
1834
    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
1835
};
1836

    
1837

    
1838
#define WMV1_SCANTABLE_COUNT 4
1839

    
1840
static const uint8_t wmv1_scantable00[64]= {
1841
0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11,
1842
0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28,
1843
0x30, 0x38, 0x29, 0x21, 0x1A, 0x13, 0x0C, 0x05,
1844
0x06, 0x0D, 0x14, 0x1B, 0x22, 0x31, 0x39, 0x3A,
1845
0x32, 0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F,
1846
0x16, 0x1D, 0x24, 0x2B, 0x33, 0x3B, 0x3C, 0x34,
1847
0x2C, 0x25, 0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x35,
1848
0x3D, 0x3E, 0x36, 0x2E, 0x27, 0x2F, 0x37, 0x3F,
1849
};
1850
static const uint8_t wmv1_scantable01[64]= {
1851
0x00, 0x08, 0x01, 0x02, 0x09, 0x10, 0x18, 0x11,
1852
0x0A, 0x03, 0x04, 0x0B, 0x12, 0x19, 0x20, 0x28,
1853
0x21, 0x30, 0x1A, 0x13, 0x0C, 0x05, 0x06, 0x0D,
1854
0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39, 0x2A,
1855
0x23, 0x1C, 0x15, 0x0E, 0x07, 0x0F, 0x16, 0x1D,
1856
0x24, 0x2B, 0x32, 0x3A, 0x33, 0x3B, 0x2C, 0x25,
1857
0x1E, 0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3C, 0x35,
1858
0x3D, 0x2E, 0x27, 0x2F, 0x36, 0x3E, 0x37, 0x3F,
1859
};
1860
static const uint8_t wmv1_scantable02[64]= {
1861
0x00, 0x01, 0x08, 0x02, 0x03, 0x09, 0x10, 0x18,
1862
0x11, 0x0A, 0x04, 0x05, 0x0B, 0x12, 0x19, 0x20,
1863
0x28, 0x30, 0x21, 0x1A, 0x13, 0x0C, 0x06, 0x07,
1864
0x0D, 0x14, 0x1B, 0x22, 0x29, 0x38, 0x31, 0x39,
1865
0x2A, 0x23, 0x1C, 0x15, 0x0E, 0x0F, 0x16, 0x1D,
1866
0x24, 0x2B, 0x32, 0x3A, 0x33, 0x2C, 0x25, 0x1E,
1867
0x17, 0x1F, 0x26, 0x2D, 0x34, 0x3B, 0x3C, 0x35,
1868
0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F,
1869
};
1870
static const uint8_t wmv1_scantable03[64]= {
1871
0x00, 0x08, 0x10, 0x01, 0x18, 0x20, 0x28, 0x09,
1872
0x02, 0x03, 0x0A, 0x11, 0x19, 0x30, 0x38, 0x29,
1873
0x21, 0x1A, 0x12, 0x0B, 0x04, 0x05, 0x0C, 0x13,
1874
0x1B, 0x22, 0x31, 0x39, 0x32, 0x2A, 0x23, 0x1C,
1875
0x14, 0x0D, 0x06, 0x07, 0x0E, 0x15, 0x1D, 0x24,
1876
0x2B, 0x33, 0x3A, 0x3B, 0x34, 0x2C, 0x25, 0x1E,
1877
0x16, 0x0F, 0x17, 0x1F, 0x26, 0x2D, 0x3C, 0x35,
1878
0x2E, 0x27, 0x2F, 0x36, 0x3D, 0x3E, 0x37, 0x3F,
1879
};
1880

    
1881
static const uint8_t *wmv1_scantable[WMV1_SCANTABLE_COUNT+1]={
1882
    wmv1_scantable00,
1883
    wmv1_scantable01,
1884
    wmv1_scantable02,
1885
    wmv1_scantable03,
1886
};
1887

    
1888
static const uint8_t table_inter_intra[4][2]={
1889
    {0,1} /*Luma-Left Chroma-Left*/,
1890
    {2,2} /*Luma-Top  Chroma-Left*/,
1891
    {6,3} /*luma-Left Chroma-Top */,
1892
    {7,3} /*luma-Top  Chroma-Top */
1893
};
1894

    
1895
#define WMV2_INTER_CBP_TABLE_COUNT 4
1896

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

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

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

    
2002
static const uint32_t (*wmv2_inter_table[WMV2_INTER_CBP_TABLE_COUNT])[2]={
2003
    table_mb_non_intra2,
2004
    table_mb_non_intra3,
2005
    table_mb_non_intra4,
2006
    table_mb_non_intra,
2007
};
2008

    
2009
static const uint8_t wmv2_scantableA[64]={
2010
0x00, 0x01, 0x02, 0x08, 0x03, 0x09, 0x0A, 0x10,
2011
0x04, 0x0B, 0x11, 0x18, 0x12, 0x0C, 0x05, 0x13,
2012
0x19, 0x0D, 0x14, 0x1A, 0x1B, 0x06, 0x15, 0x1C,
2013
0x0E, 0x16, 0x1D, 0x07, 0x1E, 0x0F, 0x17, 0x1F,
2014
};
2015

    
2016
static const uint8_t wmv2_scantableB[64]={
2017
0x00, 0x08, 0x01, 0x10, 0x09, 0x18, 0x11, 0x02,
2018
0x20, 0x0A, 0x19, 0x28, 0x12, 0x30, 0x21, 0x1A,
2019
0x38, 0x29, 0x22, 0x03, 0x31, 0x39, 0x0B, 0x2A,
2020
0x13, 0x32, 0x1B, 0x3A, 0x23, 0x2B, 0x33, 0x3B,
2021
};
2022

    
2023
#endif