HEVC:getPULeft();getPUAbove();getPUAboveLeft();getPUBelowLeft();getPUAboveRight()代码注释

const TComDataCU* TComDataCU::getPULeft( UInt& uiLPartUnitIdx,//
                                         UInt uiCurrPartUnitIdx,//
                                         Bool bEnforceSliceRestriction,
                                         Bool bEnforceTileRestriction ) const
{
  UInt uiAbsPartIdx       = g_auiZscanToRaster[uiCurrPartUnitIdx];
  UInt uiAbsZorderCUIdx   = g_auiZscanToRaster[m_absZIdxInCtu];//当前CU第一个4x4小块在Ctu中的Raster
  const UInt numPartInCtuWidth = m_pcPic->getNumPartInCtuWidth();
//检查uiAbsPartIdx所在列是否为Ctu第一列,uiAbsPartIdx%numPartInCtuWidth==0则为第一列
  if ( !RasterAddress::isZeroCol( uiAbsPartIdx, numPartInCtuWidth ) )
  {//当前PU左边的块与PU在同一Ctu中
    uiLPartUnitIdx = g_auiRasterToZscan[ uiAbsPartIdx - 1 ];//PU左边(outer)4x4小块在Ctu中的ZIdx
    //uiAbsPartIdx和uiAbsZorderCUIdx是否在Ctu的同一列,即当前PU左边缘是否与CU左边缘一样(是否是水平划分,或其他划分的第一个PU)
    if ( RasterAddress::isEqualCol( uiAbsPartIdx, uiAbsZorderCUIdx, numPartInCtuWidth ) )
    {//若是,则返回当前Ctu和uiLPartUnitIdx(PU左边小块outer在Ctu中的ZIdx)
      return m_pcPic->getCtu( getCtuRsAddr() );
    }
    else
    {//否则PULeft与当前PU在同一CU中,为Nx2N或nRx2N或NxN时,获取PU左边(outer)4x4小块在当前CU中的ZIdx
      uiLPartUnitIdx -= m_absZIdxInCtu;
      return this;
    }
  }
//若为当前Ctu中的isZeroCol(第一列),则获取与uiAbsPartIdx在同一行的Ctu中最右小块的ZIdx=RToZ[uiAbsPartIdx+CtuWidth-1],然后返回Left Ctu
  uiLPartUnitIdx = g_auiRasterToZscan[ uiAbsPartIdx + numPartInCtuWidth - 1 ];
  if ( (bEnforceSliceRestriction && !CUIsFromSameSlice(m_pCtuLeft)) || (bEnforceTileRestriction && !CUIsFromSameTile(m_pCtuLeft)) )
  {//若左边Ctu与当前Ctu不在同一Slice或同一Tile()独立编码,则返回空指针(无PULeft)
    return NULL;
  }
  return m_pCtuLeft;//说明当前PU左边的块位于另外一个Ctu,例如:可通过pCtuLeft->getSkipFlag(uiLPartUnitIdx)
}


const TComDataCU* TComDataCU::getPUAbove( UInt& uiAPartUnitIdx,
                   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值