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