Statistics
| Branch: | Revision:

ffmpeg / libavcodec / msmpeg4tab.h @ 42ef2dbc

History | View | Annotate | Download (81.1 KB)

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

    
66
/* dc table 0 */
67

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

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

    
134
/* dc table 1 */
135

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

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

    
202
/* vlc table 0, for intra luma */
203

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

    
241
static const int8_t table0_level[132] = {
242
  1,  2,  3,  4,  5,  6,  7,  8,
243
  9, 10, 11, 12, 13, 14, 15, 16,
244
  1,  2,  3,  4,  5,  6,  7,  8,
245
  9, 10, 11,  1,  2,  3,  4,  5,
246
  6,  7,  8,  1,  2,  3,  4,  5,
247
  6,  7,  1,  2,  3,  4,  5,  1,
248
  2,  3,  4,  1,  2,  3,  4,  1,
249
  2,  3,  1,  2,  3,  1,  2,  3,
250
  1,  2,  3,  1,  2,  3,  1,  2,
251
  3,  1,  2,  3,  1,  2,  1,  2,
252
  1,  1,  1,  1,  1,  1,  2,  3,
253
  4,  1,  2,  3,  4,  1,  2,  3,
254
  1,  2,  3,  1,  2,  1,  2,  1,
255
  2,  1,  2,  1,  2,  1,  2,  1,
256
  2,  1,  2,  1,  2,  1,  2,  1,
257
  1,  1,  1,  1,  1,  1,  1,  1,
258
  1,  1,  1,  1,
259
};
260

    
261
static const int8_t table0_run[132] = {
262
  0,  0,  0,  0,  0,  0,  0,  0,
263
  0,  0,  0,  0,  0,  0,  0,  0,
264
  1,  1,  1,  1,  1,  1,  1,  1,
265
  1,  1,  1,  2,  2,  2,  2,  2,
266
  2,  2,  2,  3,  3,  3,  3,  3,
267
  3,  3,  4,  4,  4,  4,  4,  5,
268
  5,  5,  5,  6,  6,  6,  6,  7,
269
  7,  7,  8,  8,  8,  9,  9,  9,
270
 10, 10, 10, 11, 11, 11, 12, 12,
271
 12, 13, 13, 13, 14, 14, 15, 15,
272
 16, 17, 18, 19, 20,  0,  0,  0,
273
  0,  1,  1,  1,  1,  2,  2,  2,
274
  3,  3,  3,  4,  4,  5,  5,  6,
275
  6,  7,  7,  8,  8,  9,  9, 10,
276
 10, 11, 11, 12, 12, 13, 13, 14,
277
 15, 16, 17, 18, 19, 20, 21, 22,
278
 23, 24, 25, 26,
279
};
280

    
281
/* vlc table 1, for intra chroma and P macro blocks */
282

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

    
324
static const int8_t table1_level[148] = {
325
  1,  2,  3,  4,  5,  6,  7,  8,
326
  9, 10, 11, 12, 13, 14,  1,  2,
327
  3,  4,  5,  6,  7,  8,  9,  1,
328
  2,  3,  4,  5,  1,  2,  3,  4,
329
  1,  2,  3,  4,  1,  2,  3,  4,
330
  1,  2,  3,  1,  2,  3,  1,  2,
331
  3,  1,  2,  3,  1,  2,  3,  1,
332
  2,  3,  1,  2,  3,  1,  2,  1,
333
  2,  1,  2,  1,  1,  1,  1,  1,
334
  1,  1,  1,  1,  1,  1,  1,  1,
335
  1,  1,  2,  3,  4,  5,  1,  2,
336
  3,  4,  1,  2,  3,  1,  2,  3,
337
  1,  2,  1,  2,  1,  2,  1,  2,
338
  1,  2,  1,  2,  1,  2,  1,  2,
339
  1,  2,  1,  2,  1,  2,  1,  2,
340
  1,  1,  1,  1,  1,  1,  1,  1,
341
  1,  1,  1,  1,  1,  1,  1,  1,
342
  1,  1,  1,  1,  1,  1,  1,  1,
343
  1,  1,  1,  1,
344
};
345

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

    
368
/* third vlc table */
369

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

    
420
static const int8_t table2_level[185] = {
421
  1,  2,  3,  4,  5,  6,  7,  8,
422
  9, 10, 11, 12, 13, 14, 15, 16,
423
 17, 18, 19,  1,  2,  3,  4,  5,
424
  6,  7,  8,  9, 10, 11, 12, 13,
425
 14, 15,  1,  2,  3,  4,  5,  6,
426
  7,  8,  9, 10, 11, 12,  1,  2,
427
  3,  4,  5,  6,  7,  8,  9, 10,
428
 11,  1,  2,  3,  4,  5,  6,  1,
429
  2,  3,  4,  5,  1,  2,  3,  4,
430
  1,  2,  3,  4,  1,  2,  3,  4,
431
  1,  2,  3,  4,  1,  2,  3,  1,
432
  2,  3,  1,  2,  3,  1,  2,  3,
433
  1,  2,  3,  1,  2,  3,  1,  2,
434
  1,  2,  1,  1,  1,  1,  1,  1,
435
  1,  1,  1,  1,  1,  1,  1,  1,
436
  2,  3,  4,  5,  6,  1,  2,  3,
437
  4,  5,  1,  2,  3,  4,  1,  2,
438
  3,  4,  1,  2,  3,  1,  2,  1,
439
  2,  1,  2,  1,  2,  1,  2,  1,
440
  2,  1,  2,  1,  2,  1,  2,  1,
441
  2,  1,  2,  1,  1,  1,  1,  1,
442
  1,  1,  1,  1,  1,  1,  1,  1,
443
  1,  1,  1,  1,  1,  1,  1,  1,
444
  1,
445
};
446

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

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

    
521
static const int8_t table4_level[168] = {
522
  1,  2,  3,  4,  5,  6,  7,  8,
523
  9, 10, 11, 12, 13, 14, 15, 16,
524
 17, 18, 19, 20, 21, 22, 23,  1,
525
  2,  3,  4,  5,  6,  7,  8,  9,
526
 10, 11,  1,  2,  3,  4,  5,  6,
527
  7,  8,  1,  2,  3,  4,  5,  6,
528
  7,  1,  2,  3,  4,  5,  1,  2,
529
  3,  4,  5,  1,  2,  3,  4,  1,
530
  2,  3,  4,  1,  2,  3,  1,  2,
531
  3,  1,  2,  3,  1,  2,  3,  1,
532
  2,  1,  2,  1,  2,  1,  2,  1,
533
  2,  1,  1,  1,  1,  1,  1,  1,
534
  1,  1,  1,  1,  2,  3,  4,  5,
535
  6,  7,  8,  9,  1,  2,  3,  4,
536
  5,  1,  2,  3,  4,  1,  2,  3,
537
  4,  1,  2,  3,  1,  2,  3,  1,
538
  2,  3,  1,  2,  1,  2,  1,  2,
539
  1,  2,  1,  2,  1,  2,  1,  2,
540
  1,  2,  1,  1,  1,  1,  1,  1,
541
  1,  1,  1,  1,  1,  1,  1,  1,
542
  1,  1,  1,  1,  1,  1,  1,  1,
543
};
544

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

    
569
extern const uint16_t inter_vlc[103][2];
570
extern const int8_t inter_level[102];
571
extern const int8_t inter_run[102];
572

    
573
extern const uint16_t intra_vlc[103][2];
574
extern const int8_t intra_level[102];
575
extern const int8_t intra_run[102];
576

    
577
extern const uint8_t DCtab_lum[13][2];
578
extern const uint8_t DCtab_chrom[13][2];
579

    
580
extern const uint8_t cbpy_tab[16][2];
581
extern const uint8_t mvtab[33][2];
582

    
583
extern const uint8_t intra_MCBPC_code[9];
584
extern const uint8_t intra_MCBPC_bits[9];
585

    
586
extern const uint8_t inter_MCBPC_code[28];
587
extern const uint8_t inter_MCBPC_bits[28];
588

    
589
#define NB_RL_TABLES  6
590

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

    
644
/* motion vector table 0 */
645

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

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

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

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

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

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

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

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

    
1775
/* motion vector table */
1776
typedef struct MVTable {
1777
    int n;
1778
    const uint16_t *table_mv_code;
1779
    const uint8_t *table_mv_bits;
1780
    const uint8_t *table_mvx;
1781
    const uint8_t *table_mvy;
1782
    uint16_t *table_mv_index; /* encoding: convert mv to index in table_mv */
1783
    VLC vlc;                /* decoding: vlc */
1784
} MVTable;
1785

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

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

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

    
1812
static const uint8_t wmv1_y_dc_scale_table[32]={
1813
//  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
1814
    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
1815
};
1816
static const uint8_t wmv1_c_dc_scale_table[32]={
1817
//  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
1818
    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
1819
};
1820

    
1821
static const uint8_t old_ff_y_dc_scale_table[32]={
1822
//  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
1823
    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
1824
};
1825
static const uint8_t old_ff_c_dc_scale_table[32]={
1826
//  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
1827
    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
1828
};
1829

    
1830

    
1831
#define WMV1_SCANTABLE_COUNT 4
1832

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

    
1874
static const uint8_t *wmv1_scantable[WMV1_SCANTABLE_COUNT+1]={
1875
    wmv1_scantable00,
1876
    wmv1_scantable01,
1877
    wmv1_scantable02,
1878
    wmv1_scantable03,
1879
};
1880

    
1881
static const uint8_t table_inter_intra[4][2]={
1882
    {0,1} /*Luma-Left Chroma-Left*/,
1883
    {2,2} /*Luma-Top  Chroma-Left*/,
1884
    {6,3} /*luma-Left Chroma-Top */,
1885
    {7,3} /*luma-Top  Chroma-Top */
1886
};
1887

    
1888
#define WMV2_INTER_CBP_TABLE_COUNT 4
1889

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

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

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

    
1995
static const uint32_t (*wmv2_inter_table[WMV2_INTER_CBP_TABLE_COUNT])[2]={
1996
    table_mb_non_intra2,
1997
    table_mb_non_intra3,
1998
    table_mb_non_intra4,
1999
    table_mb_non_intra,
2000
};
2001

    
2002
static const uint8_t wmv2_scantableA[64]={
2003
0x00, 0x01, 0x02, 0x08, 0x03, 0x09, 0x0A, 0x10,
2004
0x04, 0x0B, 0x11, 0x18, 0x12, 0x0C, 0x05, 0x13,
2005
0x19, 0x0D, 0x14, 0x1A, 0x1B, 0x06, 0x15, 0x1C,
2006
0x0E, 0x16, 0x1D, 0x07, 0x1E, 0x0F, 0x17, 0x1F,
2007
};
2008

    
2009
static const uint8_t wmv2_scantableB[64]={
2010
0x00, 0x08, 0x01, 0x10, 0x09, 0x18, 0x11, 0x02,
2011
0x20, 0x0A, 0x19, 0x28, 0x12, 0x30, 0x21, 0x1A,
2012
0x38, 0x29, 0x22, 0x03, 0x31, 0x39, 0x0B, 0x2A,
2013
0x13, 0x32, 0x1B, 0x3A, 0x23, 0x2B, 0x33, 0x3B,
2014
};