获得最终CU深度信息

参考了CJL的一些信息: http://blog.csdn.net/hevc_cjl/article/details/8275260

对CU最终的划分有些困惑主要原因是CU总是递归分割,这就导致了CU的分割位置比较难找寻,一直不懂HM是怎么把最后递归分割的那些cu的信息给一开始的CTU的,不过最近看着看着代码我也基本懂了,xcompresscu在递归分割后有这样一行代码:

   rpcTempCU ->copyPartFrom( pcSubBestPartCU, uiPartUnitIdx, uhNextDepth ); 

// Copy small CU to bigger CU.就是把子CU的信息给上层CU那这样递归完了之后就会把所有子CU的信息给总的CTU
// One of quarter parts overwritten by predicted sub part.
Void TComDataCU ::copyPartFrom( TComDataCU* pcCU , UInt uiPartUnitIdx, UInt uiDepth )
{
  assert( uiPartUnitIdx <4 );

  m_dTotalCost         += pcCU ->getTotalCost();
  m_uiTotalDistortion  += pcCU ->getTotalDistortion();
  m_uiTotalBits        += pcCU ->getTotalBits();

  UInt uiOffset         = pcCU ->getTotalNumPart()*uiPartUnitIdx ;
  const UInt numValidComp= pcCU ->getPic()->getNumberValidComponents();
  const UInt numValidChan= pcCU ->getPic()->getChromaFormat()== CHROMA_400 ? 1:2;

  UInt uiNumPartition = pcCU ->getTotalNumPart();
  Int iSizeInUchar  = sizeof ( UChar ) * uiNumPartition;
  Int iSizeInBool   = sizeof ( Bool   ) * uiNumPartition;

  for( Int i=0; i<2; i++)
  {
    m_lastIntraBCMv[i] = pcCU ->getLastIntraBCMv(i);
  }

  for ( Int comp = 0; comp < MAX_NUM_COMPONENT ; comp++)
  {
    m_uhLastPLTUsedSizeFinal[comp] = pcCU ->getLastPLTInLcuUsedSizeFinal(comp);
    m_uhLastPLTSizeFinal[comp] = pcCU ->getLastPLTInLcuSizeFinal(comp);
#if SCM_CE5_MAX_PLT_AND_PRED_SIZE
    for ( Int i = 0; i < m_PLTMax
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值