Mercurial > libavcodec.hg
comparison dsputil.c @ 859:9512471dec40 libavcodec
* using macros to shorten init part
* removing some unused/unneeded code
* unifing some function names
author | kabi |
---|---|
date | Tue, 12 Nov 2002 09:47:14 +0000 |
parents | 43cf04688a38 |
children | a5f228481000 |
comparison
equal
deleted
inserted
replaced
858:43cf04688a38 | 859:9512471dec40 |
---|---|
18 * | 18 * |
19 * gmc & q-pel & 32/64 bit based MC by Michael Niedermayer <michaelni@gmx.at> | 19 * gmc & q-pel & 32/64 bit based MC by Michael Niedermayer <michaelni@gmx.at> |
20 */ | 20 */ |
21 #include "avcodec.h" | 21 #include "avcodec.h" |
22 #include "dsputil.h" | 22 #include "dsputil.h" |
23 /* | 23 |
24 void (*get_pixels)(DCTELEM *block, const UINT8 *pixels, int line_size); | |
25 void (*diff_pixels)(DCTELEM *block, const UINT8 *s1, const UINT8 *s2, int stride); | |
26 void (*put_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size); | |
27 void (*add_pixels_clamped)(const DCTELEM *block, UINT8 *pixels, int line_size); | |
28 void (*ff_gmc1)(UINT8 *dst, UINT8 *src, int srcStride, int h, int x16, int y16, int rounder); | |
29 void (*ff_gmc )(UINT8 *dst, UINT8 *src, int stride, int h, int ox, int oy, | |
30 int dxx, int dxy, int dyx, int dyy, int shift, int r, int width, int height); | |
31 void (*clear_blocks)(DCTELEM *blocks); | |
32 int (*pix_sum)(UINT8 * pix, int line_size); | |
33 int (*pix_norm1)(UINT8 * pix, int line_size); | |
34 | |
35 op_pixels_abs_func pix_abs16x16; | |
36 op_pixels_abs_func pix_abs16x16_x2; | |
37 op_pixels_abs_func pix_abs16x16_y2; | |
38 op_pixels_abs_func pix_abs16x16_xy2; | |
39 | |
40 op_pixels_abs_func pix_abs8x8; | |
41 op_pixels_abs_func pix_abs8x8_x2; | |
42 op_pixels_abs_func pix_abs8x8_y2; | |
43 op_pixels_abs_func pix_abs8x8_xy2; | |
44 */ | |
45 int ff_bit_exact=0; | 24 int ff_bit_exact=0; |
46 | 25 |
47 UINT8 cropTbl[256 + 2 * MAX_NEG_CROP]; | 26 UINT8 cropTbl[256 + 2 * MAX_NEG_CROP]; |
48 UINT32 squareTbl[512]; | 27 UINT32 squareTbl[512]; |
49 | 28 |
258 pixels+=line_size;\ | 237 pixels+=line_size;\ |
259 block +=line_size;\ | 238 block +=line_size;\ |
260 }\ | 239 }\ |
261 }\ | 240 }\ |
262 \ | 241 \ |
263 static void OPNAME ## _no_rnd_pixels_x2(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ | 242 static void OPNAME ## _no_rnd_pixels_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ |
264 {\ | 243 {\ |
265 int i;\ | 244 int i;\ |
266 for(i=0; i<h; i++){\ | 245 for(i=0; i<h; i++){\ |
267 const uint64_t a= LD64(pixels );\ | 246 const uint64_t a= LD64(pixels );\ |
268 const uint64_t b= LD64(pixels+1);\ | 247 const uint64_t b= LD64(pixels+1);\ |
270 pixels+=line_size;\ | 249 pixels+=line_size;\ |
271 block +=line_size;\ | 250 block +=line_size;\ |
272 }\ | 251 }\ |
273 }\ | 252 }\ |
274 \ | 253 \ |
275 static void OPNAME ## _pixels_x2(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ | 254 static void OPNAME ## _pixels_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ |
276 {\ | 255 {\ |
277 int i;\ | 256 int i;\ |
278 for(i=0; i<h; i++){\ | 257 for(i=0; i<h; i++){\ |
279 const uint64_t a= LD64(pixels );\ | 258 const uint64_t a= LD64(pixels );\ |
280 const uint64_t b= LD64(pixels+1);\ | 259 const uint64_t b= LD64(pixels+1);\ |
282 pixels+=line_size;\ | 261 pixels+=line_size;\ |
283 block +=line_size;\ | 262 block +=line_size;\ |
284 }\ | 263 }\ |
285 }\ | 264 }\ |
286 \ | 265 \ |
287 static void OPNAME ## _no_rnd_pixels_y2(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ | 266 static void OPNAME ## _no_rnd_pixels_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ |
288 {\ | 267 {\ |
289 int i;\ | 268 int i;\ |
290 for(i=0; i<h; i++){\ | 269 for(i=0; i<h; i++){\ |
291 const uint64_t a= LD64(pixels );\ | 270 const uint64_t a= LD64(pixels );\ |
292 const uint64_t b= LD64(pixels+line_size);\ | 271 const uint64_t b= LD64(pixels+line_size);\ |
294 pixels+=line_size;\ | 273 pixels+=line_size;\ |
295 block +=line_size;\ | 274 block +=line_size;\ |
296 }\ | 275 }\ |
297 }\ | 276 }\ |
298 \ | 277 \ |
299 static void OPNAME ## _pixels_y2(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ | 278 static void OPNAME ## _pixels_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ |
300 {\ | 279 {\ |
301 int i;\ | 280 int i;\ |
302 for(i=0; i<h; i++){\ | 281 for(i=0; i<h; i++){\ |
303 const uint64_t a= LD64(pixels );\ | 282 const uint64_t a= LD64(pixels );\ |
304 const uint64_t b= LD64(pixels+line_size);\ | 283 const uint64_t b= LD64(pixels+line_size);\ |
306 pixels+=line_size;\ | 285 pixels+=line_size;\ |
307 block +=line_size;\ | 286 block +=line_size;\ |
308 }\ | 287 }\ |
309 }\ | 288 }\ |
310 \ | 289 \ |
311 static void OPNAME ## _pixels_xy2(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ | 290 static void OPNAME ## _pixels_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ |
312 {\ | 291 {\ |
313 int i;\ | 292 int i;\ |
314 const uint64_t a= LD64(pixels );\ | 293 const uint64_t a= LD64(pixels );\ |
315 const uint64_t b= LD64(pixels+1);\ | 294 const uint64_t b= LD64(pixels+1);\ |
316 uint64_t l0= (a&0x0303030303030303ULL)\ | 295 uint64_t l0= (a&0x0303030303030303ULL)\ |
342 pixels+=line_size;\ | 321 pixels+=line_size;\ |
343 block +=line_size;\ | 322 block +=line_size;\ |
344 }\ | 323 }\ |
345 }\ | 324 }\ |
346 \ | 325 \ |
347 static void OPNAME ## _no_rnd_pixels_xy2(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ | 326 static void OPNAME ## _no_rnd_pixels_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ |
348 {\ | 327 {\ |
349 int i;\ | 328 int i;\ |
350 const uint64_t a= LD64(pixels );\ | 329 const uint64_t a= LD64(pixels );\ |
351 const uint64_t b= LD64(pixels+1);\ | 330 const uint64_t b= LD64(pixels+1);\ |
352 uint64_t l0= (a&0x0303030303030303ULL)\ | 331 uint64_t l0= (a&0x0303030303030303ULL)\ |
378 pixels+=line_size;\ | 357 pixels+=line_size;\ |
379 block +=line_size;\ | 358 block +=line_size;\ |
380 }\ | 359 }\ |
381 }\ | 360 }\ |
382 \ | 361 \ |
383 CALL_2X_PIXELS(OPNAME ## _pixels16 , OPNAME ## _pixels , 8)\ | 362 CALL_2X_PIXELS(OPNAME ## _pixels16_c , OPNAME ## _pixels_c , 8)\ |
384 CALL_2X_PIXELS(OPNAME ## _pixels16_x2 , OPNAME ## _pixels_x2 , 8)\ | 363 CALL_2X_PIXELS(OPNAME ## _pixels16_x2_c , OPNAME ## _pixels_x2_c , 8)\ |
385 CALL_2X_PIXELS(OPNAME ## _pixels16_y2 , OPNAME ## _pixels_y2 , 8)\ | 364 CALL_2X_PIXELS(OPNAME ## _pixels16_y2_c , OPNAME ## _pixels_y2_c , 8)\ |
386 CALL_2X_PIXELS(OPNAME ## _pixels16_xy2, OPNAME ## _pixels_xy2, 8)\ | 365 CALL_2X_PIXELS(OPNAME ## _pixels16_xy2_c, OPNAME ## _pixels_xy2_c, 8)\ |
387 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_x2 , OPNAME ## _no_rnd_pixels_x2 , 8)\ | 366 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_x2_c , OPNAME ## _no_rnd_pixels_x2_c , 8)\ |
388 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_y2 , OPNAME ## _no_rnd_pixels_y2 , 8)\ | 367 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_y2_c , OPNAME ## _no_rnd_pixels_y2_c , 8)\ |
389 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_xy2, OPNAME ## _no_rnd_pixels_xy2, 8)\ | 368 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_xy2_c, OPNAME ## _no_rnd_pixels_xy2_c, 8) |
390 \ | |
391 void (*OPNAME ## _pixels_tab[2][4])(uint8_t *block, const uint8_t *pixels, int line_size, int h) = {\ | |
392 {\ | |
393 OPNAME ## _pixels,\ | |
394 OPNAME ## _pixels_x2,\ | |
395 OPNAME ## _pixels_y2,\ | |
396 OPNAME ## _pixels_xy2},\ | |
397 {\ | |
398 OPNAME ## _pixels16,\ | |
399 OPNAME ## _pixels16_x2,\ | |
400 OPNAME ## _pixels16_y2,\ | |
401 OPNAME ## _pixels16_xy2}\ | |
402 };\ | |
403 \ | |
404 void (*OPNAME ## _no_rnd_pixels_tab[2][4])(uint8_t *block, const uint8_t *pixels, int line_size, int h) = {\ | |
405 {\ | |
406 OPNAME ## _pixels,\ | |
407 OPNAME ## _no_rnd_pixels_x2,\ | |
408 OPNAME ## _no_rnd_pixels_y2,\ | |
409 OPNAME ## _no_rnd_pixels_xy2},\ | |
410 {\ | |
411 OPNAME ## _pixels16,\ | |
412 OPNAME ## _no_rnd_pixels16_x2,\ | |
413 OPNAME ## _no_rnd_pixels16_y2,\ | |
414 OPNAME ## _no_rnd_pixels16_xy2}\ | |
415 }; | |
416 | 369 |
417 #define op_avg(a, b) a = ( ((a)|(b)) - ((((a)^(b))&0xFEFEFEFEFEFEFEFEULL)>>1) ) | 370 #define op_avg(a, b) a = ( ((a)|(b)) - ((((a)^(b))&0xFEFEFEFEFEFEFEFEULL)>>1) ) |
418 #else // 64 bit variant | 371 #else // 64 bit variant |
419 | 372 |
420 #define PIXOP2(OPNAME, OP) \ | 373 #define PIXOP2(OPNAME, OP) \ |
421 static void OPNAME ## _pixels8(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ | 374 static void OPNAME ## _pixels8_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ |
422 int i;\ | 375 int i;\ |
423 for(i=0; i<h; i++){\ | 376 for(i=0; i<h; i++){\ |
424 OP(*((uint32_t*)(block )), LD32(pixels ));\ | 377 OP(*((uint32_t*)(block )), LD32(pixels ));\ |
425 OP(*((uint32_t*)(block+4)), LD32(pixels+4));\ | 378 OP(*((uint32_t*)(block+4)), LD32(pixels+4));\ |
426 pixels+=line_size;\ | 379 pixels+=line_size;\ |
427 block +=line_size;\ | 380 block +=line_size;\ |
428 }\ | 381 }\ |
429 }\ | 382 }\ |
430 static inline void OPNAME ## _no_rnd_pixels8(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ | 383 static inline void OPNAME ## _no_rnd_pixels8_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ |
431 OPNAME ## _pixels8(block, pixels, line_size, h);\ | 384 OPNAME ## _pixels8_c(block, pixels, line_size, h);\ |
432 }\ | 385 }\ |
433 \ | 386 \ |
434 static inline void OPNAME ## _no_rnd_pixels8_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \ | 387 static inline void OPNAME ## _no_rnd_pixels8_l2(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, \ |
435 int src_stride1, int src_stride2, int h){\ | 388 int src_stride1, int src_stride2, int h){\ |
436 int i;\ | 389 int i;\ |
469 int src_stride1, int src_stride2, int h){\ | 422 int src_stride1, int src_stride2, int h){\ |
470 OPNAME ## _no_rnd_pixels8_l2(dst , src1 , src2 , dst_stride, src_stride1, src_stride2, h);\ | 423 OPNAME ## _no_rnd_pixels8_l2(dst , src1 , src2 , dst_stride, src_stride1, src_stride2, h);\ |
471 OPNAME ## _no_rnd_pixels8_l2(dst+8, src1+8, src2+8, dst_stride, src_stride1, src_stride2, h);\ | 424 OPNAME ## _no_rnd_pixels8_l2(dst+8, src1+8, src2+8, dst_stride, src_stride1, src_stride2, h);\ |
472 }\ | 425 }\ |
473 \ | 426 \ |
474 static inline void OPNAME ## _no_rnd_pixels8_x2(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ | 427 static inline void OPNAME ## _no_rnd_pixels8_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ |
475 OPNAME ## _no_rnd_pixels8_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);\ | 428 OPNAME ## _no_rnd_pixels8_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);\ |
476 }\ | 429 }\ |
477 \ | 430 \ |
478 static inline void OPNAME ## _pixels8_x2(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ | 431 static inline void OPNAME ## _pixels8_x2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ |
479 OPNAME ## _pixels8_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);\ | 432 OPNAME ## _pixels8_l2(block, pixels, pixels+1, line_size, line_size, line_size, h);\ |
480 }\ | 433 }\ |
481 \ | 434 \ |
482 static inline void OPNAME ## _no_rnd_pixels8_y2(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ | 435 static inline void OPNAME ## _no_rnd_pixels8_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ |
483 OPNAME ## _no_rnd_pixels8_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);\ | 436 OPNAME ## _no_rnd_pixels8_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);\ |
484 }\ | 437 }\ |
485 \ | 438 \ |
486 static inline void OPNAME ## _pixels8_y2(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ | 439 static inline void OPNAME ## _pixels8_y2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h){\ |
487 OPNAME ## _pixels8_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);\ | 440 OPNAME ## _pixels8_l2(block, pixels, pixels+line_size, line_size, line_size, line_size, h);\ |
488 }\ | 441 }\ |
489 \ | 442 \ |
490 static inline void OPNAME ## _pixels8_l4(uint8_t *dst, const uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4,\ | 443 static inline void OPNAME ## _pixels8_l4(uint8_t *dst, const uint8_t *src1, uint8_t *src2, uint8_t *src3, uint8_t *src4,\ |
491 int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){\ | 444 int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){\ |
566 int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){\ | 519 int dst_stride, int src_stride1, int src_stride2,int src_stride3,int src_stride4, int h){\ |
567 OPNAME ## _no_rnd_pixels8_l4(dst , src1 , src2 , src3 , src4 , dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h);\ | 520 OPNAME ## _no_rnd_pixels8_l4(dst , src1 , src2 , src3 , src4 , dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h);\ |
568 OPNAME ## _no_rnd_pixels8_l4(dst+8, src1+8, src2+8, src3+8, src4+8, dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h);\ | 521 OPNAME ## _no_rnd_pixels8_l4(dst+8, src1+8, src2+8, src3+8, src4+8, dst_stride, src_stride1, src_stride2, src_stride3, src_stride4, h);\ |
569 }\ | 522 }\ |
570 \ | 523 \ |
571 static inline void OPNAME ## _pixels8_xy2(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ | 524 static inline void OPNAME ## _pixels8_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ |
572 {\ | 525 {\ |
573 int j;\ | 526 int j;\ |
574 for(j=0; j<2; j++){\ | 527 for(j=0; j<2; j++){\ |
575 int i;\ | 528 int i;\ |
576 const uint32_t a= LD32(pixels );\ | 529 const uint32_t a= LD32(pixels );\ |
607 pixels+=4-line_size*(h+1);\ | 560 pixels+=4-line_size*(h+1);\ |
608 block +=4-line_size*h;\ | 561 block +=4-line_size*h;\ |
609 }\ | 562 }\ |
610 }\ | 563 }\ |
611 \ | 564 \ |
612 static inline void OPNAME ## _no_rnd_pixels8_xy2(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ | 565 static inline void OPNAME ## _no_rnd_pixels8_xy2_c(uint8_t *block, const uint8_t *pixels, int line_size, int h)\ |
613 {\ | 566 {\ |
614 int j;\ | 567 int j;\ |
615 for(j=0; j<2; j++){\ | 568 for(j=0; j<2; j++){\ |
616 int i;\ | 569 int i;\ |
617 const uint32_t a= LD32(pixels );\ | 570 const uint32_t a= LD32(pixels );\ |
648 pixels+=4-line_size*(h+1);\ | 601 pixels+=4-line_size*(h+1);\ |
649 block +=4-line_size*h;\ | 602 block +=4-line_size*h;\ |
650 }\ | 603 }\ |
651 }\ | 604 }\ |
652 \ | 605 \ |
653 CALL_2X_PIXELS(OPNAME ## _pixels16 , OPNAME ## _pixels8 , 8)\ | 606 CALL_2X_PIXELS(OPNAME ## _pixels16_c , OPNAME ## _pixels8_c , 8)\ |
654 CALL_2X_PIXELS(OPNAME ## _pixels16_x2 , OPNAME ## _pixels8_x2 , 8)\ | 607 CALL_2X_PIXELS(OPNAME ## _pixels16_x2_c , OPNAME ## _pixels8_x2_c , 8)\ |
655 CALL_2X_PIXELS(OPNAME ## _pixels16_y2 , OPNAME ## _pixels8_y2 , 8)\ | 608 CALL_2X_PIXELS(OPNAME ## _pixels16_y2_c , OPNAME ## _pixels8_y2_c , 8)\ |
656 CALL_2X_PIXELS(OPNAME ## _pixels16_xy2, OPNAME ## _pixels8_xy2, 8)\ | 609 CALL_2X_PIXELS(OPNAME ## _pixels16_xy2_c, OPNAME ## _pixels8_xy2_c, 8)\ |
657 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16 , OPNAME ## _pixels8 , 8)\ | 610 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_c , OPNAME ## _pixels8_c , 8)\ |
658 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_x2 , OPNAME ## _no_rnd_pixels8_x2 , 8)\ | 611 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_x2_c , OPNAME ## _no_rnd_pixels8_x2_c , 8)\ |
659 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_y2 , OPNAME ## _no_rnd_pixels8_y2 , 8)\ | 612 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_y2_c , OPNAME ## _no_rnd_pixels8_y2_c , 8)\ |
660 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_xy2, OPNAME ## _no_rnd_pixels8_xy2, 8)\ | 613 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_xy2_c, OPNAME ## _no_rnd_pixels8_xy2_c, 8)\ |
661 \ | |
662 void (*OPNAME ## _pixels_tab[2][4])(uint8_t *block, const uint8_t *pixels, int line_size, int h) = {\ | |
663 {\ | |
664 OPNAME ## _pixels16,\ | |
665 OPNAME ## _pixels16_x2,\ | |
666 OPNAME ## _pixels16_y2,\ | |
667 OPNAME ## _pixels16_xy2},\ | |
668 {\ | |
669 OPNAME ## _pixels8,\ | |
670 OPNAME ## _pixels8_x2,\ | |
671 OPNAME ## _pixels8_y2,\ | |
672 OPNAME ## _pixels8_xy2},\ | |
673 };\ | |
674 \ | |
675 void (*OPNAME ## _no_rnd_pixels_tab[2][4])(uint8_t *block, const uint8_t *pixels, int line_size, int h) = {\ | |
676 {\ | |
677 OPNAME ## _pixels16,\ | |
678 OPNAME ## _no_rnd_pixels16_x2,\ | |
679 OPNAME ## _no_rnd_pixels16_y2,\ | |
680 OPNAME ## _no_rnd_pixels16_xy2},\ | |
681 {\ | |
682 OPNAME ## _pixels8,\ | |
683 OPNAME ## _no_rnd_pixels8_x2,\ | |
684 OPNAME ## _no_rnd_pixels8_y2,\ | |
685 OPNAME ## _no_rnd_pixels8_xy2},\ | |
686 }; | |
687 | 614 |
688 #define op_avg(a, b) a = ( ((a)|(b)) - ((((a)^(b))&0xFEFEFEFEUL)>>1) ) | 615 #define op_avg(a, b) a = ( ((a)|(b)) - ((((a)^(b))&0xFEFEFEFEUL)>>1) ) |
689 #endif | 616 #endif |
690 #define op_put(a, b) a = b | 617 #define op_put(a, b) a = b |
691 | 618 |
692 PIXOP2(avg, op_avg) | 619 PIXOP2(avg, op_avg) |
693 PIXOP2(put, op_put) | 620 PIXOP2(put, op_put) |
694 #undef op_avg | 621 #undef op_avg |
695 #undef op_put | 622 #undef op_put |
696 | |
697 #if 0 | |
698 /* FIXME this stuff could be removed as its ot really used anymore */ | |
699 #define PIXOP(BTYPE, OPNAME, OP, INCR) \ | |
700 \ | |
701 static void OPNAME ## _pixels(BTYPE *block, const UINT8 *pixels, int line_size, int h) \ | |
702 { \ | |
703 BTYPE *p; \ | |
704 const UINT8 *pix; \ | |
705 \ | |
706 p = block; \ | |
707 pix = pixels; \ | |
708 do { \ | |
709 OP(p[0], pix[0]); \ | |
710 OP(p[1], pix[1]); \ | |
711 OP(p[2], pix[2]); \ | |
712 OP(p[3], pix[3]); \ | |
713 OP(p[4], pix[4]); \ | |
714 OP(p[5], pix[5]); \ | |
715 OP(p[6], pix[6]); \ | |
716 OP(p[7], pix[7]); \ | |
717 pix += line_size; \ | |
718 p += INCR; \ | |
719 } while (--h);; \ | |
720 } \ | |
721 \ | |
722 static void OPNAME ## _pixels_x2(BTYPE *block, const UINT8 *pixels, int line_size, int h) \ | |
723 { \ | |
724 BTYPE *p; \ | |
725 const UINT8 *pix; \ | |
726 \ | |
727 p = block; \ | |
728 pix = pixels; \ | |
729 do { \ | |
730 OP(p[0], avg2(pix[0], pix[1])); \ | |
731 OP(p[1], avg2(pix[1], pix[2])); \ | |
732 OP(p[2], avg2(pix[2], pix[3])); \ | |
733 OP(p[3], avg2(pix[3], pix[4])); \ | |
734 OP(p[4], avg2(pix[4], pix[5])); \ | |
735 OP(p[5], avg2(pix[5], pix[6])); \ | |
736 OP(p[6], avg2(pix[6], pix[7])); \ | |
737 OP(p[7], avg2(pix[7], pix[8])); \ | |
738 pix += line_size; \ | |
739 p += INCR; \ | |
740 } while (--h); \ | |
741 } \ | |
742 \ | |
743 static void OPNAME ## _pixels_y2(BTYPE *block, const UINT8 *pixels, int line_size, int h) \ | |
744 { \ | |
745 BTYPE *p; \ | |
746 const UINT8 *pix; \ | |
747 const UINT8 *pix1; \ | |
748 \ | |
749 p = block; \ | |
750 pix = pixels; \ | |
751 pix1 = pixels + line_size; \ | |
752 do { \ | |
753 OP(p[0], avg2(pix[0], pix1[0])); \ | |
754 OP(p[1], avg2(pix[1], pix1[1])); \ | |
755 OP(p[2], avg2(pix[2], pix1[2])); \ | |
756 OP(p[3], avg2(pix[3], pix1[3])); \ | |
757 OP(p[4], avg2(pix[4], pix1[4])); \ | |
758 OP(p[5], avg2(pix[5], pix1[5])); \ | |
759 OP(p[6], avg2(pix[6], pix1[6])); \ | |
760 OP(p[7], avg2(pix[7], pix1[7])); \ | |
761 pix += line_size; \ | |
762 pix1 += line_size; \ | |
763 p += INCR; \ | |
764 } while(--h); \ | |
765 } \ | |
766 \ | |
767 static void OPNAME ## _pixels_xy2(BTYPE *block, const UINT8 *pixels, int line_size, int h) \ | |
768 { \ | |
769 BTYPE *p; \ | |
770 const UINT8 *pix; \ | |
771 const UINT8 *pix1; \ | |
772 \ | |
773 p = block; \ | |
774 pix = pixels; \ | |
775 pix1 = pixels + line_size; \ | |
776 do { \ | |
777 OP(p[0], avg4(pix[0], pix[1], pix1[0], pix1[1])); \ | |
778 OP(p[1], avg4(pix[1], pix[2], pix1[1], pix1[2])); \ | |
779 OP(p[2], avg4(pix[2], pix[3], pix1[2], pix1[3])); \ | |
780 OP(p[3], avg4(pix[3], pix[4], pix1[3], pix1[4])); \ | |
781 OP(p[4], avg4(pix[4], pix[5], pix1[4], pix1[5])); \ | |
782 OP(p[5], avg4(pix[5], pix[6], pix1[5], pix1[6])); \ | |
783 OP(p[6], avg4(pix[6], pix[7], pix1[6], pix1[7])); \ | |
784 OP(p[7], avg4(pix[7], pix[8], pix1[7], pix1[8])); \ | |
785 pix += line_size; \ | |
786 pix1 += line_size; \ | |
787 p += INCR; \ | |
788 } while(--h); \ | |
789 } \ | |
790 \ | |
791 void (*OPNAME ## _pixels_tab[4])(BTYPE *block, const UINT8 *pixels, int line_size, int h) = { \ | |
792 OPNAME ## _pixels, \ | |
793 OPNAME ## _pixels_x2, \ | |
794 OPNAME ## _pixels_y2, \ | |
795 OPNAME ## _pixels_xy2, \ | |
796 }; | |
797 | |
798 /* rounding primitives */ | |
799 #define avg2(a,b) ((a+b+1)>>1) | |
800 #define avg4(a,b,c,d) ((a+b+c+d+2)>>2) | |
801 | |
802 #define op_avg(a, b) a = avg2(a, b) | |
803 #define op_sub(a, b) a -= b | |
804 #define op_put(a, b) a = b | |
805 | |
806 PIXOP(DCTELEM, sub, op_sub, 8) | |
807 PIXOP(uint8_t, avg, op_avg, line_size) | |
808 PIXOP(uint8_t, put, op_put, line_size) | |
809 | |
810 /* not rounding primitives */ | |
811 #undef avg2 | |
812 #undef avg4 | |
813 #define avg2(a,b) ((a+b)>>1) | |
814 #define avg4(a,b,c,d) ((a+b+c+d+1)>>2) | |
815 | |
816 PIXOP(uint8_t, avg_no_rnd, op_avg, line_size) | |
817 PIXOP(uint8_t, put_no_rnd, op_put, line_size) | |
818 /* motion estimation */ | |
819 | |
820 #undef avg2 | |
821 #undef avg4 | |
822 #endif | |
823 | 623 |
824 #define avg2(a,b) ((a+b+1)>>1) | 624 #define avg2(a,b) ((a+b+1)>>1) |
825 #define avg4(a,b,c,d) ((a+b+c+d+2)>>2) | 625 #define avg4(a,b,c,d) ((a+b+c+d+2)>>2) |
826 | 626 |
827 | 627 |
1048 src++;\ | 848 src++;\ |
1049 }\ | 849 }\ |
1050 }\ | 850 }\ |
1051 \ | 851 \ |
1052 static void OPNAME ## qpel8_mc00_c (UINT8 *dst, UINT8 *src, int stride){\ | 852 static void OPNAME ## qpel8_mc00_c (UINT8 *dst, UINT8 *src, int stride){\ |
1053 OPNAME ## pixels8(dst, src, stride, 8);\ | 853 OPNAME ## pixels8_c(dst, src, stride, 8);\ |
1054 }\ | 854 }\ |
1055 \ | 855 \ |
1056 static void OPNAME ## qpel8_mc10_c(UINT8 *dst, UINT8 *src, int stride){\ | 856 static void OPNAME ## qpel8_mc10_c(UINT8 *dst, UINT8 *src, int stride){\ |
1057 UINT8 half[64];\ | 857 UINT8 half[64];\ |
1058 put ## RND ## mpeg4_qpel8_h_lowpass(half, src, 8, stride, 8);\ | 858 put ## RND ## mpeg4_qpel8_h_lowpass(half, src, 8, stride, 8);\ |
1174 UINT8 halfH[72];\ | 974 UINT8 halfH[72];\ |
1175 put ## RND ## mpeg4_qpel8_h_lowpass(halfH, src, 8, stride, 9);\ | 975 put ## RND ## mpeg4_qpel8_h_lowpass(halfH, src, 8, stride, 9);\ |
1176 OPNAME ## mpeg4_qpel8_v_lowpass(dst, halfH, stride, 8, 8);\ | 976 OPNAME ## mpeg4_qpel8_v_lowpass(dst, halfH, stride, 8, 8);\ |
1177 }\ | 977 }\ |
1178 static void OPNAME ## qpel16_mc00_c (UINT8 *dst, UINT8 *src, int stride){\ | 978 static void OPNAME ## qpel16_mc00_c (UINT8 *dst, UINT8 *src, int stride){\ |
1179 OPNAME ## pixels16(dst, src, stride, 16);\ | 979 OPNAME ## pixels16_c(dst, src, stride, 16);\ |
1180 }\ | 980 }\ |
1181 \ | 981 \ |
1182 static void OPNAME ## qpel16_mc10_c(UINT8 *dst, UINT8 *src, int stride){\ | 982 static void OPNAME ## qpel16_mc10_c(UINT8 *dst, UINT8 *src, int stride){\ |
1183 UINT8 half[256];\ | 983 UINT8 half[256];\ |
1184 put ## RND ## mpeg4_qpel16_h_lowpass(half, src, 16, stride, 16);\ | 984 put ## RND ## mpeg4_qpel16_h_lowpass(half, src, 16, stride, 16);\ |
1298 }\ | 1098 }\ |
1299 static void OPNAME ## qpel16_mc22_c(UINT8 *dst, UINT8 *src, int stride){\ | 1099 static void OPNAME ## qpel16_mc22_c(UINT8 *dst, UINT8 *src, int stride){\ |
1300 UINT8 halfH[272];\ | 1100 UINT8 halfH[272];\ |
1301 put ## RND ## mpeg4_qpel16_h_lowpass(halfH, src, 16, stride, 17);\ | 1101 put ## RND ## mpeg4_qpel16_h_lowpass(halfH, src, 16, stride, 17);\ |
1302 OPNAME ## mpeg4_qpel16_v_lowpass(dst, halfH, stride, 16, 16);\ | 1102 OPNAME ## mpeg4_qpel16_v_lowpass(dst, halfH, stride, 16, 16);\ |
1303 }\ | 1103 } |
1304 qpel_mc_func OPNAME ## qpel_pixels_tab[2][16]={ \ | |
1305 {\ | |
1306 OPNAME ## qpel16_mc00_c, \ | |
1307 OPNAME ## qpel16_mc10_c, \ | |
1308 OPNAME ## qpel16_mc20_c, \ | |
1309 OPNAME ## qpel16_mc30_c, \ | |
1310 OPNAME ## qpel16_mc01_c, \ | |
1311 OPNAME ## qpel16_mc11_c, \ | |
1312 OPNAME ## qpel16_mc21_c, \ | |
1313 OPNAME ## qpel16_mc31_c, \ | |
1314 OPNAME ## qpel16_mc02_c, \ | |
1315 OPNAME ## qpel16_mc12_c, \ | |
1316 OPNAME ## qpel16_mc22_c, \ | |
1317 OPNAME ## qpel16_mc32_c, \ | |
1318 OPNAME ## qpel16_mc03_c, \ | |
1319 OPNAME ## qpel16_mc13_c, \ | |
1320 OPNAME ## qpel16_mc23_c, \ | |
1321 OPNAME ## qpel16_mc33_c, \ | |
1322 },{\ | |
1323 OPNAME ## qpel8_mc00_c, \ | |
1324 OPNAME ## qpel8_mc10_c, \ | |
1325 OPNAME ## qpel8_mc20_c, \ | |
1326 OPNAME ## qpel8_mc30_c, \ | |
1327 OPNAME ## qpel8_mc01_c, \ | |
1328 OPNAME ## qpel8_mc11_c, \ | |
1329 OPNAME ## qpel8_mc21_c, \ | |
1330 OPNAME ## qpel8_mc31_c, \ | |
1331 OPNAME ## qpel8_mc02_c, \ | |
1332 OPNAME ## qpel8_mc12_c, \ | |
1333 OPNAME ## qpel8_mc22_c, \ | |
1334 OPNAME ## qpel8_mc32_c, \ | |
1335 OPNAME ## qpel8_mc03_c, \ | |
1336 OPNAME ## qpel8_mc13_c, \ | |
1337 OPNAME ## qpel8_mc23_c, \ | |
1338 OPNAME ## qpel8_mc33_c, \ | |
1339 }\ | |
1340 }; | |
1341 | 1104 |
1342 #define op_avg(a, b) a = (((a)+cm[((b) + 16)>>5]+1)>>1) | 1105 #define op_avg(a, b) a = (((a)+cm[((b) + 16)>>5]+1)>>1) |
1343 #define op_avg_no_rnd(a, b) a = (((a)+cm[((b) + 15)>>5])>>1) | 1106 #define op_avg_no_rnd(a, b) a = (((a)+cm[((b) + 15)>>5])>>1) |
1344 #define op_put(a, b) a = cm[((b) + 16)>>5] | 1107 #define op_put(a, b) a = cm[((b) + 16)>>5] |
1345 #define op_put_no_rnd(a, b) a = cm[((b) + 15)>>5] | 1108 #define op_put_no_rnd(a, b) a = cm[((b) + 15)>>5] |
1601 c->gmc = gmc_c; | 1364 c->gmc = gmc_c; |
1602 c->clear_blocks = clear_blocks_c; | 1365 c->clear_blocks = clear_blocks_c; |
1603 c->pix_sum = pix_sum_c; | 1366 c->pix_sum = pix_sum_c; |
1604 c->pix_norm1 = pix_norm1_c; | 1367 c->pix_norm1 = pix_norm1_c; |
1605 | 1368 |
1369 /* TODO [0] 16 [1] 8 */ | |
1606 c->pix_abs16x16 = pix_abs16x16_c; | 1370 c->pix_abs16x16 = pix_abs16x16_c; |
1607 c->pix_abs16x16_x2 = pix_abs16x16_x2_c; | 1371 c->pix_abs16x16_x2 = pix_abs16x16_x2_c; |
1608 c->pix_abs16x16_y2 = pix_abs16x16_y2_c; | 1372 c->pix_abs16x16_y2 = pix_abs16x16_y2_c; |
1609 c->pix_abs16x16_xy2 = pix_abs16x16_xy2_c; | 1373 c->pix_abs16x16_xy2 = pix_abs16x16_xy2_c; |
1610 c->pix_abs8x8 = pix_abs8x8_c; | 1374 c->pix_abs8x8 = pix_abs8x8_c; |
1611 c->pix_abs8x8_x2 = pix_abs8x8_x2_c; | 1375 c->pix_abs8x8_x2 = pix_abs8x8_x2_c; |
1612 c->pix_abs8x8_y2 = pix_abs8x8_y2_c; | 1376 c->pix_abs8x8_y2 = pix_abs8x8_y2_c; |
1613 c->pix_abs8x8_xy2 = pix_abs8x8_xy2_c; | 1377 c->pix_abs8x8_xy2 = pix_abs8x8_xy2_c; |
1614 | 1378 |
1615 c->put_pixels_tab[0][0] = put_pixels16; | 1379 #define dspfunc(PFX, IDX, NUM) \ |
1616 c->put_pixels_tab[0][1] = put_pixels16_x2; | 1380 c->PFX ## _pixels_tab[IDX][0] = PFX ## _pixels ## NUM ## _c; \ |
1617 c->put_pixels_tab[0][2] = put_pixels16_y2; | 1381 c->PFX ## _pixels_tab[IDX][1] = PFX ## _pixels ## NUM ## _x2_c; \ |
1618 c->put_pixels_tab[0][3] = put_pixels16_xy2; | 1382 c->PFX ## _pixels_tab[IDX][2] = PFX ## _pixels ## NUM ## _y2_c; \ |
1619 | 1383 c->PFX ## _pixels_tab[IDX][3] = PFX ## _pixels ## NUM ## _xy2_c |
1620 c->put_no_rnd_pixels_tab[0][0] = put_pixels16; | 1384 |
1621 c->put_no_rnd_pixels_tab[0][1] = put_no_rnd_pixels16_x2; | 1385 dspfunc(put, 0, 16); |
1622 c->put_no_rnd_pixels_tab[0][2] = put_no_rnd_pixels16_y2; | 1386 dspfunc(put_no_rnd, 0, 16); |
1623 c->put_no_rnd_pixels_tab[0][3] = put_no_rnd_pixels16_xy2; | 1387 dspfunc(put, 1, 8); |
1624 | 1388 dspfunc(put_no_rnd, 1, 8); |
1625 c->avg_pixels_tab[0][0] = avg_pixels16; | 1389 |
1626 c->avg_pixels_tab[0][1] = avg_pixels16_x2; | 1390 dspfunc(avg, 0, 16); |
1627 c->avg_pixels_tab[0][2] = avg_pixels16_y2; | 1391 dspfunc(avg_no_rnd, 0, 16); |
1628 c->avg_pixels_tab[0][3] = avg_pixels16_xy2; | 1392 dspfunc(avg, 1, 8); |
1629 | 1393 dspfunc(avg_no_rnd, 1, 8); |
1630 c->avg_no_rnd_pixels_tab[0][0] = avg_no_rnd_pixels16; | 1394 #undef dspfunc |
1631 c->avg_no_rnd_pixels_tab[0][1] = avg_no_rnd_pixels16_x2; | 1395 |
1632 c->avg_no_rnd_pixels_tab[0][2] = avg_no_rnd_pixels16_y2; | 1396 #define dspfunc(PFX, IDX, NUM) \ |
1633 c->avg_no_rnd_pixels_tab[0][3] = avg_no_rnd_pixels16_xy2; | 1397 c->PFX ## _pixels_tab[IDX][ 0] = PFX ## NUM ## _mc00_c; \ |
1634 | 1398 c->PFX ## _pixels_tab[IDX][ 1] = PFX ## NUM ## _mc10_c; \ |
1635 c->put_pixels_tab[1][0] = put_pixels8; | 1399 c->PFX ## _pixels_tab[IDX][ 2] = PFX ## NUM ## _mc20_c; \ |
1636 c->put_pixels_tab[1][1] = put_pixels8_x2; | 1400 c->PFX ## _pixels_tab[IDX][ 3] = PFX ## NUM ## _mc30_c; \ |
1637 c->put_pixels_tab[1][2] = put_pixels8_y2; | 1401 c->PFX ## _pixels_tab[IDX][ 4] = PFX ## NUM ## _mc01_c; \ |
1638 c->put_pixels_tab[1][3] = put_pixels8_xy2; | 1402 c->PFX ## _pixels_tab[IDX][ 5] = PFX ## NUM ## _mc11_c; \ |
1639 | 1403 c->PFX ## _pixels_tab[IDX][ 6] = PFX ## NUM ## _mc21_c; \ |
1640 c->put_no_rnd_pixels_tab[1][0] = put_pixels8; | 1404 c->PFX ## _pixels_tab[IDX][ 7] = PFX ## NUM ## _mc31_c; \ |
1641 c->put_no_rnd_pixels_tab[1][1] = put_no_rnd_pixels8_x2; | 1405 c->PFX ## _pixels_tab[IDX][ 8] = PFX ## NUM ## _mc02_c; \ |
1642 c->put_no_rnd_pixels_tab[1][2] = put_no_rnd_pixels8_y2; | 1406 c->PFX ## _pixels_tab[IDX][ 9] = PFX ## NUM ## _mc12_c; \ |
1643 c->put_no_rnd_pixels_tab[1][3] = put_no_rnd_pixels8_xy2; | 1407 c->PFX ## _pixels_tab[IDX][10] = PFX ## NUM ## _mc22_c; \ |
1644 | 1408 c->PFX ## _pixels_tab[IDX][11] = PFX ## NUM ## _mc32_c; \ |
1645 c->avg_pixels_tab[1][0] = avg_pixels8; | 1409 c->PFX ## _pixels_tab[IDX][12] = PFX ## NUM ## _mc03_c; \ |
1646 c->avg_pixels_tab[1][1] = avg_pixels8_x2; | 1410 c->PFX ## _pixels_tab[IDX][13] = PFX ## NUM ## _mc13_c; \ |
1647 c->avg_pixels_tab[1][2] = avg_pixels8_y2; | 1411 c->PFX ## _pixels_tab[IDX][14] = PFX ## NUM ## _mc23_c; \ |
1648 c->avg_pixels_tab[1][3] = avg_pixels8_xy2; | 1412 c->PFX ## _pixels_tab[IDX][15] = PFX ## NUM ## _mc33_c |
1649 | 1413 |
1650 c->avg_no_rnd_pixels_tab[1][0] = avg_no_rnd_pixels8; | 1414 dspfunc(put_qpel, 0, 16); |
1651 c->avg_no_rnd_pixels_tab[1][1] = avg_no_rnd_pixels8_x2; | 1415 dspfunc(put_no_rnd_qpel, 0, 16); |
1652 c->avg_no_rnd_pixels_tab[1][2] = avg_no_rnd_pixels8_y2; | 1416 |
1653 c->avg_no_rnd_pixels_tab[1][3] = avg_no_rnd_pixels8_xy2; | 1417 dspfunc(avg_qpel, 0, 16); |
1654 | 1418 /* dspfunc(avg_no_rnd_qpel, 0, 16); */ |
1655 c->put_qpel_pixels_tab[0][ 0]= put_qpel16_mc00_c; | 1419 |
1656 c->put_qpel_pixels_tab[0][ 1]= put_qpel16_mc10_c; | 1420 dspfunc(put_qpel, 1, 8); |
1657 c->put_qpel_pixels_tab[0][ 2]= put_qpel16_mc20_c; | 1421 dspfunc(put_no_rnd_qpel, 1, 8); |
1658 c->put_qpel_pixels_tab[0][ 3]= put_qpel16_mc30_c; | 1422 |
1659 c->put_qpel_pixels_tab[0][ 4]= put_qpel16_mc01_c; | 1423 dspfunc(avg_qpel, 1, 8); |
1660 c->put_qpel_pixels_tab[0][ 5]= put_qpel16_mc11_c; | 1424 /* dspfunc(avg_no_rnd_qpel, 1, 8); */ |
1661 c->put_qpel_pixels_tab[0][ 6]= put_qpel16_mc21_c; | 1425 #undef dspfunc |
1662 c->put_qpel_pixels_tab[0][ 7]= put_qpel16_mc31_c; | |
1663 c->put_qpel_pixels_tab[0][ 8]= put_qpel16_mc02_c; | |
1664 c->put_qpel_pixels_tab[0][ 9]= put_qpel16_mc12_c; | |
1665 c->put_qpel_pixels_tab[0][10]= put_qpel16_mc22_c; | |
1666 c->put_qpel_pixels_tab[0][11]= put_qpel16_mc32_c; | |
1667 c->put_qpel_pixels_tab[0][12]= put_qpel16_mc03_c; | |
1668 c->put_qpel_pixels_tab[0][13]= put_qpel16_mc13_c; | |
1669 c->put_qpel_pixels_tab[0][14]= put_qpel16_mc23_c; | |
1670 c->put_qpel_pixels_tab[0][15]= put_qpel16_mc33_c; | |
1671 | |
1672 c->put_no_rnd_qpel_pixels_tab[0][ 0]= put_no_rnd_qpel16_mc00_c; | |
1673 c->put_no_rnd_qpel_pixels_tab[0][ 1]= put_no_rnd_qpel16_mc10_c; | |
1674 c->put_no_rnd_qpel_pixels_tab[0][ 2]= put_no_rnd_qpel16_mc20_c; | |
1675 c->put_no_rnd_qpel_pixels_tab[0][ 3]= put_no_rnd_qpel16_mc30_c; | |
1676 c->put_no_rnd_qpel_pixels_tab[0][ 4]= put_no_rnd_qpel16_mc01_c; | |
1677 c->put_no_rnd_qpel_pixels_tab[0][ 5]= put_no_rnd_qpel16_mc11_c; | |
1678 c->put_no_rnd_qpel_pixels_tab[0][ 6]= put_no_rnd_qpel16_mc21_c; | |
1679 c->put_no_rnd_qpel_pixels_tab[0][ 7]= put_no_rnd_qpel16_mc31_c; | |
1680 c->put_no_rnd_qpel_pixels_tab[0][ 8]= put_no_rnd_qpel16_mc02_c; | |
1681 c->put_no_rnd_qpel_pixels_tab[0][ 9]= put_no_rnd_qpel16_mc12_c; | |
1682 c->put_no_rnd_qpel_pixels_tab[0][10]= put_no_rnd_qpel16_mc22_c; | |
1683 c->put_no_rnd_qpel_pixels_tab[0][11]= put_no_rnd_qpel16_mc32_c; | |
1684 c->put_no_rnd_qpel_pixels_tab[0][12]= put_no_rnd_qpel16_mc03_c; | |
1685 c->put_no_rnd_qpel_pixels_tab[0][13]= put_no_rnd_qpel16_mc13_c; | |
1686 c->put_no_rnd_qpel_pixels_tab[0][14]= put_no_rnd_qpel16_mc23_c; | |
1687 c->put_no_rnd_qpel_pixels_tab[0][15]= put_no_rnd_qpel16_mc33_c; | |
1688 | |
1689 c->avg_qpel_pixels_tab[0][ 0]= avg_qpel16_mc00_c; | |
1690 c->avg_qpel_pixels_tab[0][ 1]= avg_qpel16_mc10_c; | |
1691 c->avg_qpel_pixels_tab[0][ 2]= avg_qpel16_mc20_c; | |
1692 c->avg_qpel_pixels_tab[0][ 3]= avg_qpel16_mc30_c; | |
1693 c->avg_qpel_pixels_tab[0][ 4]= avg_qpel16_mc01_c; | |
1694 c->avg_qpel_pixels_tab[0][ 5]= avg_qpel16_mc11_c; | |
1695 c->avg_qpel_pixels_tab[0][ 6]= avg_qpel16_mc21_c; | |
1696 c->avg_qpel_pixels_tab[0][ 7]= avg_qpel16_mc31_c; | |
1697 c->avg_qpel_pixels_tab[0][ 8]= avg_qpel16_mc02_c; | |
1698 c->avg_qpel_pixels_tab[0][ 9]= avg_qpel16_mc12_c; | |
1699 c->avg_qpel_pixels_tab[0][10]= avg_qpel16_mc22_c; | |
1700 c->avg_qpel_pixels_tab[0][11]= avg_qpel16_mc32_c; | |
1701 c->avg_qpel_pixels_tab[0][12]= avg_qpel16_mc03_c; | |
1702 c->avg_qpel_pixels_tab[0][13]= avg_qpel16_mc13_c; | |
1703 c->avg_qpel_pixels_tab[0][14]= avg_qpel16_mc23_c; | |
1704 c->avg_qpel_pixels_tab[0][15]= avg_qpel16_mc33_c; | |
1705 /* | |
1706 c->avg_no_rnd_qpel_pixels_tab[0][ 0]= avg_no_rnd_qpel16_mc00_c; | |
1707 c->avg_no_rnd_qpel_pixels_tab[0][ 1]= avg_no_rnd_qpel16_mc10_c; | |
1708 c->avg_no_rnd_qpel_pixels_tab[0][ 2]= avg_no_rnd_qpel16_mc20_c; | |
1709 c->avg_no_rnd_qpel_pixels_tab[0][ 3]= avg_no_rnd_qpel16_mc30_c; | |
1710 c->avg_no_rnd_qpel_pixels_tab[0][ 4]= avg_no_rnd_qpel16_mc01_c; | |
1711 c->avg_no_rnd_qpel_pixels_tab[0][ 5]= avg_no_rnd_qpel16_mc11_c; | |
1712 c->avg_no_rnd_qpel_pixels_tab[0][ 6]= avg_no_rnd_qpel16_mc21_c; | |
1713 c->avg_no_rnd_qpel_pixels_tab[0][ 7]= avg_no_rnd_qpel16_mc31_c; | |
1714 c->avg_no_rnd_qpel_pixels_tab[0][ 8]= avg_no_rnd_qpel16_mc02_c; | |
1715 c->avg_no_rnd_qpel_pixels_tab[0][ 9]= avg_no_rnd_qpel16_mc12_c; | |
1716 c->avg_no_rnd_qpel_pixels_tab[0][10]= avg_no_rnd_qpel16_mc22_c; | |
1717 c->avg_no_rnd_qpel_pixels_tab[0][11]= avg_no_rnd_qpel16_mc32_c; | |
1718 c->avg_no_rnd_qpel_pixels_tab[0][12]= avg_no_rnd_qpel16_mc03_c; | |
1719 c->avg_no_rnd_qpel_pixels_tab[0][13]= avg_no_rnd_qpel16_mc13_c; | |
1720 c->avg_no_rnd_qpel_pixels_tab[0][14]= avg_no_rnd_qpel16_mc23_c; | |
1721 c->avg_no_rnd_qpel_pixels_tab[0][15]= avg_no_rnd_qpel16_mc33_c; | |
1722 */ | |
1723 | |
1724 c->put_qpel_pixels_tab[1][ 0]= put_qpel8_mc00_c; | |
1725 c->put_qpel_pixels_tab[1][ 1]= put_qpel8_mc10_c; | |
1726 c->put_qpel_pixels_tab[1][ 2]= put_qpel8_mc20_c; | |
1727 c->put_qpel_pixels_tab[1][ 3]= put_qpel8_mc30_c; | |
1728 c->put_qpel_pixels_tab[1][ 4]= put_qpel8_mc01_c; | |
1729 c->put_qpel_pixels_tab[1][ 5]= put_qpel8_mc11_c; | |
1730 c->put_qpel_pixels_tab[1][ 6]= put_qpel8_mc21_c; | |
1731 c->put_qpel_pixels_tab[1][ 7]= put_qpel8_mc31_c; | |
1732 c->put_qpel_pixels_tab[1][ 8]= put_qpel8_mc02_c; | |
1733 c->put_qpel_pixels_tab[1][ 9]= put_qpel8_mc12_c; | |
1734 c->put_qpel_pixels_tab[1][10]= put_qpel8_mc22_c; | |
1735 c->put_qpel_pixels_tab[1][11]= put_qpel8_mc32_c; | |
1736 c->put_qpel_pixels_tab[1][12]= put_qpel8_mc03_c; | |
1737 c->put_qpel_pixels_tab[1][13]= put_qpel8_mc13_c; | |
1738 c->put_qpel_pixels_tab[1][14]= put_qpel8_mc23_c; | |
1739 c->put_qpel_pixels_tab[1][15]= put_qpel8_mc33_c; | |
1740 | |
1741 c->put_no_rnd_qpel_pixels_tab[1][ 0]= put_no_rnd_qpel8_mc00_c; | |
1742 c->put_no_rnd_qpel_pixels_tab[1][ 1]= put_no_rnd_qpel8_mc10_c; | |
1743 c->put_no_rnd_qpel_pixels_tab[1][ 2]= put_no_rnd_qpel8_mc20_c; | |
1744 c->put_no_rnd_qpel_pixels_tab[1][ 3]= put_no_rnd_qpel8_mc30_c; | |
1745 c->put_no_rnd_qpel_pixels_tab[1][ 4]= put_no_rnd_qpel8_mc01_c; | |
1746 c->put_no_rnd_qpel_pixels_tab[1][ 5]= put_no_rnd_qpel8_mc11_c; | |
1747 c->put_no_rnd_qpel_pixels_tab[1][ 6]= put_no_rnd_qpel8_mc21_c; | |
1748 c->put_no_rnd_qpel_pixels_tab[1][ 7]= put_no_rnd_qpel8_mc31_c; | |
1749 c->put_no_rnd_qpel_pixels_tab[1][ 8]= put_no_rnd_qpel8_mc02_c; | |
1750 c->put_no_rnd_qpel_pixels_tab[1][ 9]= put_no_rnd_qpel8_mc12_c; | |
1751 c->put_no_rnd_qpel_pixels_tab[1][10]= put_no_rnd_qpel8_mc22_c; | |
1752 c->put_no_rnd_qpel_pixels_tab[1][11]= put_no_rnd_qpel8_mc32_c; | |
1753 c->put_no_rnd_qpel_pixels_tab[1][12]= put_no_rnd_qpel8_mc03_c; | |
1754 c->put_no_rnd_qpel_pixels_tab[1][13]= put_no_rnd_qpel8_mc13_c; | |
1755 c->put_no_rnd_qpel_pixels_tab[1][14]= put_no_rnd_qpel8_mc23_c; | |
1756 c->put_no_rnd_qpel_pixels_tab[1][15]= put_no_rnd_qpel8_mc33_c; | |
1757 | |
1758 c->avg_qpel_pixels_tab[1][ 0]= avg_qpel8_mc00_c; | |
1759 c->avg_qpel_pixels_tab[1][ 1]= avg_qpel8_mc10_c; | |
1760 c->avg_qpel_pixels_tab[1][ 2]= avg_qpel8_mc20_c; | |
1761 c->avg_qpel_pixels_tab[1][ 3]= avg_qpel8_mc30_c; | |
1762 c->avg_qpel_pixels_tab[1][ 4]= avg_qpel8_mc01_c; | |
1763 c->avg_qpel_pixels_tab[1][ 5]= avg_qpel8_mc11_c; | |
1764 c->avg_qpel_pixels_tab[1][ 6]= avg_qpel8_mc21_c; | |
1765 c->avg_qpel_pixels_tab[1][ 7]= avg_qpel8_mc31_c; | |
1766 c->avg_qpel_pixels_tab[1][ 8]= avg_qpel8_mc02_c; | |
1767 c->avg_qpel_pixels_tab[1][ 9]= avg_qpel8_mc12_c; | |
1768 c->avg_qpel_pixels_tab[1][10]= avg_qpel8_mc22_c; | |
1769 c->avg_qpel_pixels_tab[1][11]= avg_qpel8_mc32_c; | |
1770 c->avg_qpel_pixels_tab[1][12]= avg_qpel8_mc03_c; | |
1771 c->avg_qpel_pixels_tab[1][13]= avg_qpel8_mc13_c; | |
1772 c->avg_qpel_pixels_tab[1][14]= avg_qpel8_mc23_c; | |
1773 c->avg_qpel_pixels_tab[1][15]= avg_qpel8_mc33_c; | |
1774 /* | |
1775 c->avg_no_rnd_qpel_pixels_tab[1][ 0]= avg_no_rnd_qpel8_mc00_c; | |
1776 c->avg_no_rnd_qpel_pixels_tab[1][ 1]= avg_no_rnd_qpel8_mc10_c; | |
1777 c->avg_no_rnd_qpel_pixels_tab[1][ 2]= avg_no_rnd_qpel8_mc20_c; | |
1778 c->avg_no_rnd_qpel_pixels_tab[1][ 3]= avg_no_rnd_qpel8_mc30_c; | |
1779 c->avg_no_rnd_qpel_pixels_tab[1][ 4]= avg_no_rnd_qpel8_mc01_c; | |
1780 c->avg_no_rnd_qpel_pixels_tab[1][ 5]= avg_no_rnd_qpel8_mc11_c; | |
1781 c->avg_no_rnd_qpel_pixels_tab[1][ 6]= avg_no_rnd_qpel8_mc21_c; | |
1782 c->avg_no_rnd_qpel_pixels_tab[1][ 7]= avg_no_rnd_qpel8_mc31_c; | |
1783 c->avg_no_rnd_qpel_pixels_tab[1][ 8]= avg_no_rnd_qpel8_mc02_c; | |
1784 c->avg_no_rnd_qpel_pixels_tab[1][ 9]= avg_no_rnd_qpel8_mc12_c; | |
1785 c->avg_no_rnd_qpel_pixels_tab[1][10]= avg_no_rnd_qpel8_mc22_c; | |
1786 c->avg_no_rnd_qpel_pixels_tab[1][11]= avg_no_rnd_qpel8_mc32_c; | |
1787 c->avg_no_rnd_qpel_pixels_tab[1][12]= avg_no_rnd_qpel8_mc03_c; | |
1788 c->avg_no_rnd_qpel_pixels_tab[1][13]= avg_no_rnd_qpel8_mc13_c; | |
1789 c->avg_no_rnd_qpel_pixels_tab[1][14]= avg_no_rnd_qpel8_mc23_c; | |
1790 c->avg_no_rnd_qpel_pixels_tab[1][15]= avg_no_rnd_qpel8_mc33_c; | |
1791 */ | |
1792 | 1426 |
1793 #ifdef HAVE_MMX | 1427 #ifdef HAVE_MMX |
1794 dsputil_init_mmx(c, mask); | 1428 dsputil_init_mmx(c, mask); |
1795 if (ff_bit_exact) | 1429 if (ff_bit_exact) |
1796 { | 1430 { |