Ignore:
Timestamp:
3 Feb 2014, 11:35:43 (10 years ago)
Author:
rwth
Message:
  • first version of DBBP (requires some cleanup)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-9.3-dev1-RWTH/source/Lib/TLibDecoder/TDecEntropy.cpp

    r809 r816  
    137137{
    138138  m_pcEntropyDecoderIf->parsePartSize( pcCU, uiAbsPartIdx, uiDepth );
     139 
     140#if H_3D_DBBP
     141  if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && pcCU->getPartitionSize(uiAbsPartIdx) == RWTH_DBBP_PACK_MODE )
     142  {
     143    decodeDBBPFlag(pcCU, uiAbsPartIdx, uiDepth);
     144   
     145    if( pcCU->getDBBPFlag(uiAbsPartIdx) )
     146    {
     147      AOF( pcCU->getPartitionSize(uiAbsPartIdx) == RWTH_DBBP_PACK_MODE );
     148     
     149      // get collocated depth block
     150      UInt uiDepthStride = 0;
     151      Pel* pDepthPels = NULL;
     152      pDepthPels = pcCU->getVirtualDepthBlock(uiAbsPartIdx, pcCU->getWidth(uiAbsPartIdx), pcCU->getHeight(uiAbsPartIdx), uiDepthStride);
     153     
     154      AOF( pDepthPels != NULL );
     155      AOF( uiDepthStride != 0 );
     156     
     157      // derive true partitioning for this CU based on depth
     158      // (needs to be done in parsing process as motion vector predictors are also derived during parsing)
     159      PartSize eVirtualPartSize = m_pcPrediction->getPartitionSizeFromDepth(pDepthPels, uiDepthStride, pcCU->getWidth(uiAbsPartIdx));
     160      AOF( eVirtualPartSize != SIZE_NONE );
     161     
     162      pcCU->setPartSizeSubParts(eVirtualPartSize, uiAbsPartIdx, uiDepth);
     163      AOF( pcCU->getPartitionSize(uiAbsPartIdx) == eVirtualPartSize );
     164    }
     165  }
     166#endif
    139167}
    140168
     
    247275      decodeARPW  ( pcCU, uiAbsPartIdx, uiDepth );
    248276#endif
     277#if H_3D_DBBP
     278      if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && ePartSize != SIZE_2Nx2N && pcSubCU->getWidth( 0 ) <= 8 && pcCU->getDBBPFlag(uiAbsPartIdx) == false )
     279#else
    249280      if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && ePartSize != SIZE_2Nx2N && pcSubCU->getWidth( 0 ) <= 8 )
     281#endif
    250282      {
    251283        pcSubCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uiDepth );
     
    830862#endif
    831863
     864#if H_3D_DBBP
     865Void TDecEntropy::decodeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     866{
     867  m_pcEntropyDecoderIf->parseDBBPFlag( pcCU, uiAbsPartIdx, uiDepth );
     868}
     869#endif
     870
    832871//! \}
Note: See TracChangeset for help on using the changeset viewer.