Ignore:
Timestamp:
23 Apr 2014, 08:24:48 (11 years ago)
Author:
seregin
Message:

checks for ILRP prediction type

File:
1 edited

Legend:

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

    r595 r726  
    696696#if (ENCODER_FAST_MODE)
    697697        if( rpcBestCU->getSlice()->getSliceType() == I_SLICE ||
     698          rpcBestCU->getPredictionMode(0) == SIZE_NONE ||  // if there is no valid inter prediction
    698699          !testInter ||
    699700          rpcBestCU->getCbf( 0, TEXT_LUMA     ) != 0   ||
     
    701702          rpcBestCU->getCbf( 0, TEXT_CHROMA_V ) != 0     ) // avoid very complex intra if it is unlikely
    702703#else
    703           if( rpcBestCU->getSlice()->getSliceType() == I_SLICE ||
    704             rpcBestCU->getCbf( 0, TEXT_LUMA     ) != 0   ||
    705             rpcBestCU->getCbf( 0, TEXT_CHROMA_U ) != 0   ||
    706             rpcBestCU->getCbf( 0, TEXT_CHROMA_V ) != 0     ) // avoid very complex intra if it is unlikely
    707 #endif
     704        if( rpcBestCU->getSlice()->getSliceType() == I_SLICE ||
     705          rpcBestCU->getCbf( 0, TEXT_LUMA     ) != 0   ||
     706          rpcBestCU->getCbf( 0, TEXT_CHROMA_U ) != 0   ||
     707          rpcBestCU->getCbf( 0, TEXT_CHROMA_V ) != 0     ) // avoid very complex intra if it is unlikely
     708#endif
     709        {
     710          xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
     711          rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );
     712          if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth )
    708713          {
    709             xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
    710           rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );
    711             if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth )
     714            if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
    712715            {
    713               if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
    714               {
    715                 xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
     716              xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
    716717              rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );
    717               }
    718718            }
    719719          }
     720        }
    720721
    721722        // test PCM
     
    734735#if (ENCODER_FAST_MODE)
    735736#if N0383_IL_CONSTRAINED_TILE_SETS_SEI
    736       if(pcPic->getLayerId() > 0 && !m_disableILP)
    737 #else
    738       if(pcPic->getLayerId() > 0)
    739 #endif
    740       {
    741         for(Int refLayer = 0; refLayer < pcSlice->getActiveNumILRRefIdx(); refLayer++)
    742         { 
    743            xCheckRDCostILRUni( rpcBestCU, rpcTempCU, pcSlice->getInterLayerPredLayerIdc(refLayer));
    744            rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );
     737        if(pcPic->getLayerId() > 0 && !m_disableILP)
     738#else
     739        if(pcPic->getLayerId() > 0)
     740#endif
     741        {
     742          for(Int refLayer = 0; refLayer < pcSlice->getActiveNumILRRefIdx(); refLayer++)
     743          { 
     744            xCheckRDCostILRUni( rpcBestCU, rpcTempCU, pcSlice->getInterLayerPredLayerIdc(refLayer));
     745            rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );
     746          }
    745747        }
    746       }
    747748#endif
    748749
     
    821822
    822823  if ( m_pcEncCfg->getCUTransquantBypassFlagForceValue() )
    823     {
     824  {
    824825    iMaxQP = iMinQP; // If all blocks are forced into using transquant bypass, do not loop here.
    825     }
     826  }
    826827
    827828  for (Int iQP=iMinQP; iQP<=iMaxQP; iQP++)
     
    14761477  rpcTempCU->setPredModeSubParts  ( MODE_INTER, 0, uhDepth );
    14771478 
     1479#if SVC_EXTENSION
     1480#if AMP_MRG
     1481  rpcTempCU->setMergeAMP (true);
     1482  Bool ret = m_pcPredSearch->predInterSearch ( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcRecoYuvTemp[uhDepth], false, bUseMRG );
     1483#else 
     1484  Bool ret = m_pcPredSearch->predInterSearch ( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcRecoYuvTemp[uhDepth] );
     1485#endif
     1486
     1487  if( !ret )
     1488  {
     1489    return;
     1490  }
     1491#else
    14781492#if AMP_MRG
    14791493  rpcTempCU->setMergeAMP (true);
     
    14811495#else 
    14821496  m_pcPredSearch->predInterSearch ( rpcTempCU, m_ppcOrigYuv[uhDepth], m_ppcPredYuvTemp[uhDepth], m_ppcResiYuvTemp[uhDepth], m_ppcRecoYuvTemp[uhDepth] );
     1497#endif
    14831498#endif
    14841499
Note: See TracChangeset for help on using the changeset viewer.