diff -NaHudr x264-saved/encoder/me.c x264/encoder/me.c --- x264-saved/encoder/me.c 2005-06-14 19:36:41.000000000 +0300 +++ x264/encoder/me.c 2005-06-14 19:34:44.000000000 +0300 @@ -237,6 +237,43 @@ } } break; + case X264_ME_STAR: + /* star search */ + omx = bmx; + omy = bmy; + + #define COST_MV_CH(x,y) \ + if(x >= mv_x_min-8 && x <= mv_x_max+8 \ + && y >= mv_y_min-8 && y <= mv_y_max+8) \ + { COST_MV(x,y); }\ + + for( i_iter = 0; i_iter < i_me_range; i_iter++ ) + { + int xm=omx-i_iter, xp=omx+i_iter; + int ym=omy-i_iter, yp=omy+i_iter; + + COST_MV_CH( xm, omy); + COST_MV_CH( xm, ym); + COST_MV_CH( xm, yp); + COST_MV_CH( omx , ym ); + COST_MV_CH( xp, ym); + COST_MV_CH( omx , yp ); + COST_MV_CH( xp, omy); + COST_MV_CH( xp, yp); + } + + omx=bmx; omy=bmy; + + /* square refine */ + COST_MV( omx-1, omy-1 ); + COST_MV( omx-1, omy ); + COST_MV( omx-1, omy+1 ); + COST_MV( omx , omy-1 ); + COST_MV( omx , omy+1 ); + COST_MV( omx+1, omy-1 ); + COST_MV( omx+1, omy ); + COST_MV( omx+1, omy+1 ); + break; } /* -> qpel mv */ diff -NaHudr x264-saved/x264.h x264/x264.h --- x264-saved/x264.h 2005-06-14 19:36:44.000000000 +0300 +++ x264/x264.h 2005-06-14 19:35:42.000000000 +0300 @@ -58,7 +58,8 @@ #define X264_ME_DIA 0 #define X264_ME_HEX 1 #define X264_ME_UMH 2 -#define X264_ME_ESA 3 +#define X264_ME_STAR 3 +#define X264_ME_ESA 4 /* Colorspace type */