H266:BIO

二维可分离滤波得垂直梯度
__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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值