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