Ignore:
Timestamp:
13 May 2015, 15:16:14 (10 years ago)
Author:
hhi
Message:

Alignment and reactivation of DMM and depth encoder optimizations:

  • new macro NH_3D_DMM for DMM functionality, including several clean-ups.
  • new macro NH_3D_SDC for SDC functionality, currently only used for covering common SDC and DMM parts.
  • new macro NH_3D_ENC_DEPTH for encoder optimizations related to depth.
  • temporary macro TEMP_SDC_CLEANUP for covering several proposed cleanups related to SDC and DMM.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified branches/HTM-14.1-update-dev1-HHI/source/Lib/TLibEncoder/TEncEntropy.cpp

    r1200 r1209  
    722722    assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 );
    723723  }
    724 
    725 
     724#endif
     725#if H_3D_INTER_SDC
    726726  if( pcCU->getSDCFlag( uiAbsPartIdx ) && !pcCU->isIntra( uiAbsPartIdx ) )
    727727  {
     
    730730    assert( pcCU->getSlice()->getIsDepth() );
    731731  }
    732 
    733   if( pcCU->getSlice()->getIsDepth() && ( pcCU->getSDCFlag( uiAbsPartIdx ) || pcCU->isIntra( uiAbsPartIdx ) ) )
     732#endif
     733#if NH_3D
     734  if( pcCU->getSlice()->getIsDepth() )
     735  {
     736#if H_3D_DIM_SDC || H_3D_INTER_SDC
     737    if( pcCU->getSDCFlag( uiAbsPartIdx ) )
     738    {
     739      m_pcEntropyCoderIf->codeDeltaDC( pcCU, uiAbsPartIdx );
     740      return;
     741    }
     742#endif
     743#if NH_3D_DMM
     744    if( pcCU->isIntra(uiAbsPartIdx) )
    734745  {
    735746    Int iPartNum = ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) ? 4 : 1;
    736     UInt uiPartOffset = ( pcCU->getPic()->getNumPartInCU() >> ( pcCU->getDepth( uiAbsPartIdx ) << 1 ) ) >> 2;
    737    
    738     if( !pcCU->getSDCFlag( uiAbsPartIdx ) )
    739     {
     747      UInt uiPartOffset = ( pcCU->getPic()->getNumPartitionsInCtu() >> ( pcCU->getDepth( uiAbsPartIdx ) << 1 ) ) >> 2;
    740748      for( Int iPart = 0; iPart < iPartNum; iPart++ )
    741749      {
    742         if( getDimType( pcCU->getLumaIntraDir( uiAbsPartIdx + uiPartOffset*iPart ) ) < DIM_NUM_TYPE )
     750        if( isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, uiAbsPartIdx + uiPartOffset*iPart ) ) )
    743751        {
    744752          m_pcEntropyCoderIf->codeDeltaDC( pcCU, uiAbsPartIdx + uiPartOffset*iPart );
     
    746754      }
    747755    }
    748     else
    749     {
    750       m_pcEntropyCoderIf->codeDeltaDC( pcCU, uiAbsPartIdx );
    751       return;
    752     }
    753   }
    754 #endif
    755 
     756#endif
     757  }
     758#endif
    756759
    757760  if( pcCU->isIntra(uiAbsPartIdx) )
     
    840843}
    841844
     845#if NH_3D_DMM || H_3D_DIM_SDC || H_3D_INTER_SDC
     846Void TEncEntropy::encodeDeltaDC  ( TComDataCU* pcCU, UInt absPartIdx )
     847{
     848  m_pcEntropyCoderIf->codeDeltaDC( pcCU, absPartIdx );
     849}
     850#endif
    842851#if H_3D_INTER_SDC
    843 Void TEncEntropy::encodeDeltaDC  ( TComDataCU* pcCU, UInt absPartIdx )
    844 {
    845   m_pcEntropyCoderIf->codeDeltaDC( pcCU, absPartIdx );
    846 }
    847 
    848852Void TEncEntropy::encodeSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
    849853{
Note: See TracChangeset for help on using the changeset viewer.