先采用半径为2的大六边形模版搜索,若最优点是原点则采用半径为1的正方形模版搜索得出最优点,否则以最优点为中心继续以半径为2的大六边形模版搜索。
case X264_ME_HEX:
me_hex2:
/* hexagon search, radius 2 */
#if 0
for( i = 0; i < i_me_range/2; i++ )
{
omx = bmx; omy = bmy;
COST_MV( omx-2, omy ); //计算除原点之外的6个点的cost,并进行比较把最优值存于bcost,最优点位置存于bmx,bmy
COST_MV( omx-1, omy+2 );
COST_MV( omx+1, omy+2 );
COST_MV( omx+2, omy );
COST_MV( omx+1, omy-2 );
COST_MV( omx-1, omy-2 );
if( bmx == omx && bmy == omy ) //如果比较后的最优点仍是原点,则退出大六边形模版搜索
break;
if( !CHECK_MVRANGE(bmx, bmy) ) //如果已出界则停止搜索
break;
}
#else
/* equivale