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 {