Ignore:
Timestamp:
14 Aug 2013, 10:39:58 (11 years ago)
Author:
lg
Message:
  • integration of JCT3V-E0156
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-2.0-dev2-LG/source/Lib/TLibEncoder/TEncCu.cpp

    r559 r571  
    15271527  m_pcEntropyCoder->encodeARPW( pcCU , uiAbsPartIdx );
    15281528#endif
     1529#if LGE_INTER_SDC_E0156
     1530  m_pcEntropyCoder->encodeInterSDCFlag( pcCU, uiAbsPartIdx, false );
     1531#endif
    15291532
    15301533  // Encode Coefficients
     
    18171820
    18181821          rpcTempCU->setSkipFlagSubParts( rpcTempCU->getQtRootCbf(0) == 0, 0, uhDepth );
     1822#if LGE_INTER_SDC_E0156
     1823          TComDataCU *rpcTempCUPre = rpcTempCU;
     1824#endif
    18191825          Int orgQP = rpcTempCU->getQP( 0 );
    18201826          xCheckDQP( rpcTempCU );
    18211827          xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth);
     1828#if LGE_INTER_SDC_E0156
     1829          if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() && !uiNoResidual )
     1830          {
     1831            if( rpcTempCU != rpcTempCUPre )
     1832            {
     1833              rpcTempCU->initEstData( uhDepth, orgQP );
     1834              rpcTempCU->copyPartFrom( rpcBestCU, 0, uhDepth );
     1835            }
     1836            rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth );
     1837            rpcTempCU->setTrIdxSubParts( 0, 0, uhDepth );
     1838            rpcTempCU->setCbfSubParts( 1, 1, 1, 0, uhDepth );
     1839#if H_3D_VSO //M2
     1840            if( m_pcRdCost->getUseRenModel() )
     1841            { //Reset
     1842              UInt  uiWidth     = m_ppcOrigYuv[uhDepth]->getWidth    ();
     1843              UInt  uiHeight    = m_ppcOrigYuv[uhDepth]->getHeight   ();
     1844              Pel*  piSrc       = m_ppcOrigYuv[uhDepth]->getLumaAddr ();
     1845              UInt  uiSrcStride = m_ppcOrigYuv[uhDepth]->getStride   ();
     1846              m_pcRdCost->setRenModelData( rpcTempCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight );
     1847            }
     1848#endif
     1849            m_pcPredSearch->encodeResAndCalcRdInterSDCCU( rpcTempCU,
     1850              m_ppcOrigYuv[uhDepth],
     1851              ( rpcTempCU != rpcTempCUPre ) ? m_ppcPredYuvBest[uhDepth] : m_ppcPredYuvTemp[uhDepth],
     1852              m_ppcResiYuvTemp[uhDepth],
     1853              m_ppcRecoYuvTemp[uhDepth],
     1854              uhDepth );
     1855
     1856            xCheckDQP( rpcTempCU );
     1857            xCheckBestMode( rpcBestCU, rpcTempCU, uhDepth );
     1858          }
     1859#endif
    18221860          rpcTempCU->initEstData( uhDepth, orgQP );
    18231861
    18241862      if( m_pcEncCfg->getUseFastDecisionForMerge() && !bestIsSkip )
    18251863      {
     1864#if LGE_INTER_SDC_E0156
     1865        if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) )
     1866          bestIsSkip = !rpcBestCU->getSDCFlag( 0 ) && ( rpcBestCU->getQtRootCbf(0) == 0 );
     1867        else
     1868#endif
    18261869        bestIsSkip = rpcBestCU->getQtRootCbf(0) == 0;
    18271870      }
     
    20172060#endif
    20182061  rpcTempCU->getTotalCost()  = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() );
    2019 
     2062#if LGE_INTER_SDC_E0156
     2063  TComDataCU *rpcTempCUPre = rpcTempCU;
     2064#endif
    20202065  xCheckDQP( rpcTempCU );
    20212066  xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth);
     2067#if LGE_INTER_SDC_E0156
     2068  if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() )
     2069  {
     2070    if( rpcTempCU != rpcTempCUPre )
     2071    {
     2072      Int orgQP = rpcBestCU->getQP( 0 );
     2073      rpcTempCU->initEstData( uhDepth, orgQP );
     2074      rpcTempCU->copyPartFrom( rpcBestCU, 0, uhDepth );
     2075    }
     2076    rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth );
     2077    rpcTempCU->setTrIdxSubParts( 0, 0, uhDepth );
     2078    rpcTempCU->setCbfSubParts( 1, 1, 1, 0, uhDepth );
     2079#if H_3D_VSO // M3
     2080    if( m_pcRdCost->getUseRenModel() )
     2081    {
     2082      UInt  uiWidth     = m_ppcOrigYuv[uhDepth]->getWidth ( );
     2083      UInt  uiHeight    = m_ppcOrigYuv[uhDepth]->getHeight( );
     2084      Pel*  piSrc       = m_ppcOrigYuv[uhDepth]->getLumaAddr( );
     2085      UInt  uiSrcStride = m_ppcOrigYuv[uhDepth]->getStride();
     2086      m_pcRdCost->setRenModelData( rpcTempCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight );
     2087    }
     2088#endif
     2089
     2090    m_pcPredSearch->encodeResAndCalcRdInterSDCCU( rpcTempCU,
     2091      m_ppcOrigYuv[uhDepth],
     2092      ( rpcTempCU != rpcTempCUPre ) ? m_ppcPredYuvBest[uhDepth] : m_ppcPredYuvTemp[uhDepth],
     2093      m_ppcResiYuvTemp[uhDepth],
     2094      m_ppcRecoYuvTemp[uhDepth],
     2095      uhDepth );
     2096
     2097    xCheckDQP( rpcTempCU );
     2098    xCheckBestMode( rpcBestCU, rpcTempCU, uhDepth );
     2099  }
     2100#endif
    20222101#if H_3D_ARP
    20232102  }
Note: See TracChangeset for help on using the changeset viewer.