Ignore:
Timestamp:
23 Jan 2014, 05:06:49 (10 years ago)
Author:
samsung-htm
Message:

Integration of JCT3V-G0101: InterSDC with multiple DC candidates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-9.3-dev3-Samsung/source/Lib/TLibEncoder/TEncCu.cpp

    r782 r792  
    19791979          if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() && !uiNoResidual )
    19801980          {
     1981#if SEC_INTER_SDC_G0101
     1982            for( Int uiOffest = -2 ; uiOffest <= 2 ; uiOffest++ )
     1983            {
     1984              if( rpcTempCU != rpcTempCUPre )
     1985              {
     1986                rpcTempCU->initEstData( uhDepth, orgQP );
     1987                rpcTempCU->copyPartFrom( rpcBestCU, 0, uhDepth );
     1988              }
     1989              rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth );
     1990              rpcTempCU->setTrIdxSubParts( 0, 0, uhDepth );
     1991              rpcTempCU->setCbfSubParts( 1, 1, 1, 0, uhDepth );
     1992#if H_3D_VSO //M2
     1993              if( m_pcRdCost->getUseRenModel() )
     1994              { //Reset
     1995                UInt  uiWidth     = m_ppcOrigYuv[uhDepth]->getWidth    ();
     1996                UInt  uiHeight    = m_ppcOrigYuv[uhDepth]->getHeight   ();
     1997                Pel*  piSrc       = m_ppcOrigYuv[uhDepth]->getLumaAddr ();
     1998                UInt  uiSrcStride = m_ppcOrigYuv[uhDepth]->getStride   ();
     1999                m_pcRdCost->setRenModelData( rpcTempCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight );
     2000              }
     2001#endif
     2002              m_pcPredSearch->encodeResAndCalcRdInterSDCCU( rpcTempCU,
     2003                m_ppcOrigYuv[uhDepth],
     2004                ( rpcTempCU != rpcTempCUPre ) ? m_ppcPredYuvBest[uhDepth] : m_ppcPredYuvTemp[uhDepth],
     2005                m_ppcResiYuvTemp[uhDepth],
     2006                m_ppcRecoYuvTemp[uhDepth],
     2007                uiOffest,
     2008                uhDepth );
     2009
     2010              xCheckDQP( rpcTempCU );
     2011              xCheckBestMode( rpcBestCU, rpcTempCU, uhDepth );
     2012            }
     2013#else
    19812014            if( rpcTempCU != rpcTempCUPre )
    19822015            {
     
    20062039            xCheckDQP( rpcTempCU );
    20072040            xCheckBestMode( rpcBestCU, rpcTempCU, uhDepth );
     2041#endif
    20082042          }
    20092043#endif
     
    22022236  xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth);
    22032237#if H_3D_INTER_SDC
     2238#if SEC_INTER_SDC_G0101 // ONLY_2NX2N_SDC
     2239  if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() && ePartSize == SIZE_2Nx2N)
     2240#else
    22042241  if( rpcTempCU->getSlice()->getVPS()->getInterSDCFlag( rpcTempCU->getSlice()->getLayerIdInVps() ) && rpcTempCU->getSlice()->getIsDepth() )
    2205   {
     2242#endif
     2243  {
     2244#if SEC_INTER_SDC_G0101
     2245    for( Int uiOffest = -2 ; uiOffest <= 2 ; uiOffest++ )
     2246    {
     2247      if( rpcTempCU != rpcTempCUPre )
     2248      {
     2249        Int orgQP = rpcBestCU->getQP( 0 );
     2250        rpcTempCU->initEstData( uhDepth, orgQP );
     2251        rpcTempCU->copyPartFrom( rpcBestCU, 0, uhDepth );
     2252      }
     2253      rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth );
     2254      rpcTempCU->setTrIdxSubParts( 0, 0, uhDepth );
     2255      rpcTempCU->setCbfSubParts( 1, 1, 1, 0, uhDepth );
     2256#if H_3D_VSO // M3
     2257      if( m_pcRdCost->getUseRenModel() )
     2258      {
     2259        UInt  uiWidth     = m_ppcOrigYuv[uhDepth]->getWidth ( );
     2260        UInt  uiHeight    = m_ppcOrigYuv[uhDepth]->getHeight( );
     2261        Pel*  piSrc       = m_ppcOrigYuv[uhDepth]->getLumaAddr( );
     2262        UInt  uiSrcStride = m_ppcOrigYuv[uhDepth]->getStride();
     2263        m_pcRdCost->setRenModelData( rpcTempCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight );
     2264      }
     2265#endif
     2266
     2267      m_pcPredSearch->encodeResAndCalcRdInterSDCCU( rpcTempCU,
     2268        m_ppcOrigYuv[uhDepth],
     2269        ( rpcTempCU != rpcTempCUPre ) ? m_ppcPredYuvBest[uhDepth] : m_ppcPredYuvTemp[uhDepth],
     2270        m_ppcResiYuvTemp[uhDepth],
     2271        m_ppcRecoYuvTemp[uhDepth],
     2272        uiOffest,
     2273        uhDepth );
     2274
     2275      xCheckDQP( rpcTempCU );
     2276      xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth);
     2277    }
     2278#else
    22062279    if( rpcTempCU != rpcTempCUPre )
    22072280    {
     
    22332306  xCheckDQP( rpcTempCU );
    22342307  xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth);
     2308#endif
    22352309  }
    22362310#endif
Note: See TracChangeset for help on using the changeset viewer.