comparison vp3data.h @ 2712:9c1a436dac6b libavcodec

replace unpack_token() with a series of lookup tables
author melanson
date Thu, 19 May 2005 02:43:21 +0000
parents 3817945001ce
children 5444d77adcbe
comparison
equal deleted inserted replaced
2711:3ba3640bae2a 2712:9c1a436dac6b
159 3, -3, 159 3, -3,
160 4, -4, 5, -5, 6, -6, 7, -7, 160 4, -4, 5, -5, 6, -6, 7, -7,
161 8, -8, 9, -9, 10, -10, 11, -11, 12, -12, 13, -13, 14, -14, 15, -15, 161 8, -8, 9, -9, 10, -10, 11, -11, 12, -12, 13, -13, 14, -14, 15, -15,
162 16, -16, 17, -17, 18, -18, 19, -19, 20, -20, 21, -21, 22, -22, 23, -23, 162 16, -16, 17, -17, 18, -18, 19, -19, 20, -20, 21, -21, 22, -22, 23, -23,
163 24, -24, 25, -25, 26, -26, 27, -27, 28, -28, 29, -29, 30, -30, 31, -31 163 24, -24, 25, -25, 26, -26, 27, -27, 28, -28, 29, -29, 30, -30, 31, -31
164 };
165
166 /* only tokens 0..6 indicate eob runs */
167 static const int eob_run_base[7] = {
168 1, 2, 3, 4, 8, 16, 0
169 };
170 static const int eob_run_get_bits[7] = {
171 0, 0, 0, 2, 3, 4, 12
172 };
173
174 static const int zero_run_base[32] = {
175 0, 0, 0, 0, 0, 0, 0, /* 0..6 are never used */
176 0, 0, /* 7..8 */
177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 9..22 */
178 1, 2, 3, 4, 5, /* 23..27 */
179 6, 10, 1, 2 /* 28..31 */
180 };
181 static const int zero_run_get_bits[32] = {
182 0, 0, 0, 0, 0, 0, 0, /* 0..6 are never used */
183 3, 6, /* 7..8 */
184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 9..22 */
185 0, 0, 0, 0, 0, /* 23..27 */
186 2, 3, 0, 1 /* 28..31 */
187 };
188
189 static const int coeff_get_bits[32] = {
190 0, 0, 0, 0, 0, 0, 0, /* 0..6 are never used */
191 0, 0, 0, 0, 0, 0, /* 7..12 use constant coeffs */
192 1, 1, 1, 1, /* 13..16 are constants but still need sign bit */
193 2, 3, 4, 5, 6, 10, /* 17..22, for reading large coeffs */
194 1, 1, 1, 1, 1, 1, 1, /* 23..29 are constants but still need sign bit */
195 2, 2 /* 30..31 */
196 };
197
198 static const int16_t coeff_table_token_7_8[1] = { 0 };
199 static const int16_t coeff_table_token_9[1] = { 1 };
200 static const int16_t coeff_table_token_10[1] = { -1 };
201 static const int16_t coeff_table_token_11[1] = { 2 };
202 static const int16_t coeff_table_token_12[1] = { -2 };
203
204 static const int16_t coeff_table_token_13[2] = { 3, -3 };
205 static const int16_t coeff_table_token_14[2] = { 4, -4 };
206 static const int16_t coeff_table_token_15[2] = { 5, -5 };
207 static const int16_t coeff_table_token_16[2] = { 6, -6 };
208
209 static const int16_t coeff_table_token_23_24_25_26_27_28_29[2] = { 1, -1 };
210 static const int16_t coeff_table_token_30[4] = { 2, 3, -2, -3 };
211 static const int16_t coeff_table_token_31[4] = { 2, 3, -2, -3 };
212
213 static const int16_t coeff_table_token_17[4] = {
214 7, 8, -7, -8
215 };
216
217 static const int16_t coeff_table_token_18[8] = {
218 9, 10, 11, 12, -9, -10, -11, -12
219 };
220
221 static const int16_t coeff_table_token_19[16] = {
222 13, 14, 15, 16, 17, 18, 19, 20, -13, -14, -15, -16, -17, -18, -19, -20
223 };
224
225 static const int16_t coeff_table_token_20[32] = {
226 21, 22, 23, 24, 25, 26, 27, 28,
227 29, 30, 31, 32, 33, 34, 35, 36,
228 -21, -22, -23, -24, -25, -26, -27, -28,
229 -29, -30, -31, -32, -33, -34, -35, -36
230 };
231
232 static const int16_t coeff_table_token_21[64] = {
233 37, 38, 39, 40, 41, 42, 43, 44,
234 45, 46, 47, 48, 49, 50, 51, 52,
235 53, 54, 55, 56, 57, 58, 59, 60,
236 61, 62, 63, 64, 65, 66, 67, 68,
237 -37, -38, -39, -40, -41, -42, -43, -44,
238 -45, -46, -47, -48, -49, -50, -51, -52,
239 -53, -54, -55, -56, -57, -58, -59, -60,
240 -61, -62, -63, -64, -65, -66, -67, -68
241 };
242
243 static const int16_t coeff_table_token_22[1024] = {
244 69, 70, 71, 72, 73, 74, 75, 76,
245 77, 78, 79, 80, 81, 82, 83, 84,
246 85, 86, 87, 88, 89, 90, 91, 92,
247 93, 94, 95, 96, 97, 98, 99, 100,
248 101, 102, 103, 104, 105, 106, 107, 108,
249 109, 110, 111, 112, 113, 114, 115, 116,
250 117, 118, 119, 120, 121, 122, 123, 124,
251 125, 126, 127, 128, 129, 130, 131, 132,
252 133, 134, 135, 136, 137, 138, 139, 140,
253 141, 142, 143, 144, 145, 146, 147, 148,
254 149, 150, 151, 152, 153, 154, 155, 156,
255 157, 158, 159, 160, 161, 162, 163, 164,
256 165, 166, 167, 168, 169, 170, 171, 172,
257 173, 174, 175, 176, 177, 178, 179, 180,
258 181, 182, 183, 184, 185, 186, 187, 188,
259 189, 190, 191, 192, 193, 194, 195, 196,
260 197, 198, 199, 200, 201, 202, 203, 204,
261 205, 206, 207, 208, 209, 210, 211, 212,
262 213, 214, 215, 216, 217, 218, 219, 220,
263 221, 222, 223, 224, 225, 226, 227, 228,
264 229, 230, 231, 232, 233, 234, 235, 236,
265 237, 238, 239, 240, 241, 242, 243, 244,
266 245, 246, 247, 248, 249, 250, 251, 252,
267 253, 254, 255, 256, 257, 258, 259, 260,
268 261, 262, 263, 264, 265, 266, 267, 268,
269 269, 270, 271, 272, 273, 274, 275, 276,
270 277, 278, 279, 280, 281, 282, 283, 284,
271 285, 286, 287, 288, 289, 290, 291, 292,
272 293, 294, 295, 296, 297, 298, 299, 300,
273 301, 302, 303, 304, 305, 306, 307, 308,
274 309, 310, 311, 312, 313, 314, 315, 316,
275 317, 318, 319, 320, 321, 322, 323, 324,
276 325, 326, 327, 328, 329, 330, 331, 332,
277 333, 334, 335, 336, 337, 338, 339, 340,
278 341, 342, 343, 344, 345, 346, 347, 348,
279 349, 350, 351, 352, 353, 354, 355, 356,
280 357, 358, 359, 360, 361, 362, 363, 364,
281 365, 366, 367, 368, 369, 370, 371, 372,
282 373, 374, 375, 376, 377, 378, 379, 380,
283 381, 382, 383, 384, 385, 386, 387, 388,
284 389, 390, 391, 392, 393, 394, 395, 396,
285 397, 398, 399, 400, 401, 402, 403, 404,
286 405, 406, 407, 408, 409, 410, 411, 412,
287 413, 414, 415, 416, 417, 418, 419, 420,
288 421, 422, 423, 424, 425, 426, 427, 428,
289 429, 430, 431, 432, 433, 434, 435, 436,
290 437, 438, 439, 440, 441, 442, 443, 444,
291 445, 446, 447, 448, 449, 450, 451, 452,
292 453, 454, 455, 456, 457, 458, 459, 460,
293 461, 462, 463, 464, 465, 466, 467, 468,
294 469, 470, 471, 472, 473, 474, 475, 476,
295 477, 478, 479, 480, 481, 482, 483, 484,
296 485, 486, 487, 488, 489, 490, 491, 492,
297 493, 494, 495, 496, 497, 498, 499, 500,
298 501, 502, 503, 504, 505, 506, 507, 508,
299 509, 510, 511, 512, 513, 514, 515, 516,
300 517, 518, 519, 520, 521, 522, 523, 524,
301 525, 526, 527, 528, 529, 530, 531, 532,
302 533, 534, 535, 536, 537, 538, 539, 540,
303 541, 542, 543, 544, 545, 546, 547, 548,
304 549, 550, 551, 552, 553, 554, 555, 556,
305 557, 558, 559, 560, 561, 562, 563, 564,
306 565, 566, 567, 568, 569, 570, 571, 572,
307 573, 574, 575, 576, 577, 578, 579, 580,
308 -69, -70, -71, -72, -73, -74, -75, -76,
309 -77, -78, -79, -80, -81, -82, -83, -84,
310 -85, -86, -87, -88, -89, -90, -91, -92,
311 -93, -94, -95, -96, -97, -98, -99, -100,
312 -101, -102, -103, -104, -105, -106, -107, -108,
313 -109, -110, -111, -112, -113, -114, -115, -116,
314 -117, -118, -119, -120, -121, -122, -123, -124,
315 -125, -126, -127, -128, -129, -130, -131, -132,
316 -133, -134, -135, -136, -137, -138, -139, -140,
317 -141, -142, -143, -144, -145, -146, -147, -148,
318 -149, -150, -151, -152, -153, -154, -155, -156,
319 -157, -158, -159, -160, -161, -162, -163, -164,
320 -165, -166, -167, -168, -169, -170, -171, -172,
321 -173, -174, -175, -176, -177, -178, -179, -180,
322 -181, -182, -183, -184, -185, -186, -187, -188,
323 -189, -190, -191, -192, -193, -194, -195, -196,
324 -197, -198, -199, -200, -201, -202, -203, -204,
325 -205, -206, -207, -208, -209, -210, -211, -212,
326 -213, -214, -215, -216, -217, -218, -219, -220,
327 -221, -222, -223, -224, -225, -226, -227, -228,
328 -229, -230, -231, -232, -233, -234, -235, -236,
329 -237, -238, -239, -240, -241, -242, -243, -244,
330 -245, -246, -247, -248, -249, -250, -251, -252,
331 -253, -254, -255, -256, -257, -258, -259, -260,
332 -261, -262, -263, -264, -265, -266, -267, -268,
333 -269, -270, -271, -272, -273, -274, -275, -276,
334 -277, -278, -279, -280, -281, -282, -283, -284,
335 -285, -286, -287, -288, -289, -290, -291, -292,
336 -293, -294, -295, -296, -297, -298, -299, -300,
337 -301, -302, -303, -304, -305, -306, -307, -308,
338 -309, -310, -311, -312, -313, -314, -315, -316,
339 -317, -318, -319, -320, -321, -322, -323, -324,
340 -325, -326, -327, -328, -329, -330, -331, -332,
341 -333, -334, -335, -336, -337, -338, -339, -340,
342 -341, -342, -343, -344, -345, -346, -347, -348,
343 -349, -350, -351, -352, -353, -354, -355, -356,
344 -357, -358, -359, -360, -361, -362, -363, -364,
345 -365, -366, -367, -368, -369, -370, -371, -372,
346 -373, -374, -375, -376, -377, -378, -379, -380,
347 -381, -382, -383, -384, -385, -386, -387, -388,
348 -389, -390, -391, -392, -393, -394, -395, -396,
349 -397, -398, -399, -400, -401, -402, -403, -404,
350 -405, -406, -407, -408, -409, -410, -411, -412,
351 -413, -414, -415, -416, -417, -418, -419, -420,
352 -421, -422, -423, -424, -425, -426, -427, -428,
353 -429, -430, -431, -432, -433, -434, -435, -436,
354 -437, -438, -439, -440, -441, -442, -443, -444,
355 -445, -446, -447, -448, -449, -450, -451, -452,
356 -453, -454, -455, -456, -457, -458, -459, -460,
357 -461, -462, -463, -464, -465, -466, -467, -468,
358 -469, -470, -471, -472, -473, -474, -475, -476,
359 -477, -478, -479, -480, -481, -482, -483, -484,
360 -485, -486, -487, -488, -489, -490, -491, -492,
361 -493, -494, -495, -496, -497, -498, -499, -500,
362 -501, -502, -503, -504, -505, -506, -507, -508,
363 -509, -510, -511, -512, -513, -514, -515, -516,
364 -517, -518, -519, -520, -521, -522, -523, -524,
365 -525, -526, -527, -528, -529, -530, -531, -532,
366 -533, -534, -535, -536, -537, -538, -539, -540,
367 -541, -542, -543, -544, -545, -546, -547, -548,
368 -549, -550, -551, -552, -553, -554, -555, -556,
369 -557, -558, -559, -560, -561, -562, -563, -564,
370 -565, -566, -567, -568, -569, -570, -571, -572,
371 -573, -574, -575, -576, -577, -578, -579, -580
372 };
373
374 static const int16_t *coeff_tables[32] = {
375 NULL,
376 NULL,
377 NULL,
378 NULL,
379 NULL,
380 NULL,
381 NULL,
382 coeff_table_token_7_8,
383
384 coeff_table_token_7_8,
385 coeff_table_token_9,
386 coeff_table_token_10,
387 coeff_table_token_11,
388 coeff_table_token_12,
389 coeff_table_token_13,
390 coeff_table_token_14,
391 coeff_table_token_15,
392
393 coeff_table_token_16,
394 coeff_table_token_17,
395 coeff_table_token_18,
396 coeff_table_token_19,
397 coeff_table_token_20,
398 coeff_table_token_21,
399 coeff_table_token_22,
400 coeff_table_token_23_24_25_26_27_28_29,
401
402 coeff_table_token_23_24_25_26_27_28_29,
403 coeff_table_token_23_24_25_26_27_28_29,
404 coeff_table_token_23_24_25_26_27_28_29,
405 coeff_table_token_23_24_25_26_27_28_29,
406 coeff_table_token_23_24_25_26_27_28_29,
407 coeff_table_token_23_24_25_26_27_28_29,
408 coeff_table_token_30,
409 coeff_table_token_31
164 }; 410 };
165 411
166 static const uint16_t dc_bias[16][32][2] = { 412 static const uint16_t dc_bias[16][32][2] = {
167 { /* DC bias table 0 */ 413 { /* DC bias table 0 */
168 { 0x2D, 6 }, 414 { 0x2D, 6 },