Ignore:
Timestamp:
7 Jun 2013, 01:30:46 (11 years ago)
Author:
interdigital
Message:

FAST_MODE bug fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-2.1-multilayers-dev/source/Lib/TLibEncoder/TEncCu.cpp

    r271 r274  
    456456  {
    457457#if (ENCODER_FAST_MODE)
    458     bool testInter = true;
     458    Bool testInter = true;
    459459    if (rpcBestCU->getLayerId() > 0)
    460     {
    461       TComList<TComPic*> *cListPic = m_ppcTEncTop[rpcBestCU->getLayerId()]->getRefLayerEnc(rpcBestCU->getLayerId()-1)->getListPic();
     460    { 
     461      TComList<TComPic*> *cListPic = m_ppcTEncTop[rpcBestCU->getLayerId()]->getRefLayerEnc(0)->getListPic();
    462462      TComPic* picLowerLayer = pcSlice->getRefPic( *cListPic, pcSlice->getPOC() );
    463463      if(picLowerLayer->getSlice(0)->getSliceType() == I_SLICE)
     
    465465        testInter = false;
    466466      }
    467 
    468467    }
    469468#endif
     
    770769      }
    771770#endif
    772 
    773771#if (ENCODER_FAST_MODE)
    774         if(pcPic->getLayerId() > 0)
    775         {
    776           xCheckRDCostILRUni( rpcBestCU, rpcTempCU);
    777           rpcTempCU->initEstData( uiDepth, iQP );
    778        }
     772      if(pcPic->getLayerId() > 0)
     773      {
     774        for(Int refLayer = 0; refLayer < pcSlice->getActiveNumILRRefIdx(); refLayer++)
     775        { 
     776           xCheckRDCostILRUni( rpcBestCU, rpcTempCU, pcSlice->getInterLayerPredLayerIdc(refLayer));
     777           rpcTempCU->initEstData( uiDepth, iQP );
     778        }
     779      }
    779780#endif
    780781
     
    18151816}
    18161817#endif
    1817 
    18181818#if (ENCODER_FAST_MODE)
    1819 Void TEncCu::xCheckRDCostILRUni(TComDataCU *&rpcBestCU, TComDataCU *&rpcTempCU)
     1819Void TEncCu::xCheckRDCostILRUni(TComDataCU *&rpcBestCU, TComDataCU *&rpcTempCU, UInt refLayerId)
    18201820{
    18211821  UChar uhDepth = rpcTempCU->getDepth( 0 );
    1822 
    18231822  rpcTempCU->setDepthSubParts( uhDepth, 0 );
    1824 
    18251823#if SKIP_FLAG
    18261824  rpcTempCU->setSkipFlagSubParts( false, 0, uhDepth );
    18271825#endif
    1828 
    18291826  rpcTempCU->setPartSizeSubParts  ( SIZE_2Nx2N,  0, uhDepth );  //2Nx2N
    18301827  rpcTempCU->setPredModeSubParts  ( MODE_INTER, 0, uhDepth );
    18311828  rpcTempCU->setCUTransquantBypassSubParts  ( m_pcEncCfg->getCUTransquantBypassFlagValue(), 0, uhDepth );
    1832 
    1833   Bool exitILR = m_pcPredSearch->predInterSearchILRUni( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcRecoYuvTemp[uhDepth] );
    1834 
     1829  Bool exitILR = m_pcPredSearch->predInterSearchILRUni( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcRecoYuvTemp[uhDepth], refLayerId );
    18351830  if(!exitILR)
    18361831  {
    1837     return;
    1838   }
    1839 
     1832     return;
     1833  }
    18401834  m_pcPredSearch->encodeResAndCalcRdInterCU( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcResiYuvBest[uhDepth], m_ppcRecoYuvTemp[uhDepth], false );
    1841 
    18421835  rpcTempCU->getTotalCost()  = m_pcRdCost->calcRdCost( rpcTempCU->getTotalBits(), rpcTempCU->getTotalDistortion() );
    1843 
    18441836  xCheckDQP( rpcTempCU );
    18451837  xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth);
    1846 
    18471838  return;
    18481839}
    18491840#endif
    1850 
    1851 
    18521841//! \}
Note: See TracChangeset for help on using the changeset viewer.