1 /*****************************************************************************
3 *****************************************************************************
4 * Copyright (C) 2003 Laurent Aimar <fenrir@via.ecp.fr>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
19 *****************************************************************************/
23 #define MKVLC( a, b ) { a, b }
24 const vlc_t x264_coeff0_token[5] =
26 MKVLC( 0x1, 1 ), /* str=1 */
27 MKVLC( 0x3, 2 ), /* str=11 */
28 MKVLC( 0xf, 4 ), /* str=1111 */
29 MKVLC( 0x3, 6 ), /* str=000011 */
30 MKVLC( 0x1, 2 ) /* str=01 */
33 const vlc_t x264_coeff_token[5][16*4] =
37 MKVLC( 0x5, 6 ), /* str=000101 */
38 MKVLC( 0x1, 2 ), /* str=01 */
39 MKVLC( 0x0, 0 ), /* str= */
40 MKVLC( 0x0, 0 ), /* str= */
42 MKVLC( 0x7, 8 ), /* str=00000111 */
43 MKVLC( 0x4, 6 ), /* str=000100 */
44 MKVLC( 0x1, 3 ), /* str=001 */
45 MKVLC( 0x0, 0 ), /* str= */
47 MKVLC( 0x7, 9 ), /* str=000000111 */
48 MKVLC( 0x6, 8 ), /* str=00000110 */
49 MKVLC( 0x5, 7 ), /* str=0000101 */
50 MKVLC( 0x3, 5 ), /* str=00011 */
52 MKVLC( 0x7, 10 ), /* str=0000000111 */
53 MKVLC( 0x6, 9 ), /* str=000000110 */
54 MKVLC( 0x5, 8 ), /* str=00000101 */
55 MKVLC( 0x3, 6 ), /* str=000011 */
57 MKVLC( 0x7, 11 ), /* str=00000000111 */
58 MKVLC( 0x6, 10 ), /* str=0000000110 */
59 MKVLC( 0x5, 9 ), /* str=000000101 */
60 MKVLC( 0x4, 7 ), /* str=0000100 */
62 MKVLC( 0xf, 13 ), /* str=0000000001111 */
63 MKVLC( 0x6, 11 ), /* str=00000000110 */
64 MKVLC( 0x5, 10 ), /* str=0000000101 */
65 MKVLC( 0x4, 8 ), /* str=00000100 */
67 MKVLC( 0xb, 13 ), /* str=0000000001011 */
68 MKVLC( 0xe, 13 ), /* str=0000000001110 */
69 MKVLC( 0x5, 11 ), /* str=00000000101 */
70 MKVLC( 0x4, 9 ), /* str=000000100 */
72 MKVLC( 0x8, 13 ), /* str=0000000001000 */
73 MKVLC( 0xa, 13 ), /* str=0000000001010 */
74 MKVLC( 0xd, 13 ), /* str=0000000001101 */
75 MKVLC( 0x4, 10 ), /* str=0000000100 */
77 MKVLC( 0xf, 14 ), /* str=00000000001111 */
78 MKVLC( 0xe, 14 ), /* str=00000000001110 */
79 MKVLC( 0x9, 13 ), /* str=0000000001001 */
80 MKVLC( 0x4, 11 ), /* str=00000000100 */
82 MKVLC( 0xb, 14 ), /* str=00000000001011 */
83 MKVLC( 0xa, 14 ), /* str=00000000001010 */
84 MKVLC( 0xd, 14 ), /* str=00000000001101 */
85 MKVLC( 0xc, 13 ), /* str=0000000001100 */
87 MKVLC( 0xf, 15 ), /* str=000000000001111 */
88 MKVLC( 0xe, 15 ), /* str=000000000001110 */
89 MKVLC( 0x9, 14 ), /* str=00000000001001 */
90 MKVLC( 0xc, 14 ), /* str=00000000001100 */
92 MKVLC( 0xb, 15 ), /* str=000000000001011 */
93 MKVLC( 0xa, 15 ), /* str=000000000001010 */
94 MKVLC( 0xd, 15 ), /* str=000000000001101 */
95 MKVLC( 0x8, 14 ), /* str=00000000001000 */
97 MKVLC( 0xf, 16 ), /* str=0000000000001111 */
98 MKVLC( 0x1, 15 ), /* str=000000000000001 */
99 MKVLC( 0x9, 15 ), /* str=000000000001001 */
100 MKVLC( 0xc, 15 ), /* str=000000000001100 */
102 MKVLC( 0xb, 16 ), /* str=0000000000001011 */
103 MKVLC( 0xe, 16 ), /* str=0000000000001110 */
104 MKVLC( 0xd, 16 ), /* str=0000000000001101 */
105 MKVLC( 0x8, 15 ), /* str=000000000001000 */
107 MKVLC( 0x7, 16 ), /* str=0000000000000111 */
108 MKVLC( 0xa, 16 ), /* str=0000000000001010 */
109 MKVLC( 0x9, 16 ), /* str=0000000000001001 */
110 MKVLC( 0xc, 16 ), /* str=0000000000001100 */
112 MKVLC( 0x4, 16 ), /* str=0000000000000100 */
113 MKVLC( 0x6, 16 ), /* str=0000000000000110 */
114 MKVLC( 0x5, 16 ), /* str=0000000000000101 */
115 MKVLC( 0x8, 16 ), /* str=0000000000001000 */
120 MKVLC( 0xb, 6 ), /* str=001011 */
121 MKVLC( 0x2, 2 ), /* str=10 */
122 MKVLC( 0x0, 0 ), /* str= */
123 MKVLC( 0x0, 0 ), /* str= */
125 MKVLC( 0x7, 6 ), /* str=000111 */
126 MKVLC( 0x7, 5 ), /* str=00111 */
127 MKVLC( 0x3, 3 ), /* str=011 */
128 MKVLC( 0x0, 0 ), /* str= */
130 MKVLC( 0x7, 7 ), /* str=0000111 */
131 MKVLC( 0xa, 6 ), /* str=001010 */
132 MKVLC( 0x9, 6 ), /* str=001001 */
133 MKVLC( 0x5, 4 ), /* str=0101 */
135 MKVLC( 0x7, 8 ), /* str=00000111 */
136 MKVLC( 0x6, 6 ), /* str=000110 */
137 MKVLC( 0x5, 6 ), /* str=000101 */
138 MKVLC( 0x4, 4 ), /* str=0100 */
140 MKVLC( 0x4, 8 ), /* str=00000100 */
141 MKVLC( 0x6, 7 ), /* str=0000110 */
142 MKVLC( 0x5, 7 ), /* str=0000101 */
143 MKVLC( 0x6, 5 ), /* str=00110 */
145 MKVLC( 0x7, 9 ), /* str=000000111 */
146 MKVLC( 0x6, 8 ), /* str=00000110 */
147 MKVLC( 0x5, 8 ), /* str=00000101 */
148 MKVLC( 0x8, 6 ), /* str=001000 */
150 MKVLC( 0xf, 11 ), /* str=00000001111 */
151 MKVLC( 0x6, 9 ), /* str=000000110 */
152 MKVLC( 0x5, 9 ), /* str=000000101 */
153 MKVLC( 0x4, 6 ), /* str=000100 */
155 MKVLC( 0xb, 11 ), /* str=00000001011 */
156 MKVLC( 0xe, 11 ), /* str=00000001110 */
157 MKVLC( 0xd, 11 ), /* str=00000001101 */
158 MKVLC( 0x4, 7 ), /* str=0000100 */
160 MKVLC( 0xf, 12 ), /* str=000000001111 */
161 MKVLC( 0xa, 11 ), /* str=00000001010 */
162 MKVLC( 0x9, 11 ), /* str=00000001001 */
163 MKVLC( 0x4, 9 ), /* str=000000100 */
165 MKVLC( 0xb, 12 ), /* str=000000001011 */
166 MKVLC( 0xe, 12 ), /* str=000000001110 */
167 MKVLC( 0xd, 12 ), /* str=000000001101 */
168 MKVLC( 0xc, 11 ), /* str=00000001100 */
170 MKVLC( 0x8, 12 ), /* str=000000001000 */
171 MKVLC( 0xa, 12 ), /* str=000000001010 */
172 MKVLC( 0x9, 12 ), /* str=000000001001 */
173 MKVLC( 0x8, 11 ), /* str=00000001000 */
175 MKVLC( 0xf, 13 ), /* str=0000000001111 */
176 MKVLC( 0xe, 13 ), /* str=0000000001110 */
177 MKVLC( 0xd, 13 ), /* str=0000000001101 */
178 MKVLC( 0xc, 12 ), /* str=000000001100 */
180 MKVLC( 0xb, 13 ), /* str=0000000001011 */
181 MKVLC( 0xa, 13 ), /* str=0000000001010 */
182 MKVLC( 0x9, 13 ), /* str=0000000001001 */
183 MKVLC( 0xc, 13 ), /* str=0000000001100 */
185 MKVLC( 0x7, 13 ), /* str=0000000000111 */
186 MKVLC( 0xb, 14 ), /* str=00000000001011 */
187 MKVLC( 0x6, 13 ), /* str=0000000000110 */
188 MKVLC( 0x8, 13 ), /* str=0000000001000 */
190 MKVLC( 0x9, 14 ), /* str=00000000001001 */
191 MKVLC( 0x8, 14 ), /* str=00000000001000 */
192 MKVLC( 0xa, 14 ), /* str=00000000001010 */
193 MKVLC( 0x1, 13 ), /* str=0000000000001 */
195 MKVLC( 0x7, 14 ), /* str=00000000000111 */
196 MKVLC( 0x6, 14 ), /* str=00000000000110 */
197 MKVLC( 0x5, 14 ), /* str=00000000000101 */
198 MKVLC( 0x4, 14 ), /* str=00000000000100 */
202 MKVLC( 0xf, 6 ), /* str=001111 */
203 MKVLC( 0xe, 4 ), /* str=1110 */
204 MKVLC( 0x0, 0 ), /* str= */
205 MKVLC( 0x0, 0 ), /* str= */
207 MKVLC( 0xb, 6 ), /* str=001011 */
208 MKVLC( 0xf, 5 ), /* str=01111 */
209 MKVLC( 0xd, 4 ), /* str=1101 */
210 MKVLC( 0x0, 0 ), /* str= */
212 MKVLC( 0x8, 6 ), /* str=001000 */
213 MKVLC( 0xc, 5 ), /* str=01100 */
214 MKVLC( 0xe, 5 ), /* str=01110 */
215 MKVLC( 0xc, 4 ), /* str=1100 */
217 MKVLC( 0xf, 7 ), /* str=0001111 */
218 MKVLC( 0xa, 5 ), /* str=01010 */
219 MKVLC( 0xb, 5 ), /* str=01011 */
220 MKVLC( 0xb, 4 ), /* str=1011 */
222 MKVLC( 0xb, 7 ), /* str=0001011 */
223 MKVLC( 0x8, 5 ), /* str=01000 */
224 MKVLC( 0x9, 5 ), /* str=01001 */
225 MKVLC( 0xa, 4 ), /* str=1010 */
227 MKVLC( 0x9, 7 ), /* str=0001001 */
228 MKVLC( 0xe, 6 ), /* str=001110 */
229 MKVLC( 0xd, 6 ), /* str=001101 */
230 MKVLC( 0x9, 4 ), /* str=1001 */
232 MKVLC( 0x8, 7 ), /* str=0001000 */
233 MKVLC( 0xa, 6 ), /* str=001010 */
234 MKVLC( 0x9, 6 ), /* str=001001 */
235 MKVLC( 0x8, 4 ), /* str=1000 */
237 MKVLC( 0xf, 8 ), /* str=00001111 */
238 MKVLC( 0xe, 7 ), /* str=0001110 */
239 MKVLC( 0xd, 7 ), /* str=0001101 */
240 MKVLC( 0xd, 5 ), /* str=01101 */
242 MKVLC( 0xb, 8 ), /* str=00001011 */
243 MKVLC( 0xe, 8 ), /* str=00001110 */
244 MKVLC( 0xa, 7 ), /* str=0001010 */
245 MKVLC( 0xc, 6 ), /* str=001100 */
247 MKVLC( 0xf, 9 ), /* str=000001111 */
248 MKVLC( 0xa, 8 ), /* str=00001010 */
249 MKVLC( 0xd, 8 ), /* str=00001101 */
250 MKVLC( 0xc, 7 ), /* str=0001100 */
252 MKVLC( 0xb, 9 ), /* str=000001011 */
253 MKVLC( 0xe, 9 ), /* str=000001110 */
254 MKVLC( 0x9, 8 ), /* str=00001001 */
255 MKVLC( 0xc, 8 ), /* str=00001100 */
257 MKVLC( 0x8, 9 ), /* str=000001000 */
258 MKVLC( 0xa, 9 ), /* str=000001010 */
259 MKVLC( 0xd, 9 ), /* str=000001101 */
260 MKVLC( 0x8, 8 ), /* str=00001000 */
262 MKVLC( 0xd, 10 ), /* str=0000001101 */
263 MKVLC( 0x7, 9 ), /* str=000000111 */
264 MKVLC( 0x9, 9 ), /* str=000001001 */
265 MKVLC( 0xc, 9 ), /* str=000001100 */
267 MKVLC( 0x9, 10 ), /* str=0000001001 */
268 MKVLC( 0xc, 10 ), /* str=0000001100 */
269 MKVLC( 0xb, 10 ), /* str=0000001011 */
270 MKVLC( 0xa, 10 ), /* str=0000001010 */
272 MKVLC( 0x5, 10 ), /* str=0000000101 */
273 MKVLC( 0x8, 10 ), /* str=0000001000 */
274 MKVLC( 0x7, 10 ), /* str=0000000111 */
275 MKVLC( 0x6, 10 ), /* str=0000000110 */
277 MKVLC( 0x1, 10 ), /* str=0000000001 */
278 MKVLC( 0x4, 10 ), /* str=0000000100 */
279 MKVLC( 0x3, 10 ), /* str=0000000011 */
280 MKVLC( 0x2, 10 ), /* str=0000000010 */
285 MKVLC( 0x0, 6 ), /* str=000000 */
286 MKVLC( 0x1, 6 ), /* str=000001 */
287 MKVLC( 0x0, 0 ), /* str= */
288 MKVLC( 0x0, 0 ), /* str= */
290 MKVLC( 0x4, 6 ), /* str=000100 */
291 MKVLC( 0x5, 6 ), /* str=000101 */
292 MKVLC( 0x6, 6 ), /* str=000110 */
293 MKVLC( 0x0, 0 ), /* str= */
295 MKVLC( 0x8, 6 ), /* str=001000 */
296 MKVLC( 0x9, 6 ), /* str=001001 */
297 MKVLC( 0xa, 6 ), /* str=001010 */
298 MKVLC( 0xb, 6 ), /* str=001011 */
300 MKVLC( 0xc, 6 ), /* str=001100 */
301 MKVLC( 0xd, 6 ), /* str=001101 */
302 MKVLC( 0xe, 6 ), /* str=001110 */
303 MKVLC( 0xf, 6 ), /* str=001111 */
305 MKVLC( 0x10, 6 ), /* str=010000 */
306 MKVLC( 0x11, 6 ), /* str=010001 */
307 MKVLC( 0x12, 6 ), /* str=010010 */
308 MKVLC( 0x13, 6 ), /* str=010011 */
310 MKVLC( 0x14, 6 ), /* str=010100 */
311 MKVLC( 0x15, 6 ), /* str=010101 */
312 MKVLC( 0x16, 6 ), /* str=010110 */
313 MKVLC( 0x17, 6 ), /* str=010111 */
315 MKVLC( 0x18, 6 ), /* str=011000 */
316 MKVLC( 0x19, 6 ), /* str=011001 */
317 MKVLC( 0x1a, 6 ), /* str=011010 */
318 MKVLC( 0x1b, 6 ), /* str=011011 */
320 MKVLC( 0x1c, 6 ), /* str=011100 */
321 MKVLC( 0x1d, 6 ), /* str=011101 */
322 MKVLC( 0x1e, 6 ), /* str=011110 */
323 MKVLC( 0x1f, 6 ), /* str=011111 */
325 MKVLC( 0x20, 6 ), /* str=100000 */
326 MKVLC( 0x21, 6 ), /* str=100001 */
327 MKVLC( 0x22, 6 ), /* str=100010 */
328 MKVLC( 0x23, 6 ), /* str=100011 */
330 MKVLC( 0x24, 6 ), /* str=100100 */
331 MKVLC( 0x25, 6 ), /* str=100101 */
332 MKVLC( 0x26, 6 ), /* str=100110 */
333 MKVLC( 0x27, 6 ), /* str=100111 */
335 MKVLC( 0x28, 6 ), /* str=101000 */
336 MKVLC( 0x29, 6 ), /* str=101001 */
337 MKVLC( 0x2a, 6 ), /* str=101010 */
338 MKVLC( 0x2b, 6 ), /* str=101011 */
340 MKVLC( 0x2c, 6 ), /* str=101100 */
341 MKVLC( 0x2d, 6 ), /* str=101101 */
342 MKVLC( 0x2e, 6 ), /* str=101110 */
343 MKVLC( 0x2f, 6 ), /* str=101111 */
345 MKVLC( 0x30, 6 ), /* str=110000 */
346 MKVLC( 0x31, 6 ), /* str=110001 */
347 MKVLC( 0x32, 6 ), /* str=110010 */
348 MKVLC( 0x33, 6 ), /* str=110011 */
350 MKVLC( 0x34, 6 ), /* str=110100 */
351 MKVLC( 0x35, 6 ), /* str=110101 */
352 MKVLC( 0x36, 6 ), /* str=110110 */
353 MKVLC( 0x37, 6 ), /* str=110111 */
355 MKVLC( 0x38, 6 ), /* str=111000 */
356 MKVLC( 0x39, 6 ), /* str=111001 */
357 MKVLC( 0x3a, 6 ), /* str=111010 */
358 MKVLC( 0x3b, 6 ), /* str=111011 */
360 MKVLC( 0x3c, 6 ), /* str=111100 */
361 MKVLC( 0x3d, 6 ), /* str=111101 */
362 MKVLC( 0x3e, 6 ), /* str=111110 */
363 MKVLC( 0x3f, 6 ), /* str=111111 */
368 MKVLC( 0x7, 6 ), /* str=000111 */
369 MKVLC( 0x1, 1 ), /* str=1 */
370 MKVLC( 0x0, 0 ), /* str= */
371 MKVLC( 0x0, 0 ), /* str= */
373 MKVLC( 0x4, 6 ), /* str=000100 */
374 MKVLC( 0x6, 6 ), /* str=000110 */
375 MKVLC( 0x1, 3 ), /* str=001 */
376 MKVLC( 0x0, 0 ), /* str= */
378 MKVLC( 0x3, 6 ), /* str=000011 */
379 MKVLC( 0x3, 7 ), /* str=0000011 */
380 MKVLC( 0x2, 7 ), /* str=0000010 */
381 MKVLC( 0x5, 6 ), /* str=000101 */
383 MKVLC( 0x2, 6 ), /* str=000010 */
384 MKVLC( 0x3, 8 ), /* str=00000011 */
385 MKVLC( 0x2, 8 ), /* str=00000010 */
386 MKVLC( 0x0, 7 ), /* str=0000000 */
388 MKVLC( 0x0, 0 ), /* str= */
389 MKVLC( 0x0, 0 ), /* str= */
390 MKVLC( 0x0, 0 ), /* str= */
391 MKVLC( 0x0, 0 ), /* str= */
393 MKVLC( 0x0, 0 ), /* str= */
394 MKVLC( 0x0, 0 ), /* str= */
395 MKVLC( 0x0, 0 ), /* str= */
396 MKVLC( 0x0, 0 ), /* str= */
398 MKVLC( 0x0, 0 ), /* str= */
399 MKVLC( 0x0, 0 ), /* str= */
400 MKVLC( 0x0, 0 ), /* str= */
401 MKVLC( 0x0, 0 ), /* str= */
403 MKVLC( 0x0, 0 ), /* str= */
404 MKVLC( 0x0, 0 ), /* str= */
405 MKVLC( 0x0, 0 ), /* str= */
406 MKVLC( 0x0, 0 ), /* str= */
408 MKVLC( 0x0, 0 ), /* str= */
409 MKVLC( 0x0, 0 ), /* str= */
410 MKVLC( 0x0, 0 ), /* str= */
411 MKVLC( 0x0, 0 ), /* str= */
413 MKVLC( 0x0, 0 ), /* str= */
414 MKVLC( 0x0, 0 ), /* str= */
415 MKVLC( 0x0, 0 ), /* str= */
416 MKVLC( 0x0, 0 ), /* str= */
418 MKVLC( 0x0, 0 ), /* str= */
419 MKVLC( 0x0, 0 ), /* str= */
420 MKVLC( 0x0, 0 ), /* str= */
421 MKVLC( 0x0, 0 ), /* str= */
423 MKVLC( 0x0, 0 ), /* str= */
424 MKVLC( 0x0, 0 ), /* str= */
425 MKVLC( 0x0, 0 ), /* str= */
426 MKVLC( 0x0, 0 ), /* str= */
428 MKVLC( 0x0, 0 ), /* str= */
429 MKVLC( 0x0, 0 ), /* str= */
430 MKVLC( 0x0, 0 ), /* str= */
431 MKVLC( 0x0, 0 ), /* str= */
433 MKVLC( 0x0, 0 ), /* str= */
434 MKVLC( 0x0, 0 ), /* str= */
435 MKVLC( 0x0, 0 ), /* str= */
436 MKVLC( 0x0, 0 ), /* str= */
438 MKVLC( 0x0, 0 ), /* str= */
439 MKVLC( 0x0, 0 ), /* str= */
440 MKVLC( 0x0, 0 ), /* str= */
441 MKVLC( 0x0, 0 ), /* str= */
443 MKVLC( 0x0, 0 ), /* str= */
444 MKVLC( 0x0, 0 ), /* str= */
445 MKVLC( 0x0, 0 ), /* str= */
446 MKVLC( 0x0, 0 ), /* str= */
450 /* [i_total_coeff-1][i_total_zeros] */
451 const vlc_t x264_total_zeros[15][16] =
454 MKVLC( 0x1, 1 ), /* str=1 */
455 MKVLC( 0x3, 3 ), /* str=011 */
456 MKVLC( 0x2, 3 ), /* str=010 */
457 MKVLC( 0x3, 4 ), /* str=0011 */
458 MKVLC( 0x2, 4 ), /* str=0010 */
459 MKVLC( 0x3, 5 ), /* str=00011 */
460 MKVLC( 0x2, 5 ), /* str=00010 */
461 MKVLC( 0x3, 6 ), /* str=000011 */
462 MKVLC( 0x2, 6 ), /* str=000010 */
463 MKVLC( 0x3, 7 ), /* str=0000011 */
464 MKVLC( 0x2, 7 ), /* str=0000010 */
465 MKVLC( 0x3, 8 ), /* str=00000011 */
466 MKVLC( 0x2, 8 ), /* str=00000010 */
467 MKVLC( 0x3, 9 ), /* str=000000011 */
468 MKVLC( 0x2, 9 ), /* str=000000010 */
469 MKVLC( 0x1, 9 ), /* str=000000001 */
472 MKVLC( 0x7, 3 ), /* str=111 */
473 MKVLC( 0x6, 3 ), /* str=110 */
474 MKVLC( 0x5, 3 ), /* str=101 */
475 MKVLC( 0x4, 3 ), /* str=100 */
476 MKVLC( 0x3, 3 ), /* str=011 */
477 MKVLC( 0x5, 4 ), /* str=0101 */
478 MKVLC( 0x4, 4 ), /* str=0100 */
479 MKVLC( 0x3, 4 ), /* str=0011 */
480 MKVLC( 0x2, 4 ), /* str=0010 */
481 MKVLC( 0x3, 5 ), /* str=00011 */
482 MKVLC( 0x2, 5 ), /* str=00010 */
483 MKVLC( 0x3, 6 ), /* str=000011 */
484 MKVLC( 0x2, 6 ), /* str=000010 */
485 MKVLC( 0x1, 6 ), /* str=000001 */
486 MKVLC( 0x0, 6 ), /* str=000000 */
487 MKVLC( 0x0, 0 ), /* str= */
490 MKVLC( 0x5, 4 ), /* str=0101 */
491 MKVLC( 0x7, 3 ), /* str=111 */
492 MKVLC( 0x6, 3 ), /* str=110 */
493 MKVLC( 0x5, 3 ), /* str=101 */
494 MKVLC( 0x4, 4 ), /* str=0100 */
495 MKVLC( 0x3, 4 ), /* str=0011 */
496 MKVLC( 0x4, 3 ), /* str=100 */
497 MKVLC( 0x3, 3 ), /* str=011 */
498 MKVLC( 0x2, 4 ), /* str=0010 */
499 MKVLC( 0x3, 5 ), /* str=00011 */
500 MKVLC( 0x2, 5 ), /* str=00010 */
501 MKVLC( 0x1, 6 ), /* str=000001 */
502 MKVLC( 0x1, 5 ), /* str=00001 */
503 MKVLC( 0x0, 6 ), /* str=000000 */
504 MKVLC( 0x0, 0 ), /* str= */
505 MKVLC( 0x0, 0 ), /* str= */
508 MKVLC( 0x3, 5 ), /* str=00011 */
509 MKVLC( 0x7, 3 ), /* str=111 */
510 MKVLC( 0x5, 4 ), /* str=0101 */
511 MKVLC( 0x4, 4 ), /* str=0100 */
512 MKVLC( 0x6, 3 ), /* str=110 */
513 MKVLC( 0x5, 3 ), /* str=101 */
514 MKVLC( 0x4, 3 ), /* str=100 */
515 MKVLC( 0x3, 4 ), /* str=0011 */
516 MKVLC( 0x3, 3 ), /* str=011 */
517 MKVLC( 0x2, 4 ), /* str=0010 */
518 MKVLC( 0x2, 5 ), /* str=00010 */
519 MKVLC( 0x1, 5 ), /* str=00001 */
520 MKVLC( 0x0, 5 ), /* str=00000 */
521 MKVLC( 0x0, 0 ), /* str= */
522 MKVLC( 0x0, 0 ), /* str= */
523 MKVLC( 0x0, 0 ), /* str= */
526 MKVLC( 0x5, 4 ), /* str=0101 */
527 MKVLC( 0x4, 4 ), /* str=0100 */
528 MKVLC( 0x3, 4 ), /* str=0011 */
529 MKVLC( 0x7, 3 ), /* str=111 */
530 MKVLC( 0x6, 3 ), /* str=110 */
531 MKVLC( 0x5, 3 ), /* str=101 */
532 MKVLC( 0x4, 3 ), /* str=100 */
533 MKVLC( 0x3, 3 ), /* str=011 */
534 MKVLC( 0x2, 4 ), /* str=0010 */
535 MKVLC( 0x1, 5 ), /* str=00001 */
536 MKVLC( 0x1, 4 ), /* str=0001 */
537 MKVLC( 0x0, 5 ), /* str=00000 */
538 MKVLC( 0x0, 0 ), /* str= */
539 MKVLC( 0x0, 0 ), /* str= */
540 MKVLC( 0x0, 0 ), /* str= */
541 MKVLC( 0x0, 0 ), /* str= */
544 MKVLC( 0x1, 6 ), /* str=000001 */
545 MKVLC( 0x1, 5 ), /* str=00001 */
546 MKVLC( 0x7, 3 ), /* str=111 */
547 MKVLC( 0x6, 3 ), /* str=110 */
548 MKVLC( 0x5, 3 ), /* str=101 */
549 MKVLC( 0x4, 3 ), /* str=100 */
550 MKVLC( 0x3, 3 ), /* str=011 */
551 MKVLC( 0x2, 3 ), /* str=010 */
552 MKVLC( 0x1, 4 ), /* str=0001 */
553 MKVLC( 0x1, 3 ), /* str=001 */
554 MKVLC( 0x0, 6 ), /* str=000000 */
555 MKVLC( 0x0, 0 ), /* str= */
556 MKVLC( 0x0, 0 ), /* str= */
557 MKVLC( 0x0, 0 ), /* str= */
558 MKVLC( 0x0, 0 ), /* str= */
559 MKVLC( 0x0, 0 ), /* str= */
562 MKVLC( 0x1, 6 ), /* str=000001 */
563 MKVLC( 0x1, 5 ), /* str=00001 */
564 MKVLC( 0x5, 3 ), /* str=101 */
565 MKVLC( 0x4, 3 ), /* str=100 */
566 MKVLC( 0x3, 3 ), /* str=011 */
567 MKVLC( 0x3, 2 ), /* str=11 */
568 MKVLC( 0x2, 3 ), /* str=010 */
569 MKVLC( 0x1, 4 ), /* str=0001 */
570 MKVLC( 0x1, 3 ), /* str=001 */
571 MKVLC( 0x0, 6 ), /* str=000000 */
572 MKVLC( 0x0, 0 ), /* str= */
573 MKVLC( 0x0, 0 ), /* str= */
574 MKVLC( 0x0, 0 ), /* str= */
575 MKVLC( 0x0, 0 ), /* str= */
576 MKVLC( 0x0, 0 ), /* str= */
577 MKVLC( 0x0, 0 ), /* str= */
580 MKVLC( 0x1, 6 ), /* str=000001 */
581 MKVLC( 0x1, 4 ), /* str=0001 */
582 MKVLC( 0x1, 5 ), /* str=00001 */
583 MKVLC( 0x3, 3 ), /* str=011 */
584 MKVLC( 0x3, 2 ), /* str=11 */
585 MKVLC( 0x2, 2 ), /* str=10 */
586 MKVLC( 0x2, 3 ), /* str=010 */
587 MKVLC( 0x1, 3 ), /* str=001 */
588 MKVLC( 0x0, 6 ), /* str=000000 */
589 MKVLC( 0x0, 0 ), /* str= */
590 MKVLC( 0x0, 0 ), /* str= */
591 MKVLC( 0x0, 0 ), /* str= */
592 MKVLC( 0x0, 0 ), /* str= */
593 MKVLC( 0x0, 0 ), /* str= */
594 MKVLC( 0x0, 0 ), /* str= */
595 MKVLC( 0x0, 0 ), /* str= */
598 MKVLC( 0x1, 6 ), /* str=000001 */
599 MKVLC( 0x0, 6 ), /* str=000000 */
600 MKVLC( 0x1, 4 ), /* str=0001 */
601 MKVLC( 0x3, 2 ), /* str=11 */
602 MKVLC( 0x2, 2 ), /* str=10 */
603 MKVLC( 0x1, 3 ), /* str=001 */
604 MKVLC( 0x1, 2 ), /* str=01 */
605 MKVLC( 0x1, 5 ), /* str=00001 */
606 MKVLC( 0x0, 0 ), /* str= */
607 MKVLC( 0x0, 0 ), /* str= */
608 MKVLC( 0x0, 0 ), /* str= */
609 MKVLC( 0x0, 0 ), /* str= */
610 MKVLC( 0x0, 0 ), /* str= */
611 MKVLC( 0x0, 0 ), /* str= */
612 MKVLC( 0x0, 0 ), /* str= */
613 MKVLC( 0x0, 0 ), /* str= */
616 MKVLC( 0x1, 5 ), /* str=00001 */
617 MKVLC( 0x0, 5 ), /* str=00000 */
618 MKVLC( 0x1, 3 ), /* str=001 */
619 MKVLC( 0x3, 2 ), /* str=11 */
620 MKVLC( 0x2, 2 ), /* str=10 */
621 MKVLC( 0x1, 2 ), /* str=01 */
622 MKVLC( 0x1, 4 ), /* str=0001 */
623 MKVLC( 0x0, 0 ), /* str= */
624 MKVLC( 0x0, 0 ), /* str= */
625 MKVLC( 0x0, 0 ), /* str= */
626 MKVLC( 0x0, 0 ), /* str= */
627 MKVLC( 0x0, 0 ), /* str= */
628 MKVLC( 0x0, 0 ), /* str= */
629 MKVLC( 0x0, 0 ), /* str= */
630 MKVLC( 0x0, 0 ), /* str= */
631 MKVLC( 0x0, 0 ), /* str= */
634 MKVLC( 0x0, 4 ), /* str=0000 */
635 MKVLC( 0x1, 4 ), /* str=0001 */
636 MKVLC( 0x1, 3 ), /* str=001 */
637 MKVLC( 0x2, 3 ), /* str=010 */
638 MKVLC( 0x1, 1 ), /* str=1 */
639 MKVLC( 0x3, 3 ), /* str=011 */
640 MKVLC( 0x0, 0 ), /* str= */
641 MKVLC( 0x0, 0 ), /* str= */
642 MKVLC( 0x0, 0 ), /* str= */
643 MKVLC( 0x0, 0 ), /* str= */
644 MKVLC( 0x0, 0 ), /* str= */
645 MKVLC( 0x0, 0 ), /* str= */
646 MKVLC( 0x0, 0 ), /* str= */
647 MKVLC( 0x0, 0 ), /* str= */
648 MKVLC( 0x0, 0 ), /* str= */
649 MKVLC( 0x0, 0 ), /* str= */
652 MKVLC( 0x0, 4 ), /* str=0000 */
653 MKVLC( 0x1, 4 ), /* str=0001 */
654 MKVLC( 0x1, 2 ), /* str=01 */
655 MKVLC( 0x1, 1 ), /* str=1 */
656 MKVLC( 0x1, 3 ), /* str=001 */
657 MKVLC( 0x0, 0 ), /* str= */
658 MKVLC( 0x0, 0 ), /* str= */
659 MKVLC( 0x0, 0 ), /* str= */
660 MKVLC( 0x0, 0 ), /* str= */
661 MKVLC( 0x0, 0 ), /* str= */
662 MKVLC( 0x0, 0 ), /* str= */
663 MKVLC( 0x0, 0 ), /* str= */
664 MKVLC( 0x0, 0 ), /* str= */
665 MKVLC( 0x0, 0 ), /* str= */
666 MKVLC( 0x0, 0 ), /* str= */
667 MKVLC( 0x0, 0 ), /* str= */
670 MKVLC( 0x0, 3 ), /* str=000 */
671 MKVLC( 0x1, 3 ), /* str=001 */
672 MKVLC( 0x1, 1 ), /* str=1 */
673 MKVLC( 0x1, 2 ), /* str=01 */
674 MKVLC( 0x0, 0 ), /* str= */
675 MKVLC( 0x0, 0 ), /* str= */
676 MKVLC( 0x0, 0 ), /* str= */
677 MKVLC( 0x0, 0 ), /* str= */
678 MKVLC( 0x0, 0 ), /* str= */
679 MKVLC( 0x0, 0 ), /* str= */
680 MKVLC( 0x0, 0 ), /* str= */
681 MKVLC( 0x0, 0 ), /* str= */
682 MKVLC( 0x0, 0 ), /* str= */
683 MKVLC( 0x0, 0 ), /* str= */
684 MKVLC( 0x0, 0 ), /* str= */
685 MKVLC( 0x0, 0 ), /* str= */
688 MKVLC( 0x0, 2 ), /* str=00 */
689 MKVLC( 0x1, 2 ), /* str=01 */
690 MKVLC( 0x1, 1 ), /* str=1 */
691 MKVLC( 0x0, 0 ), /* str= */
692 MKVLC( 0x0, 0 ), /* str= */
693 MKVLC( 0x0, 0 ), /* str= */
694 MKVLC( 0x0, 0 ), /* str= */
695 MKVLC( 0x0, 0 ), /* str= */
696 MKVLC( 0x0, 0 ), /* str= */
697 MKVLC( 0x0, 0 ), /* str= */
698 MKVLC( 0x0, 0 ), /* str= */
699 MKVLC( 0x0, 0 ), /* str= */
700 MKVLC( 0x0, 0 ), /* str= */
701 MKVLC( 0x0, 0 ), /* str= */
702 MKVLC( 0x0, 0 ), /* str= */
703 MKVLC( 0x0, 0 ), /* str= */
706 MKVLC( 0x0, 1 ), /* str=0 */
707 MKVLC( 0x1, 1 ), /* str=1 */
708 MKVLC( 0x0, 0 ), /* str= */
709 MKVLC( 0x0, 0 ), /* str= */
710 MKVLC( 0x0, 0 ), /* str= */
711 MKVLC( 0x0, 0 ), /* str= */
712 MKVLC( 0x0, 0 ), /* str= */
713 MKVLC( 0x0, 0 ), /* str= */
714 MKVLC( 0x0, 0 ), /* str= */
715 MKVLC( 0x0, 0 ), /* str= */
716 MKVLC( 0x0, 0 ), /* str= */
717 MKVLC( 0x0, 0 ), /* str= */
718 MKVLC( 0x0, 0 ), /* str= */
719 MKVLC( 0x0, 0 ), /* str= */
720 MKVLC( 0x0, 0 ), /* str= */
721 MKVLC( 0x0, 0 ), /* str= */
725 /* [i_total_coeff-1][i_total_zeros] */
726 const vlc_t x264_total_zeros_dc[3][4] =
729 MKVLC( 0x01, 1 ), /* 1 */
730 MKVLC( 0x01, 2 ), /* 01 */
731 MKVLC( 0x01, 3 ), /* 001*/
732 MKVLC( 0x00, 3 ) /* 000*/
735 MKVLC( 0x01, 1 ), /* 1 */
736 MKVLC( 0x01, 2 ), /* 01 */
737 MKVLC( 0x00, 2 ), /* 00 */
738 MKVLC( 0x00, 0 ) /* */
741 MKVLC( 0x01, 1 ), /* 1 */
742 MKVLC( 0x00, 1 ), /* 0 */
743 MKVLC( 0x00, 0 ), /* */
744 MKVLC( 0x00, 0 ) /* */
748 /* x264_run_before[__MIN( i_zero_left -1, 6 )][run_before] */
749 const vlc_t x264_run_before[7][16] =
751 { /* i_zero_left 1 */
752 MKVLC( 0x1, 1 ), /* str=1 */
753 MKVLC( 0x0, 1 ), /* str=0 */
754 MKVLC( 0x0, 0 ), /* str= */
755 MKVLC( 0x0, 0 ), /* str= */
756 MKVLC( 0x0, 0 ), /* str= */
757 MKVLC( 0x0, 0 ), /* str= */
758 MKVLC( 0x0, 0 ), /* str= */
759 MKVLC( 0x0, 0 ), /* str= */
760 MKVLC( 0x0, 0 ), /* str= */
761 MKVLC( 0x0, 0 ), /* str= */
762 MKVLC( 0x0, 0 ), /* str= */
763 MKVLC( 0x0, 0 ), /* str= */
764 MKVLC( 0x0, 0 ), /* str= */
765 MKVLC( 0x0, 0 ), /* str= */
766 MKVLC( 0x0, 0 ), /* str= */
768 { /* i_zero_left 2 */
769 MKVLC( 0x1, 1 ), /* str=1 */
770 MKVLC( 0x1, 2 ), /* str=01 */
771 MKVLC( 0x0, 2 ), /* str=00 */
772 MKVLC( 0x0, 0 ), /* str= */
773 MKVLC( 0x0, 0 ), /* str= */
774 MKVLC( 0x0, 0 ), /* str= */
775 MKVLC( 0x0, 0 ), /* str= */
776 MKVLC( 0x0, 0 ), /* str= */
777 MKVLC( 0x0, 0 ), /* str= */
778 MKVLC( 0x0, 0 ), /* str= */
779 MKVLC( 0x0, 0 ), /* str= */
780 MKVLC( 0x0, 0 ), /* str= */
781 MKVLC( 0x0, 0 ), /* str= */
782 MKVLC( 0x0, 0 ), /* str= */
783 MKVLC( 0x0, 0 ), /* str= */
785 { /* i_zero_left 3 */
786 MKVLC( 0x3, 2 ), /* str=11 */
787 MKVLC( 0x2, 2 ), /* str=10 */
788 MKVLC( 0x1, 2 ), /* str=01 */
789 MKVLC( 0x0, 2 ), /* str=00 */
790 MKVLC( 0x0, 0 ), /* str= */
791 MKVLC( 0x0, 0 ), /* str= */
792 MKVLC( 0x0, 0 ), /* str= */
793 MKVLC( 0x0, 0 ), /* str= */
794 MKVLC( 0x0, 0 ), /* str= */
795 MKVLC( 0x0, 0 ), /* str= */
796 MKVLC( 0x0, 0 ), /* str= */
797 MKVLC( 0x0, 0 ), /* str= */
798 MKVLC( 0x0, 0 ), /* str= */
799 MKVLC( 0x0, 0 ), /* str= */
800 MKVLC( 0x0, 0 ), /* str= */
802 { /* i_zero_left 4 */
803 MKVLC( 0x3, 2 ), /* str=11 */
804 MKVLC( 0x2, 2 ), /* str=10 */
805 MKVLC( 0x1, 2 ), /* str=01 */
806 MKVLC( 0x1, 3 ), /* str=001 */
807 MKVLC( 0x0, 3 ), /* str=000 */
808 MKVLC( 0x0, 0 ), /* str= */
809 MKVLC( 0x0, 0 ), /* str= */
810 MKVLC( 0x0, 0 ), /* str= */
811 MKVLC( 0x0, 0 ), /* str= */
812 MKVLC( 0x0, 0 ), /* str= */
813 MKVLC( 0x0, 0 ), /* str= */
814 MKVLC( 0x0, 0 ), /* str= */
815 MKVLC( 0x0, 0 ), /* str= */
816 MKVLC( 0x0, 0 ), /* str= */
817 MKVLC( 0x0, 0 ), /* str= */
819 { /* i_zero_left 5 */
820 MKVLC( 0x3, 2 ), /* str=11 */
821 MKVLC( 0x2, 2 ), /* str=10 */
822 MKVLC( 0x3, 3 ), /* str=011 */
823 MKVLC( 0x2, 3 ), /* str=010 */
824 MKVLC( 0x1, 3 ), /* str=001 */
825 MKVLC( 0x0, 3 ), /* str=000 */
826 MKVLC( 0x0, 0 ), /* str= */
827 MKVLC( 0x0, 0 ), /* str= */
828 MKVLC( 0x0, 0 ), /* str= */
829 MKVLC( 0x0, 0 ), /* str= */
830 MKVLC( 0x0, 0 ), /* str= */
831 MKVLC( 0x0, 0 ), /* str= */
832 MKVLC( 0x0, 0 ), /* str= */
833 MKVLC( 0x0, 0 ), /* str= */
834 MKVLC( 0x0, 0 ), /* str= */
836 { /* i_zero_left 6 */
837 MKVLC( 0x3, 2 ), /* str=11 */
838 MKVLC( 0x0, 3 ), /* str=000 */
839 MKVLC( 0x1, 3 ), /* str=001 */
840 MKVLC( 0x3, 3 ), /* str=011 */
841 MKVLC( 0x2, 3 ), /* str=010 */
842 MKVLC( 0x5, 3 ), /* str=101 */
843 MKVLC( 0x4, 3 ), /* str=100 */
844 MKVLC( 0x0, 0 ), /* str= */
845 MKVLC( 0x0, 0 ), /* str= */
846 MKVLC( 0x0, 0 ), /* str= */
847 MKVLC( 0x0, 0 ), /* str= */
848 MKVLC( 0x0, 0 ), /* str= */
849 MKVLC( 0x0, 0 ), /* str= */
850 MKVLC( 0x0, 0 ), /* str= */
851 MKVLC( 0x0, 0 ), /* str= */
853 { /* i_zero_left 7 */
854 MKVLC( 0x7, 3 ), /* str=111 */
855 MKVLC( 0x6, 3 ), /* str=110 */
856 MKVLC( 0x5, 3 ), /* str=101 */
857 MKVLC( 0x4, 3 ), /* str=100 */
858 MKVLC( 0x3, 3 ), /* str=011 */
859 MKVLC( 0x2, 3 ), /* str=010 */
860 MKVLC( 0x1, 3 ), /* str=001 */
861 MKVLC( 0x1, 4 ), /* str=0001 */
862 MKVLC( 0x1, 5 ), /* str=00001 */
863 MKVLC( 0x1, 6 ), /* str=000001 */
864 MKVLC( 0x1, 7 ), /* str=0000001 */
865 MKVLC( 0x1, 8 ), /* str=00000001 */
866 MKVLC( 0x1, 9 ), /* str=000000001 */
867 MKVLC( 0x1, 10 ), /* str=0000000001 */
868 MKVLC( 0x1, 11 ), /* str=00000000001 */
872 vlc_large_t x264_level_token[7][LEVEL_TABLE_SIZE];
874 void x264_init_vlc_tables()
878 for( i_suffix = 0; i_suffix < 7; i_suffix++ )
879 for( level = -LEVEL_TABLE_SIZE/2; level < LEVEL_TABLE_SIZE/2; level++ )
881 int mask = level >> 15;
882 int abs_level = (level^mask)-mask;
883 int i_level_code = abs_level*2-mask-2;
884 int i_next = i_suffix;
885 vlc_large_t *vlc = &x264_level_token[i_suffix][level+LEVEL_TABLE_SIZE/2];
887 if( ( i_level_code >> i_suffix ) < 14 )
889 vlc->i_size = (i_level_code >> i_suffix) + 1 + i_suffix;
890 vlc->i_bits = (1<<i_suffix) + (i_level_code & ((1<<i_suffix)-1));
892 else if( i_suffix == 0 && i_level_code < 30 )
895 vlc->i_bits = (1<<4) + (i_level_code - 14);
897 else if( i_suffix > 0 && ( i_level_code >> i_suffix ) == 14 )
899 vlc->i_size = 15 + i_suffix;
900 vlc->i_bits = (1<<i_suffix) + (i_level_code & ((1<<i_suffix)-1));
904 i_level_code -= 15 << i_suffix;
908 vlc->i_bits = (1<<12) + i_level_code;
912 if( abs_level > (3 << (i_next-1)) && i_next < 6 )
914 vlc->i_next = i_next;