diff options
Diffstat (limited to 'apps/plugins/mpegplayer/vlc.h')
-rw-r--r-- | apps/plugins/mpegplayer/vlc.h | 429 |
1 files changed, 429 insertions, 0 deletions
diff --git a/apps/plugins/mpegplayer/vlc.h b/apps/plugins/mpegplayer/vlc.h new file mode 100644 index 0000000000..7098ee0f9b --- /dev/null +++ b/apps/plugins/mpegplayer/vlc.h | |||
@@ -0,0 +1,429 @@ | |||
1 | /* | ||
2 | * vlc.h | ||
3 | * Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org> | ||
4 | * Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca> | ||
5 | * | ||
6 | * This file is part of mpeg2dec, a free MPEG-2 video stream decoder. | ||
7 | * See http://libmpeg2.sourceforge.net/ for updates. | ||
8 | * | ||
9 | * mpeg2dec is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License as published by | ||
11 | * the Free Software Foundation; either version 2 of the License, or | ||
12 | * (at your option) any later version. | ||
13 | * | ||
14 | * mpeg2dec is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this program; if not, write to the Free Software | ||
21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
22 | */ | ||
23 | |||
24 | #define GETWORD(bit_buf,shift,bit_ptr) \ | ||
25 | do { \ | ||
26 | bit_buf |= ((bit_ptr[0] << 8) | bit_ptr[1]) << (shift); \ | ||
27 | bit_ptr += 2; \ | ||
28 | } while (0) | ||
29 | |||
30 | static inline void bitstream_init (mpeg2_decoder_t * decoder, | ||
31 | const uint8_t * start) | ||
32 | { | ||
33 | decoder->bitstream_buf = | ||
34 | (start[0] << 24) | (start[1] << 16) | (start[2] << 8) | start[3]; | ||
35 | decoder->bitstream_ptr = start + 4; | ||
36 | decoder->bitstream_bits = -16; | ||
37 | } | ||
38 | |||
39 | /* make sure that there are at least 16 valid bits in bit_buf */ | ||
40 | #define NEEDBITS(bit_buf,bits,bit_ptr) \ | ||
41 | do { \ | ||
42 | if (unlikely (bits > 0)) { \ | ||
43 | GETWORD (bit_buf, bits, bit_ptr); \ | ||
44 | bits -= 16; \ | ||
45 | } \ | ||
46 | } while (0) | ||
47 | |||
48 | /* remove num valid bits from bit_buf */ | ||
49 | #define DUMPBITS(bit_buf,bits,num) \ | ||
50 | do { \ | ||
51 | bit_buf <<= (num); \ | ||
52 | bits += (num); \ | ||
53 | } while (0) | ||
54 | |||
55 | /* take num bits from the high part of bit_buf and zero extend them */ | ||
56 | #define UBITS(bit_buf,num) (((uint32_t)(bit_buf)) >> (32 - (num))) | ||
57 | |||
58 | /* take num bits from the high part of bit_buf and sign extend them */ | ||
59 | #define SBITS(bit_buf,num) (((int32_t)(bit_buf)) >> (32 - (num))) | ||
60 | |||
61 | typedef struct { | ||
62 | uint8_t modes; | ||
63 | uint8_t len; | ||
64 | } MBtab; | ||
65 | |||
66 | typedef struct { | ||
67 | uint8_t delta; | ||
68 | uint8_t len; | ||
69 | } MVtab; | ||
70 | |||
71 | typedef struct { | ||
72 | int8_t dmv; | ||
73 | uint8_t len; | ||
74 | } DMVtab; | ||
75 | |||
76 | typedef struct { | ||
77 | uint8_t cbp; | ||
78 | uint8_t len; | ||
79 | } CBPtab; | ||
80 | |||
81 | typedef struct { | ||
82 | uint8_t size; | ||
83 | uint8_t len; | ||
84 | } DCtab; | ||
85 | |||
86 | typedef struct { | ||
87 | uint8_t run; | ||
88 | uint8_t level; | ||
89 | uint8_t len; | ||
90 | } DCTtab; | ||
91 | |||
92 | typedef struct { | ||
93 | uint8_t mba; | ||
94 | uint8_t len; | ||
95 | } MBAtab; | ||
96 | |||
97 | |||
98 | #define INTRA MACROBLOCK_INTRA | ||
99 | #define QUANT MACROBLOCK_QUANT | ||
100 | |||
101 | static const MBtab MB_I [] = { | ||
102 | {INTRA|QUANT, 2}, {INTRA, 1} | ||
103 | }; | ||
104 | |||
105 | #define MC MACROBLOCK_MOTION_FORWARD | ||
106 | #define CODED MACROBLOCK_PATTERN | ||
107 | |||
108 | static const MBtab MB_P [] = { | ||
109 | {INTRA|QUANT, 6}, {CODED|QUANT, 5}, {MC|CODED|QUANT, 5}, {INTRA, 5}, | ||
110 | {MC, 3}, {MC, 3}, {MC, 3}, {MC, 3}, | ||
111 | {CODED, 2}, {CODED, 2}, {CODED, 2}, {CODED, 2}, | ||
112 | {CODED, 2}, {CODED, 2}, {CODED, 2}, {CODED, 2}, | ||
113 | {MC|CODED, 1}, {MC|CODED, 1}, {MC|CODED, 1}, {MC|CODED, 1}, | ||
114 | {MC|CODED, 1}, {MC|CODED, 1}, {MC|CODED, 1}, {MC|CODED, 1}, | ||
115 | {MC|CODED, 1}, {MC|CODED, 1}, {MC|CODED, 1}, {MC|CODED, 1}, | ||
116 | {MC|CODED, 1}, {MC|CODED, 1}, {MC|CODED, 1}, {MC|CODED, 1} | ||
117 | }; | ||
118 | |||
119 | #define FWD MACROBLOCK_MOTION_FORWARD | ||
120 | #define BWD MACROBLOCK_MOTION_BACKWARD | ||
121 | #define INTER MACROBLOCK_MOTION_FORWARD|MACROBLOCK_MOTION_BACKWARD | ||
122 | |||
123 | static const MBtab MB_B [] = { | ||
124 | {0, 0}, {INTRA|QUANT, 6}, | ||
125 | {BWD|CODED|QUANT, 6}, {FWD|CODED|QUANT, 6}, | ||
126 | {INTER|CODED|QUANT, 5}, {INTER|CODED|QUANT, 5}, | ||
127 | {INTRA, 5}, {INTRA, 5}, | ||
128 | {FWD, 4}, {FWD, 4}, {FWD, 4}, {FWD, 4}, | ||
129 | {FWD|CODED, 4}, {FWD|CODED, 4}, {FWD|CODED, 4}, {FWD|CODED, 4}, | ||
130 | {BWD, 3}, {BWD, 3}, {BWD, 3}, {BWD, 3}, | ||
131 | {BWD, 3}, {BWD, 3}, {BWD, 3}, {BWD, 3}, | ||
132 | {BWD|CODED, 3}, {BWD|CODED, 3}, {BWD|CODED, 3}, {BWD|CODED, 3}, | ||
133 | {BWD|CODED, 3}, {BWD|CODED, 3}, {BWD|CODED, 3}, {BWD|CODED, 3}, | ||
134 | {INTER, 2}, {INTER, 2}, {INTER, 2}, {INTER, 2}, | ||
135 | {INTER, 2}, {INTER, 2}, {INTER, 2}, {INTER, 2}, | ||
136 | {INTER, 2}, {INTER, 2}, {INTER, 2}, {INTER, 2}, | ||
137 | {INTER, 2}, {INTER, 2}, {INTER, 2}, {INTER, 2}, | ||
138 | {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, | ||
139 | {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, | ||
140 | {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, | ||
141 | {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2}, {INTER|CODED, 2} | ||
142 | }; | ||
143 | |||
144 | #undef INTRA | ||
145 | #undef QUANT | ||
146 | #undef MC | ||
147 | #undef CODED | ||
148 | #undef FWD | ||
149 | #undef BWD | ||
150 | #undef INTER | ||
151 | |||
152 | |||
153 | static const MVtab MV_4 [] = { | ||
154 | { 3, 6}, { 2, 4}, { 1, 3}, { 1, 3}, { 0, 2}, { 0, 2}, { 0, 2}, { 0, 2} | ||
155 | }; | ||
156 | |||
157 | static const MVtab MV_10 [] = { | ||
158 | { 0,10}, { 0,10}, { 0,10}, { 0,10}, { 0,10}, { 0,10}, { 0,10}, { 0,10}, | ||
159 | { 0,10}, { 0,10}, { 0,10}, { 0,10}, {15,10}, {14,10}, {13,10}, {12,10}, | ||
160 | {11,10}, {10,10}, { 9, 9}, { 9, 9}, { 8, 9}, { 8, 9}, { 7, 9}, { 7, 9}, | ||
161 | { 6, 7}, { 6, 7}, { 6, 7}, { 6, 7}, { 6, 7}, { 6, 7}, { 6, 7}, { 6, 7}, | ||
162 | { 5, 7}, { 5, 7}, { 5, 7}, { 5, 7}, { 5, 7}, { 5, 7}, { 5, 7}, { 5, 7}, | ||
163 | { 4, 7}, { 4, 7}, { 4, 7}, { 4, 7}, { 4, 7}, { 4, 7}, { 4, 7}, { 4, 7} | ||
164 | }; | ||
165 | |||
166 | |||
167 | static const DMVtab DMV_2 [] = { | ||
168 | { 0, 1}, { 0, 1}, { 1, 2}, {-1, 2} | ||
169 | }; | ||
170 | |||
171 | |||
172 | static const CBPtab CBP_7 [] = { | ||
173 | {0x11, 7}, {0x12, 7}, {0x14, 7}, {0x18, 7}, | ||
174 | {0x21, 7}, {0x22, 7}, {0x24, 7}, {0x28, 7}, | ||
175 | {0x3f, 6}, {0x3f, 6}, {0x30, 6}, {0x30, 6}, | ||
176 | {0x09, 6}, {0x09, 6}, {0x06, 6}, {0x06, 6}, | ||
177 | {0x1f, 5}, {0x1f, 5}, {0x1f, 5}, {0x1f, 5}, | ||
178 | {0x10, 5}, {0x10, 5}, {0x10, 5}, {0x10, 5}, | ||
179 | {0x2f, 5}, {0x2f, 5}, {0x2f, 5}, {0x2f, 5}, | ||
180 | {0x20, 5}, {0x20, 5}, {0x20, 5}, {0x20, 5}, | ||
181 | {0x07, 5}, {0x07, 5}, {0x07, 5}, {0x07, 5}, | ||
182 | {0x0b, 5}, {0x0b, 5}, {0x0b, 5}, {0x0b, 5}, | ||
183 | {0x0d, 5}, {0x0d, 5}, {0x0d, 5}, {0x0d, 5}, | ||
184 | {0x0e, 5}, {0x0e, 5}, {0x0e, 5}, {0x0e, 5}, | ||
185 | {0x05, 5}, {0x05, 5}, {0x05, 5}, {0x05, 5}, | ||
186 | {0x0a, 5}, {0x0a, 5}, {0x0a, 5}, {0x0a, 5}, | ||
187 | {0x03, 5}, {0x03, 5}, {0x03, 5}, {0x03, 5}, | ||
188 | {0x0c, 5}, {0x0c, 5}, {0x0c, 5}, {0x0c, 5}, | ||
189 | {0x01, 4}, {0x01, 4}, {0x01, 4}, {0x01, 4}, | ||
190 | {0x01, 4}, {0x01, 4}, {0x01, 4}, {0x01, 4}, | ||
191 | {0x02, 4}, {0x02, 4}, {0x02, 4}, {0x02, 4}, | ||
192 | {0x02, 4}, {0x02, 4}, {0x02, 4}, {0x02, 4}, | ||
193 | {0x04, 4}, {0x04, 4}, {0x04, 4}, {0x04, 4}, | ||
194 | {0x04, 4}, {0x04, 4}, {0x04, 4}, {0x04, 4}, | ||
195 | {0x08, 4}, {0x08, 4}, {0x08, 4}, {0x08, 4}, | ||
196 | {0x08, 4}, {0x08, 4}, {0x08, 4}, {0x08, 4}, | ||
197 | {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, | ||
198 | {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, | ||
199 | {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, | ||
200 | {0x0f, 3}, {0x0f, 3}, {0x0f, 3}, {0x0f, 3} | ||
201 | }; | ||
202 | |||
203 | static const CBPtab CBP_9 [] = { | ||
204 | {0, 0}, {0x00, 9}, {0x39, 9}, {0x36, 9}, | ||
205 | {0x37, 9}, {0x3b, 9}, {0x3d, 9}, {0x3e, 9}, | ||
206 | {0x17, 8}, {0x17, 8}, {0x1b, 8}, {0x1b, 8}, | ||
207 | {0x1d, 8}, {0x1d, 8}, {0x1e, 8}, {0x1e, 8}, | ||
208 | {0x27, 8}, {0x27, 8}, {0x2b, 8}, {0x2b, 8}, | ||
209 | {0x2d, 8}, {0x2d, 8}, {0x2e, 8}, {0x2e, 8}, | ||
210 | {0x19, 8}, {0x19, 8}, {0x16, 8}, {0x16, 8}, | ||
211 | {0x29, 8}, {0x29, 8}, {0x26, 8}, {0x26, 8}, | ||
212 | {0x35, 8}, {0x35, 8}, {0x3a, 8}, {0x3a, 8}, | ||
213 | {0x33, 8}, {0x33, 8}, {0x3c, 8}, {0x3c, 8}, | ||
214 | {0x15, 8}, {0x15, 8}, {0x1a, 8}, {0x1a, 8}, | ||
215 | {0x13, 8}, {0x13, 8}, {0x1c, 8}, {0x1c, 8}, | ||
216 | {0x25, 8}, {0x25, 8}, {0x2a, 8}, {0x2a, 8}, | ||
217 | {0x23, 8}, {0x23, 8}, {0x2c, 8}, {0x2c, 8}, | ||
218 | {0x31, 8}, {0x31, 8}, {0x32, 8}, {0x32, 8}, | ||
219 | {0x34, 8}, {0x34, 8}, {0x38, 8}, {0x38, 8} | ||
220 | }; | ||
221 | |||
222 | |||
223 | static const DCtab DC_lum_5 [] = { | ||
224 | {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, | ||
225 | {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, | ||
226 | {0, 3}, {0, 3}, {0, 3}, {0, 3}, {3, 3}, {3, 3}, {3, 3}, {3, 3}, | ||
227 | {4, 3}, {4, 3}, {4, 3}, {4, 3}, {5, 4}, {5, 4}, {6, 5} | ||
228 | }; | ||
229 | |||
230 | static const DCtab DC_chrom_5 [] = { | ||
231 | {0, 2}, {0, 2}, {0, 2}, {0, 2}, {0, 2}, {0, 2}, {0, 2}, {0, 2}, | ||
232 | {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, | ||
233 | {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, | ||
234 | {3, 3}, {3, 3}, {3, 3}, {3, 3}, {4, 4}, {4, 4}, {5, 5} | ||
235 | }; | ||
236 | |||
237 | static const DCtab DC_long [] = { | ||
238 | {6, 5}, {6, 5}, {6, 5}, {6, 5}, {6, 5}, {6, 5}, { 6, 5}, { 6, 5}, | ||
239 | {6, 5}, {6, 5}, {6, 5}, {6, 5}, {6, 5}, {6, 5}, { 6, 5}, { 6, 5}, | ||
240 | {7, 6}, {7, 6}, {7, 6}, {7, 6}, {7, 6}, {7, 6}, { 7, 6}, { 7, 6}, | ||
241 | {8, 7}, {8, 7}, {8, 7}, {8, 7}, {9, 8}, {9, 8}, {10, 9}, {11, 9} | ||
242 | }; | ||
243 | |||
244 | |||
245 | static const DCTtab DCT_16 [] = { | ||
246 | {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, | ||
247 | {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, | ||
248 | {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, | ||
249 | {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, {129, 0, 0}, | ||
250 | { 2,18, 0}, { 2,17, 0}, { 2,16, 0}, { 2,15, 0}, | ||
251 | { 7, 3, 0}, { 17, 2, 0}, { 16, 2, 0}, { 15, 2, 0}, | ||
252 | { 14, 2, 0}, { 13, 2, 0}, { 12, 2, 0}, { 32, 1, 0}, | ||
253 | { 31, 1, 0}, { 30, 1, 0}, { 29, 1, 0}, { 28, 1, 0} | ||
254 | }; | ||
255 | |||
256 | static const DCTtab DCT_15 [] = { | ||
257 | { 1,40,15}, { 1,39,15}, { 1,38,15}, { 1,37,15}, | ||
258 | { 1,36,15}, { 1,35,15}, { 1,34,15}, { 1,33,15}, | ||
259 | { 1,32,15}, { 2,14,15}, { 2,13,15}, { 2,12,15}, | ||
260 | { 2,11,15}, { 2,10,15}, { 2, 9,15}, { 2, 8,15}, | ||
261 | { 1,31,14}, { 1,31,14}, { 1,30,14}, { 1,30,14}, | ||
262 | { 1,29,14}, { 1,29,14}, { 1,28,14}, { 1,28,14}, | ||
263 | { 1,27,14}, { 1,27,14}, { 1,26,14}, { 1,26,14}, | ||
264 | { 1,25,14}, { 1,25,14}, { 1,24,14}, { 1,24,14}, | ||
265 | { 1,23,14}, { 1,23,14}, { 1,22,14}, { 1,22,14}, | ||
266 | { 1,21,14}, { 1,21,14}, { 1,20,14}, { 1,20,14}, | ||
267 | { 1,19,14}, { 1,19,14}, { 1,18,14}, { 1,18,14}, | ||
268 | { 1,17,14}, { 1,17,14}, { 1,16,14}, { 1,16,14} | ||
269 | }; | ||
270 | |||
271 | static const DCTtab DCT_13 [] = { | ||
272 | { 11, 2,13}, { 10, 2,13}, { 6, 3,13}, { 4, 4,13}, | ||
273 | { 3, 5,13}, { 2, 7,13}, { 2, 6,13}, { 1,15,13}, | ||
274 | { 1,14,13}, { 1,13,13}, { 1,12,13}, { 27, 1,13}, | ||
275 | { 26, 1,13}, { 25, 1,13}, { 24, 1,13}, { 23, 1,13}, | ||
276 | { 1,11,12}, { 1,11,12}, { 9, 2,12}, { 9, 2,12}, | ||
277 | { 5, 3,12}, { 5, 3,12}, { 1,10,12}, { 1,10,12}, | ||
278 | { 3, 4,12}, { 3, 4,12}, { 8, 2,12}, { 8, 2,12}, | ||
279 | { 22, 1,12}, { 22, 1,12}, { 21, 1,12}, { 21, 1,12}, | ||
280 | { 1, 9,12}, { 1, 9,12}, { 20, 1,12}, { 20, 1,12}, | ||
281 | { 19, 1,12}, { 19, 1,12}, { 2, 5,12}, { 2, 5,12}, | ||
282 | { 4, 3,12}, { 4, 3,12}, { 1, 8,12}, { 1, 8,12}, | ||
283 | { 7, 2,12}, { 7, 2,12}, { 18, 1,12}, { 18, 1,12} | ||
284 | }; | ||
285 | |||
286 | static const DCTtab DCT_B14_10 [] = { | ||
287 | { 17, 1,10}, { 6, 2,10}, { 1, 7,10}, { 3, 3,10}, | ||
288 | { 2, 4,10}, { 16, 1,10}, { 15, 1,10}, { 5, 2,10} | ||
289 | }; | ||
290 | |||
291 | static const DCTtab DCT_B14_8 [] = { | ||
292 | { 65, 0, 6}, { 65, 0, 6}, { 65, 0, 6}, { 65, 0, 6}, | ||
293 | { 3, 2, 7}, { 3, 2, 7}, { 10, 1, 7}, { 10, 1, 7}, | ||
294 | { 1, 4, 7}, { 1, 4, 7}, { 9, 1, 7}, { 9, 1, 7}, | ||
295 | { 8, 1, 6}, { 8, 1, 6}, { 8, 1, 6}, { 8, 1, 6}, | ||
296 | { 7, 1, 6}, { 7, 1, 6}, { 7, 1, 6}, { 7, 1, 6}, | ||
297 | { 2, 2, 6}, { 2, 2, 6}, { 2, 2, 6}, { 2, 2, 6}, | ||
298 | { 6, 1, 6}, { 6, 1, 6}, { 6, 1, 6}, { 6, 1, 6}, | ||
299 | { 14, 1, 8}, { 1, 6, 8}, { 13, 1, 8}, { 12, 1, 8}, | ||
300 | { 4, 2, 8}, { 2, 3, 8}, { 1, 5, 8}, { 11, 1, 8} | ||
301 | }; | ||
302 | |||
303 | static const DCTtab DCT_B14AC_5 [] = { | ||
304 | { 1, 3, 5}, { 5, 1, 5}, { 4, 1, 5}, | ||
305 | { 1, 2, 4}, { 1, 2, 4}, { 3, 1, 4}, { 3, 1, 4}, | ||
306 | { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, | ||
307 | {129, 0, 2}, {129, 0, 2}, {129, 0, 2}, {129, 0, 2}, | ||
308 | {129, 0, 2}, {129, 0, 2}, {129, 0, 2}, {129, 0, 2}, | ||
309 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
310 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2} | ||
311 | }; | ||
312 | |||
313 | static const DCTtab DCT_B14DC_5 [] = { | ||
314 | { 1, 3, 5}, { 5, 1, 5}, { 4, 1, 5}, | ||
315 | { 1, 2, 4}, { 1, 2, 4}, { 3, 1, 4}, { 3, 1, 4}, | ||
316 | { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, | ||
317 | { 1, 1, 1}, { 1, 1, 1}, { 1, 1, 1}, { 1, 1, 1}, | ||
318 | { 1, 1, 1}, { 1, 1, 1}, { 1, 1, 1}, { 1, 1, 1}, | ||
319 | { 1, 1, 1}, { 1, 1, 1}, { 1, 1, 1}, { 1, 1, 1}, | ||
320 | { 1, 1, 1}, { 1, 1, 1}, { 1, 1, 1}, { 1, 1, 1} | ||
321 | }; | ||
322 | |||
323 | static const DCTtab DCT_B15_10 [] = { | ||
324 | { 6, 2, 9}, { 6, 2, 9}, { 15, 1, 9}, { 15, 1, 9}, | ||
325 | { 3, 4,10}, { 17, 1,10}, { 16, 1, 9}, { 16, 1, 9} | ||
326 | }; | ||
327 | |||
328 | static const DCTtab DCT_B15_8 [] = { | ||
329 | { 65, 0, 6}, { 65, 0, 6}, { 65, 0, 6}, { 65, 0, 6}, | ||
330 | { 8, 1, 7}, { 8, 1, 7}, { 9, 1, 7}, { 9, 1, 7}, | ||
331 | { 7, 1, 7}, { 7, 1, 7}, { 3, 2, 7}, { 3, 2, 7}, | ||
332 | { 1, 7, 6}, { 1, 7, 6}, { 1, 7, 6}, { 1, 7, 6}, | ||
333 | { 1, 6, 6}, { 1, 6, 6}, { 1, 6, 6}, { 1, 6, 6}, | ||
334 | { 5, 1, 6}, { 5, 1, 6}, { 5, 1, 6}, { 5, 1, 6}, | ||
335 | { 6, 1, 6}, { 6, 1, 6}, { 6, 1, 6}, { 6, 1, 6}, | ||
336 | { 2, 5, 8}, { 12, 1, 8}, { 1,11, 8}, { 1,10, 8}, | ||
337 | { 14, 1, 8}, { 13, 1, 8}, { 4, 2, 8}, { 2, 4, 8}, | ||
338 | { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5}, | ||
339 | { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5}, | ||
340 | { 2, 2, 5}, { 2, 2, 5}, { 2, 2, 5}, { 2, 2, 5}, | ||
341 | { 2, 2, 5}, { 2, 2, 5}, { 2, 2, 5}, { 2, 2, 5}, | ||
342 | { 4, 1, 5}, { 4, 1, 5}, { 4, 1, 5}, { 4, 1, 5}, | ||
343 | { 4, 1, 5}, { 4, 1, 5}, { 4, 1, 5}, { 4, 1, 5}, | ||
344 | { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, | ||
345 | { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, | ||
346 | { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, | ||
347 | { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, | ||
348 | { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, | ||
349 | { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, | ||
350 | { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, | ||
351 | { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, { 2, 1, 3}, | ||
352 | {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, | ||
353 | {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, | ||
354 | {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, | ||
355 | {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, {129, 0, 4}, | ||
356 | { 1, 3, 4}, { 1, 3, 4}, { 1, 3, 4}, { 1, 3, 4}, | ||
357 | { 1, 3, 4}, { 1, 3, 4}, { 1, 3, 4}, { 1, 3, 4}, | ||
358 | { 1, 3, 4}, { 1, 3, 4}, { 1, 3, 4}, { 1, 3, 4}, | ||
359 | { 1, 3, 4}, { 1, 3, 4}, { 1, 3, 4}, { 1, 3, 4}, | ||
360 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
361 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
362 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
363 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
364 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
365 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
366 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
367 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
368 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
369 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
370 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
371 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
372 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
373 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
374 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
375 | { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, { 1, 1, 2}, | ||
376 | { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, | ||
377 | { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, | ||
378 | { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, | ||
379 | { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, | ||
380 | { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, | ||
381 | { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, | ||
382 | { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, | ||
383 | { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, { 1, 2, 3}, | ||
384 | { 1, 4, 5}, { 1, 4, 5}, { 1, 4, 5}, { 1, 4, 5}, | ||
385 | { 1, 4, 5}, { 1, 4, 5}, { 1, 4, 5}, { 1, 4, 5}, | ||
386 | { 1, 5, 5}, { 1, 5, 5}, { 1, 5, 5}, { 1, 5, 5}, | ||
387 | { 1, 5, 5}, { 1, 5, 5}, { 1, 5, 5}, { 1, 5, 5}, | ||
388 | { 10, 1, 7}, { 10, 1, 7}, { 2, 3, 7}, { 2, 3, 7}, | ||
389 | { 11, 1, 7}, { 11, 1, 7}, { 1, 8, 7}, { 1, 8, 7}, | ||
390 | { 1, 9, 7}, { 1, 9, 7}, { 1,12, 8}, { 1,13, 8}, | ||
391 | { 3, 3, 8}, { 5, 2, 8}, { 1,14, 8}, { 1,15, 8} | ||
392 | }; | ||
393 | |||
394 | |||
395 | static const MBAtab MBA_5 [] = { | ||
396 | {6, 5}, {5, 5}, {4, 4}, {4, 4}, {3, 4}, {3, 4}, | ||
397 | {2, 3}, {2, 3}, {2, 3}, {2, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, | ||
398 | {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, | ||
399 | {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1} | ||
400 | }; | ||
401 | |||
402 | static const MBAtab MBA_11 [] = { | ||
403 | {32, 11}, {31, 11}, {30, 11}, {29, 11}, | ||
404 | {28, 11}, {27, 11}, {26, 11}, {25, 11}, | ||
405 | {24, 11}, {23, 11}, {22, 11}, {21, 11}, | ||
406 | {20, 10}, {20, 10}, {19, 10}, {19, 10}, | ||
407 | {18, 10}, {18, 10}, {17, 10}, {17, 10}, | ||
408 | {16, 10}, {16, 10}, {15, 10}, {15, 10}, | ||
409 | {14, 8}, {14, 8}, {14, 8}, {14, 8}, | ||
410 | {14, 8}, {14, 8}, {14, 8}, {14, 8}, | ||
411 | {13, 8}, {13, 8}, {13, 8}, {13, 8}, | ||
412 | {13, 8}, {13, 8}, {13, 8}, {13, 8}, | ||
413 | {12, 8}, {12, 8}, {12, 8}, {12, 8}, | ||
414 | {12, 8}, {12, 8}, {12, 8}, {12, 8}, | ||
415 | {11, 8}, {11, 8}, {11, 8}, {11, 8}, | ||
416 | {11, 8}, {11, 8}, {11, 8}, {11, 8}, | ||
417 | {10, 8}, {10, 8}, {10, 8}, {10, 8}, | ||
418 | {10, 8}, {10, 8}, {10, 8}, {10, 8}, | ||
419 | { 9, 8}, { 9, 8}, { 9, 8}, { 9, 8}, | ||
420 | { 9, 8}, { 9, 8}, { 9, 8}, { 9, 8}, | ||
421 | { 8, 7}, { 8, 7}, { 8, 7}, { 8, 7}, | ||
422 | { 8, 7}, { 8, 7}, { 8, 7}, { 8, 7}, | ||
423 | { 8, 7}, { 8, 7}, { 8, 7}, { 8, 7}, | ||
424 | { 8, 7}, { 8, 7}, { 8, 7}, { 8, 7}, | ||
425 | { 7, 7}, { 7, 7}, { 7, 7}, { 7, 7}, | ||
426 | { 7, 7}, { 7, 7}, { 7, 7}, { 7, 7}, | ||
427 | { 7, 7}, { 7, 7}, { 7, 7}, { 7, 7}, | ||
428 | { 7, 7}, { 7, 7}, { 7, 7}, { 7, 7} | ||
429 | }; | ||