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