Changeset 1328 in SHVCSoftware


Ignore:
Timestamp:
22 Jul 2015, 00:52:14 (9 years ago)
Author:
seregin
Message:

port rev 4406

Location:
branches/SHM-dev/source
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp

    r1327 r1328  
    13781378  ("ConstrainedIntraPred",                            m_bUseConstrainedIntraPred,                       false, "Constrained Intra Prediction")
    13791379  ("FastUDIUseMPMEnabled",                            m_bFastUDIUseMPMEnabled,                           true, "If enabled, adapt intra direction search, accounting for MPM")
     1380  ("FastMEForGenBLowDelayEnabled",                    m_bFastMEForGenBLowDelayEnabled,                   true, "If enabled use a fast ME for generalised B Low Delay slices")
    13801381  ("PCMEnabledFlag",                                  m_usePCM,                                         false)
    13811382  ("PCMLog2MaxSize",                                  m_pcmLog2MaxSize,                                    5u)
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h

    r1327 r1328  
    305305  Bool      m_bUseConstrainedIntraPred;                       ///< flag for using constrained intra prediction
    306306  Bool      m_bFastUDIUseMPMEnabled;
     307  Bool      m_bFastMEForGenBLowDelayEnabled;
    307308
    308309  Int       m_decodedPictureHashSEIEnabled;                    ///< Checksum(3)/CRC(2)/MD5(1)/disable(0) acting on decoded picture hash SEI message
  • branches/SHM-dev/source/App/TAppEncoder/TAppEncTop.cpp

    r1327 r1328  
    473473    m_acTEncTop[layer].setUseConstrainedIntraPred                          ( m_bUseConstrainedIntraPred );
    474474    m_acTEncTop[layer].setFastUDIUseMPMEnabled                             ( m_bFastUDIUseMPMEnabled );
     475    m_acTEncTop[layer].setFastMEForGenBLowDelayEnabled                     ( m_bFastMEForGenBLowDelayEnabled );
    475476    m_acTEncTop[layer].setPCMLog2MinSize                                   ( m_uiPCMLog2MinSize);
    476477    m_acTEncTop[layer].setUsePCM                                           ( m_usePCM );
     
    913914  m_cTEncTop.setUseConstrainedIntraPred                           ( m_bUseConstrainedIntraPred );
    914915  m_cTEncTop.setFastUDIUseMPMEnabled                              ( m_bFastUDIUseMPMEnabled );
     916  m_cTEncTop.setFastMEForGenBLowDelayEnabled                      ( m_bFastMEForGenBLowDelayEnabled );
    915917  m_cTEncTop.setPCMLog2MinSize                                    ( m_uiPCMLog2MinSize);
    916918  m_cTEncTop.setUsePCM                                            ( m_usePCM );
  • branches/SHM-dev/source/Lib/TLibCommon/CommonDef.h

    r1326 r1328  
    202202
    203203// Fast estimation of generalized B in low-delay mode
    204 #define GPB_SIMPLE                  1           ///< Simple GPB mode
    205 #if     GPB_SIMPLE
    206204#define GPB_SIMPLE_UNI              1           ///< Simple mode for uni-direction
    207 #endif
    208205
    209206// Adaptive search range depending on POC difference
  • branches/SHM-dev/source/Lib/TLibEncoder/TEncCfg.h

    r1327 r1328  
    223223  Bool      m_bUseConstrainedIntraPred;
    224224  Bool      m_bFastUDIUseMPMEnabled;
     225  Bool      m_bFastMEForGenBLowDelayEnabled;
    225226  Bool      m_usePCM;
    226227  Int       m_PCMBitDepth[MAX_NUM_CHANNEL_TYPE];
     
    641642  Void      setUseConstrainedIntraPred      ( Bool  b )     { m_bUseConstrainedIntraPred = b; }
    642643  Void      setFastUDIUseMPMEnabled         ( Bool  b )     { m_bFastUDIUseMPMEnabled = b; }
     644  Void      setFastMEForGenBLowDelayEnabled ( Bool  b )     { m_bFastMEForGenBLowDelayEnabled = b; }
    643645  Void      setPCMInputBitDepthFlag         ( Bool  b )     { m_bPCMInputBitDepthFlag = b; }
    644646  Void      setPCMFilterDisableFlag         ( Bool  b )     {  m_bPCMFilterDisableFlag = b; }
     
    664666  Bool      getUseConstrainedIntraPred      ()      { return m_bUseConstrainedIntraPred; }
    665667  Bool      getFastUDIUseMPMEnabled         ()      { return m_bFastUDIUseMPMEnabled; }
     668  Bool      getFastMEForGenBLowDelayEnabled ()      { return m_bFastMEForGenBLowDelayEnabled; }
    666669  Bool      getPCMInputBitDepthFlag         ()      { return m_bPCMInputBitDepthFlag;   }
    667670  Bool      getPCMFilterDisableFlag         ()      { return m_bPCMFilterDisableFlag;   }
  • branches/SHM-dev/source/Lib/TLibEncoder/TEncSearch.cpp

    r1326 r1328  
    22502250    Int numModesAvailable     = 35; //total number of Intra modes
    22512251    UInt uiRdModeList[FAST_UDI_MAX_RDMODE_NUM];
    2252     Int numModesForFullRD = g_aucIntraModeNumFast[ uiWidthBit ];
     2252    Int numModesForFullRD = m_pcEncCfg->getFastUDIUseMPMEnabled()?g_aucIntraModeNumFast_UseMPM[ uiWidthBit ] : g_aucIntraModeNumFast_NotUseMPM[ uiWidthBit ];
    22532253
    22542254    if (tuRecurseWithPU.ProcessComponentSection(COMPONENT_Y))
     
    23382338      }
    23392339
    2340 #if FAST_UDI_USE_MPM
     2340      if (m_pcEncCfg->getFastUDIUseMPMEnabled())
     2341      {
    23412342#if FAST_INTRA_SHVC == 0
    2342       Int uiPreds[NUM_MOST_PROBABLE_MODES] = {-1, -1, -1};
    2343 
    2344       Int iMode = -1;
    2345       pcCU->getIntraDirPredictor( uiPartOffset, uiPreds, COMPONENT_Y, &iMode );
    2346 #endif
    2347       const Int numCand = ( iMode >= 0 ) ? iMode : Int(NUM_MOST_PROBABLE_MODES);
    2348 
    2349       for( Int j=0; j < numCand; j++)
    2350       {
    2351         Bool mostProbableModeIncluded = false;
    2352         Int mostProbableMode = uiPreds[j];
    2353 
    2354         for( Int i=0; i < numModesForFullRD; i++)
    2355         {
    2356           mostProbableModeIncluded |= (mostProbableMode == uiRdModeList[i]);
    2357         }
    2358         if (!mostProbableModeIncluded)
    2359         {
    2360           uiRdModeList[numModesForFullRD++] = mostProbableMode;
    2361         }
    2362       }
    2363 #endif // FAST_UDI_USE_MPM
     2343        Int uiPreds[NUM_MOST_PROBABLE_MODES] = {-1, -1, -1};
     2344
     2345        Int iMode = -1;
     2346        pcCU->getIntraDirPredictor( uiPartOffset, uiPreds, COMPONENT_Y, &iMode );
     2347#endif
     2348        const Int numCand = ( iMode >= 0 ) ? iMode : Int(NUM_MOST_PROBABLE_MODES);
     2349
     2350        for( Int j=0; j < numCand; j++)
     2351        {
     2352          Bool mostProbableModeIncluded = false;
     2353          Int mostProbableMode = uiPreds[j];
     2354
     2355          for( Int i=0; i < numModesForFullRD; i++)
     2356          {
     2357            mostProbableModeIncluded |= (mostProbableMode == uiRdModeList[i]);
     2358          }
     2359          if (!mostProbableModeIncluded)
     2360          {
     2361            uiRdModeList[numModesForFullRD++] = mostProbableMode;
     2362          }
     2363        }
     2364      }
    23642365    }
    23652366    else
     
    31493150        uiBitsTemp += m_auiMVPIdxCost[aaiMvpIdx[iRefList][iRefIdxTemp]][AMVP_MAX_NUM_CANDS];
    31503151
    3151 #if GPB_SIMPLE_UNI
    3152         if ( iRefList == 1 )    // list 1
     3152        if ( m_pcEncCfg->getFastMEForGenBLowDelayEnabled() && iRefList == 1 )    // list 1
    31533153        {
    31543154          if ( pcCU->getSlice()->getList1IdxToList0Idx( iRefIdxTemp ) >= 0 )
     
    31733173          xMotionEstimation ( pcCU, pcOrgYuv, iPartIdx, eRefPicList, &cMvPred[iRefList][iRefIdxTemp], iRefIdxTemp, cMvTemp[iRefList][iRefIdxTemp], uiBitsTemp, uiCostTemp );
    31743174        }
    3175 #else
    3176         xMotionEstimation ( pcCU, pcOrgYuv, iPartIdx, eRefPicList, &cMvPred[iRefList][iRefIdxTemp], iRefIdxTemp, cMvTemp[iRefList][iRefIdxTemp], uiBitsTemp, uiCostTemp );
    3177 #endif
    31783175        xCopyAMVPInfo(pcCU->getCUMvField(eRefPicList)->getAMVPInfo(), &aacAMVPInfo[iRefList][iRefIdxTemp]); // must always be done ( also when AMVP_MODE = AM_NONE )
    31793176        xCheckBestMVP(pcCU, eRefPicList, cMvTemp[iRefList][iRefIdxTemp], cMvPred[iRefList][iRefIdxTemp], aaiMvpIdx[iRefList][iRefIdxTemp], uiBitsTemp, uiCostTemp);
Note: See TracChangeset for help on using the changeset viewer.