-#undef RENAME
-#undef CMP
-#undef CMP_HPEL
-#undef CMP_QPEL
-#undef INIT
-
-/* SIMPLE DIRECT HPEL */
-#define RENAME(a) simple_direct_hpel_ ## a
-//FIXME precalc divisions stuff
-
-#define CMP_DIRECT(d, dx, dy, x, y, size, cmp_func)\
-if((x) >= xmin && 2*(x) + (dx) <= 2*xmax && (y) >= ymin && 2*(y) + (dy) <= 2*ymax){\
- const int hx= 2*(x) + (dx);\
- const int hy= 2*(y) + (dy);\
- if(s->mv_type==MV_TYPE_8X8){\
- int i;\
- for(i=0; i<4; i++){\
- int fx = s->me.direct_basis_mv[i][0] + hx;\
- int fy = s->me.direct_basis_mv[i][1] + hy;\
- int bx = hx ? fx - s->me.co_located_mv[i][0] : s->me.co_located_mv[i][0]*(time_pb - time_pp)/time_pp + (i &1)*16;\
- int by = hy ? fy - s->me.co_located_mv[i][1] : s->me.co_located_mv[i][1]*(time_pb - time_pp)/time_pp + (i>>1)*16;\
- int fxy= (fx&1) + 2*(fy&1);\
- int bxy= (bx&1) + 2*(by&1);\
-\
- uint8_t *dst= s->me.scratchpad + 8*(i&1) + 8*stride*(i>>1);\
- hpel_put[1][fxy](dst, (ref_y ) + (fx>>1) + (fy>>1)*(stride), stride, 8);\
- hpel_avg[1][bxy](dst, (ref2_y) + (bx>>1) + (by>>1)*(stride), stride, 8);\
- }\
- }else{\
- int fx = s->me.direct_basis_mv[0][0] + hx;\
- int fy = s->me.direct_basis_mv[0][1] + hy;\
- int bx = hx ? fx - s->me.co_located_mv[0][0] : (s->me.co_located_mv[0][0]*(time_pb - time_pp)/time_pp);\
- int by = hy ? fy - s->me.co_located_mv[0][1] : (s->me.co_located_mv[0][1]*(time_pb - time_pp)/time_pp);\
- int fxy= (fx&1) + 2*(fy&1);\
- int bxy= (bx&1) + 2*(by&1);\
- \
- assert((fx>>1) + 16*s->mb_x >= -16);\
- assert((fy>>1) + 16*s->mb_y >= -16);\
- assert((fx>>1) + 16*s->mb_x <= s->width);\
- assert((fy>>1) + 16*s->mb_y <= s->height);\
- assert((bx>>1) + 16*s->mb_x >= -16);\
- assert((by>>1) + 16*s->mb_y >= -16);\
- assert((bx>>1) + 16*s->mb_x <= s->width);\
- assert((by>>1) + 16*s->mb_y <= s->height);\
-\
- hpel_put[0][fxy](s->me.scratchpad, (ref_y ) + (fx>>1) + (fy>>1)*(stride), stride, 16);\
- hpel_avg[0][bxy](s->me.scratchpad, (ref2_y) + (bx>>1) + (by>>1)*(stride), stride, 16);\
- }\
- d = cmp_func(s, s->me.scratchpad, src_y, stride);\
-}else\
- d= 256*256*256*32;
-
-
-#define CMP_HPEL(d, dx, dy, x, y, size)\
- CMP_DIRECT(d, dx, dy, x, y, size, cmp_sub)
-
-#define CMP(d, x, y, size)\
- CMP_DIRECT(d, 0, 0, x, y, size, cmp)
-
-#include "motion_est_template.c"
-#undef RENAME
-#undef CMP
-#undef CMP_HPEL
-#undef CMP_QPEL
-#undef INIT
-#undef CMP_DIRECT
-
-/* SIMPLE DIRECT QPEL */
-#define RENAME(a) simple_direct_qpel_ ## a
-
-#define CMP_DIRECT(d, dx, dy, x, y, size, cmp_func)\
-if((x) >= xmin && 4*(x) + (dx) <= 4*xmax && (y) >= ymin && 4*(y) + (dy) <= 4*ymax){\
- const int qx= 4*(x) + (dx);\
- const int qy= 4*(y) + (dy);\
- if(s->mv_type==MV_TYPE_8X8){\
- int i;\
- for(i=0; i<4; i++){\
- int fx = s->me.direct_basis_mv[i][0] + qx;\
- int fy = s->me.direct_basis_mv[i][1] + qy;\
- int bx = qx ? fx - s->me.co_located_mv[i][0] : s->me.co_located_mv[i][0]*(time_pb - time_pp)/time_pp + (i &1)*16;\
- int by = qy ? fy - s->me.co_located_mv[i][1] : s->me.co_located_mv[i][1]*(time_pb - time_pp)/time_pp + (i>>1)*16;\
- int fxy= (fx&3) + 4*(fy&3);\
- int bxy= (bx&3) + 4*(by&3);\
-\
- uint8_t *dst= s->me.scratchpad + 8*(i&1) + 8*stride*(i>>1);\
- qpel_put[1][fxy](dst, (ref_y ) + (fx>>2) + (fy>>2)*(stride), stride);\
- qpel_avg[1][bxy](dst, (ref2_y) + (bx>>2) + (by>>2)*(stride), stride);\
- }\
- }else{\
- int fx = s->me.direct_basis_mv[0][0] + qx;\
- int fy = s->me.direct_basis_mv[0][1] + qy;\
- int bx = qx ? fx - s->me.co_located_mv[0][0] : s->me.co_located_mv[0][0]*(time_pb - time_pp)/time_pp;\
- int by = qy ? fy - s->me.co_located_mv[0][1] : s->me.co_located_mv[0][1]*(time_pb - time_pp)/time_pp;\
- int fxy= (fx&3) + 4*(fy&3);\
- int bxy= (bx&3) + 4*(by&3);\
-\
- qpel_put[1][fxy](s->me.scratchpad , (ref_y ) + (fx>>2) + (fy>>2)*(stride) , stride);\
- qpel_put[1][fxy](s->me.scratchpad + 8 , (ref_y ) + (fx>>2) + (fy>>2)*(stride) + 8 , stride);\
- qpel_put[1][fxy](s->me.scratchpad + 8*stride, (ref_y ) + (fx>>2) + (fy>>2)*(stride) + 8*stride, stride);\
- qpel_put[1][fxy](s->me.scratchpad + 8 + 8*stride, (ref_y ) + (fx>>2) + (fy>>2)*(stride) + 8 + 8*stride, stride);\
- qpel_avg[1][bxy](s->me.scratchpad , (ref2_y) + (bx>>2) + (by>>2)*(stride) , stride);\
- qpel_avg[1][bxy](s->me.scratchpad + 8 , (ref2_y) + (bx>>2) + (by>>2)*(stride) + 8 , stride);\
- qpel_avg[1][bxy](s->me.scratchpad + 8*stride, (ref2_y) + (bx>>2) + (by>>2)*(stride) + 8*stride, stride);\
- qpel_avg[1][bxy](s->me.scratchpad + 8 + 8*stride, (ref2_y) + (bx>>2) + (by>>2)*(stride) + 8 + 8*stride, stride);\
- }\
- d = cmp_func(s, s->me.scratchpad, src_y, stride);\
-}else\
- d= 256*256*256*32;
-
-
-#define CMP_QPEL(d, dx, dy, x, y, size)\
- CMP_DIRECT(d, dx, dy, x, y, size, cmp_sub)
-
-#define CMP(d, x, y, size)\
- CMP_DIRECT(d, 0, 0, x, y, size, cmp)