H266:BIO

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_28446365/article/details/79894977
二维可分离滤波得垂直梯度
__inline Void TComPrediction::gradFilter2DVer (Pel* piSrc, Int iSrcStride,  Int iWidth, Int iHeight, Int iDstStride,
  Pel*& rpiDst, Int iMV, const Int iShift)
{
  Pel*   piDst = rpiDst;
  Int   iSum =0;
  Pel*  piSrcTmp  = piSrc-BIO_FILTER_HALF_LENGTH_MINUS_1*iSrcStride;
  Pel*  piSrcTmp1  = piSrcTmp+iSrcStride;
  Pel*  piSrcTmp2  = piSrcTmp1+iSrcStride;
  Pel*  piSrcTmp3  = piSrcTmp2+iSrcStride;
  Pel*  piSrcTmp4  = piSrcTmp3+iSrcStride;
  Pel*  piSrcTmp5  = piSrcTmp4+iSrcStride;

  static const Int iOffSet = iShift>0?(1<<(iShift-1)):0;
  for ( Int y = iHeight; y != 0; y-- )
  {

    for ( Int x = 0; x < iWidth; x++ )
    {
      iSum      = m_lumaGradientFilter[iMV][0]* piSrcTmp[x]
      +m_lumaGradientFilter[iMV][1]*piSrcTmp1[x]
      +m_lumaGradientFilter[iMV][2]*piSrcTmp2[x]
      +m_lumaGradientFilter[iMV][3]*piSrcTmp3[x]
      +m_lumaGradientFilter[iMV][4]*piSrcTmp4[x]
      +m_lumaGradientFilter[iMV][5]*piSrcTmp5[x];
      iSum = (iSum>=0)?((iSum +iOffSet)>>iShift):-(((-iSum +iOffSet)>>iShift));
      piDst[x ] = (Pel) (iSum);
    }
    piSrcTmp+=iSrcStride;
    piSrcTmp1+=iSrcStride;
    piSrcTmp2+=iSrcStride;
    piSrcTmp3+=iSrcStride;
    piSrcTmp4+=iSrcStride;
    piSrcTmp5+=iSrcStride;
    piSrc += iSrcStride;
    piDst += iDstStride;
  }
  return;
}

猜你喜欢

转载自blog.csdn.net/baidu_28446365/article/details/79894977