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
  • branches/HTM-14.1-update-dev1-HHI/source/Lib/TLibDecoder/TDecEntropy.cpp

    r1200 r1209  
    970970    assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 );
    971971}
     972#endif
    972973#if H_3D_INTER_SDC
    973974  if( pcCU->getSDCFlag( uiAbsPartIdx ) && !pcCU->isIntra( uiAbsPartIdx) )
     
    978979  }
    979980#endif
    980   if( pcCU->getSlice()->getIsDepth() && ( pcCU->getSDCFlag( uiAbsPartIdx ) || pcCU->isIntra( uiAbsPartIdx ) ) )
    981   {
    982     Int iPartNum = ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) ? 4 : 1;
    983     UInt uiPartOffset = ( pcCU->getPic()->getNumPartInCU() >> ( pcCU->getDepth( uiAbsPartIdx ) << 1 ) ) >> 2;
    984  
    985     if( !pcCU->getSDCFlag( uiAbsPartIdx ) )
    986     {
    987       for( Int iPart = 0; iPart < iPartNum; iPart++ )
    988       {
    989         if( getDimType( pcCU->getLumaIntraDir( uiAbsPartIdx + uiPartOffset*iPart ) ) < DIM_NUM_TYPE )
    990         {
    991           m_pcEntropyDecoderIf->parseDeltaDC( pcCU, uiAbsPartIdx + uiPartOffset*iPart, uiDepth + ( pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) );
    992         }
    993       }
    994     }
    995     else
     981#if NH_3D
     982  if( pcCU->getSlice()->getIsDepth() )
     983  {
     984#if H_3D_DIM_SDC || H_3D_INTER_SDC
     985    if( pcCU->getSDCFlag( uiAbsPartIdx ) )
    996986    {
    997987      m_pcEntropyDecoderIf->parseDeltaDC( pcCU, uiAbsPartIdx, uiDepth );
    998988      return;
    999989    }
     990#endif
     991#if NH_3D_DMM
     992    if( pcCU->isIntra( uiAbsPartIdx ) )
     993    {
     994      Int iPartNum = ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) ? 4 : 1;
     995      UInt uiPartOffset = ( pcCU->getPic()->getNumPartitionsInCtu() >> ( pcCU->getDepth( uiAbsPartIdx ) << 1 ) ) >> 2;
     996      for( Int iPart = 0; iPart < iPartNum; iPart++ )
     997      {
     998        if( isDmmMode( pcCU->getIntraDir( CHANNEL_TYPE_LUMA, uiAbsPartIdx + uiPartOffset*iPart ) ) )
     999        {
     1000          m_pcEntropyDecoderIf->parseDeltaDC( pcCU, uiAbsPartIdx + uiPartOffset*iPart, uiDepth + ( pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ) );
     1001        }
     1002      }
     1003    }
     1004#endif
    10001005  }
    10011006#endif
Note: See TracChangeset for help on using the changeset viewer.