tt

来源:互联网 发布:freebad安装软件 编辑:程序博客网 时间:2024/05/01 00:23
__inline Void TEncSearch::xTZ2PointSearch( TComPattern* pcPatternKey, IntTZSearchStruct& rcStruct, TComMv* pcMvSrchRngLT, TComMv* pcMvSrchRngRB ){  Int   iSrchRngHorLeft   = pcMvSrchRngLT->getHor();  Int   iSrchRngHorRight  = pcMvSrchRngRB->getHor();  Int   iSrchRngVerTop    = pcMvSrchRngLT->getVer();  Int   iSrchRngVerBottom = pcMvSrchRngRB->getVer();    // 2 point search,                   //   1 2 3  // check only the 2 untested points  //   4 0 5  // around the start point            //   6 7 8//!< 注意到,这里的1,3,6,8实际上是搜索步长iDist==2的时候由iDist>>1进行赋值的,实际距离以1计算,//!< 在前面经过xTZ8PointSearch确定最佳步长为1后,会在这里对以最佳点为中心、周围没搜索过的点进行运动估计  Int iStartX = rcStruct.iBestX;  Int iStartY = rcStruct.iBestY;  switch( rcStruct.ucPointNr )//!< 主要思想是根据该最佳点的位置处理未搜索过的点  {    case 1:    {      if ( (iStartX - 1) >= iSrchRngHorLeft )      {        xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY, 0, 2 );//!< 左      }      if ( (iStartY - 1) >= iSrchRngVerTop )      {        xTZSearchHelp( pcPatternKey, rcStruct, iStartX, iStartY - 1, 0, 2 );//!< 上      }    }      break;    case 2:    {      if ( (iStartY - 1) >= iSrchRngVerTop )      {        if ( (iStartX - 1) >= iSrchRngHorLeft )        {          xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY - 1, 0, 2 );//!< 左上          }        if ( (iStartX + 1) <= iSrchRngHorRight )        {          xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY - 1, 0, 2 );//!< 右上          }      }    }      break;    case 3:    {      if ( (iStartY - 1) >= iSrchRngVerTop )      {        xTZSearchHelp( pcPatternKey, rcStruct, iStartX, iStartY - 1, 0, 2 );//!< 上      }      if ( (iStartX + 1) <= iSrchRngHorRight )      {        xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY, 0, 2 );//!< 右      }    }      break;    case 4:    {      if ( (iStartX - 1) >= iSrchRngHorLeft )      {        if ( (iStartY + 1) <= iSrchRngVerBottom )        {          xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY + 1, 0, 2 );//!< 左下          }        if ( (iStartY - 1) >= iSrchRngVerTop )        {          xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY - 1, 0, 2 );//!< 左上          }      }    }      break;    case 5:    {      if ( (iStartX + 1) <= iSrchRngHorRight )      {        if ( (iStartY - 1) >= iSrchRngVerTop )        {          xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY - 1, 0, 2 );//!< 右上          }        if ( (iStartY + 1) <= iSrchRngVerBottom )        {          xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY + 1, 0, 2 );//!< 右下          }      }    }      break;    case 6:    {      if ( (iStartX - 1) >= iSrchRngHorLeft )      {        xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY , 0, 2 );//!< 左      }      if ( (iStartY + 1) <= iSrchRngVerBottom )      {        xTZSearchHelp( pcPatternKey, rcStruct, iStartX, iStartY + 1, 0, 2 );//!< 下      }    }      break;    case 7:    {      if ( (iStartY + 1) <= iSrchRngVerBottom )      {        if ( (iStartX - 1) >= iSrchRngHorLeft )        {          xTZSearchHelp( pcPatternKey, rcStruct, iStartX - 1, iStartY + 1, 0, 2 );//!< 左下          }        if ( (iStartX + 1) <= iSrchRngHorRight )        {          xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY + 1, 0, 2 );//!< 右下          }      }    }      break;    case 8:    {      if ( (iStartX + 1) <= iSrchRngHorRight )      {        xTZSearchHelp( pcPatternKey, rcStruct, iStartX + 1, iStartY, 0, 2 );//!< 右      }      if ( (iStartY + 1) <= iSrchRngVerBottom )      {        xTZSearchHelp( pcPatternKey, rcStruct, iStartX, iStartY + 1, 0, 2 );//!< 下      }    }      break;    default:    {      assert( false );    }      break;  } // switch( rcStruct.ucPointNr )}


0 0
原创粉丝点击