Changeset 207 in SHVCSoftware for branches/SHM-2.0-dev/source


Ignore:
Timestamp:
16 May 2013, 07:43:35 (12 years ago)
Author:
seregin
Message:

enable SVC_MVP for IntraBL

Location:
branches/SHM-2.0-dev/source/Lib/TLibCommon
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-2.0-dev/source/Lib/TLibCommon/TComDataCU.cpp

    r175 r207  
    25322532#if SVC_MVP
    25332533  // BL collocated
    2534   TComDataCU *pcColCU = 0;
    2535   UInt uiCUAddrBase, uiAbsPartAddrBase ;
    2536   TComMvField cMvFieldBaseColCU[2];
    2537   if(m_layerId) 
    2538   {
    2539     pcColCU = getBaseColCU( xP + nPSW/2, yP + nPSH/2, uiCUAddrBase, uiAbsPartAddrBase );
    2540    
     2534  TComDataCU *pcColCU = NULL;
     2535  UInt uiCUAddrBase = 0, uiAbsPartAddrBase = 0;
     2536#if AVC_BASE
     2537  if( !this->getSlice()->getVPS()->getAvcBaseLayerFlag() || AVC_SYNTAX )
     2538#endif
     2539  {
     2540    TComMvField cMvFieldBaseColCU[2];
     2541    if(m_layerId) 
     2542    {
     2543      pcColCU = getBaseColCU( xP + nPSW/2, yP + nPSH/2, uiCUAddrBase, uiAbsPartAddrBase );
     2544
    25412545#if INTRA_BL
    2542     if( pcColCU && pcColCU->isIntraBL( uiAbsPartAddrBase ) )
    2543     {
    2544       pcColCU = NULL;
    2545     }
    2546 #endif
    2547    
    2548     if(pcColCU && !pcColCU->isIntra( uiAbsPartAddrBase ) )
    2549     {
    2550       abCandIsInter[iCount] = true;
    2551 
    2552       // get interDir
    2553       puhInterDirNeighbours[iCount] = pcColCU->getInterDir( uiAbsPartAddrBase );
    2554 
    2555       pcMvFieldNeighbours[(iCount << 1)].setMvField( TComMv(0,0), -1);
    2556       pcMvFieldNeighbours[(iCount << 1) + 1].setMvField( TComMv(0,0), -1);
    2557 
    2558       if( puhInterDirNeighbours[iCount] & 1 )
    2559       {
    2560         pcColCU->getMvField( pcColCU, uiAbsPartAddrBase, REF_PIC_LIST_0, cMvFieldBaseColCU[0]);
    2561         scaleBaseMV( pcMvFieldNeighbours[iCount<<1], cMvFieldBaseColCU[0] );
    2562       }
    2563 
    2564       if ( getSlice()->isInterB() && puhInterDirNeighbours[iCount] & 2 )
    2565       {
    2566         pcColCU->getMvField( pcColCU, uiAbsPartAddrBase, REF_PIC_LIST_1, cMvFieldBaseColCU[1] );
    2567         scaleBaseMV( pcMvFieldNeighbours[(iCount<<1)+1], cMvFieldBaseColCU[1] );
    2568       }
    2569 
    2570       if( puhInterDirNeighbours[iCount] > 0 )
    2571       {
    2572         if ( mrgCandIdx == iCount )
     2546      if( pcColCU && pcColCU->isIntraBL( uiAbsPartAddrBase ) )
     2547      {
     2548        pcColCU = NULL;
     2549      }
     2550#endif
     2551
     2552      if(pcColCU && !pcColCU->isIntra( uiAbsPartAddrBase ) )
     2553      {
     2554        abCandIsInter[iCount] = true;
     2555
     2556        // get interDir
     2557        puhInterDirNeighbours[iCount] = pcColCU->getInterDir( uiAbsPartAddrBase );
     2558
     2559        pcMvFieldNeighbours[(iCount << 1)].setMvField( TComMv(0,0), -1);
     2560        pcMvFieldNeighbours[(iCount << 1) + 1].setMvField( TComMv(0,0), -1);
     2561
     2562        if( puhInterDirNeighbours[iCount] & 1 )
    25732563        {
    2574           return;
     2564          pcColCU->getMvField( pcColCU, uiAbsPartAddrBase, REF_PIC_LIST_0, cMvFieldBaseColCU[0]);
     2565          scaleBaseMV( pcMvFieldNeighbours[iCount<<1], cMvFieldBaseColCU[0] );
    25752566        }
    2576         iCount ++;
     2567
     2568        if ( getSlice()->isInterB() && puhInterDirNeighbours[iCount] & 2 )
     2569        {
     2570          pcColCU->getMvField( pcColCU, uiAbsPartAddrBase, REF_PIC_LIST_1, cMvFieldBaseColCU[1] );
     2571          scaleBaseMV( pcMvFieldNeighbours[(iCount<<1)+1], cMvFieldBaseColCU[1] );
     2572        }
     2573
     2574        if( puhInterDirNeighbours[iCount] > 0 )
     2575        {
     2576          if ( mrgCandIdx == iCount )
     2577          {
     2578            return;
     2579          }
     2580          iCount ++;
     2581        }
    25772582      }
    25782583    }
  • branches/SHM-2.0-dev/source/Lib/TLibCommon/TypeDef.h

    r187 r207  
    103103
    104104// Hooks
    105 #if !AVC_BASE || AVC_SYNTAX
    106105#define SVC_MVP                          1      ///< motion hook for merge mode as an example
    107 #if !AVC_SYNTAX
     106#if !AVC_BASE && !AVC_SYNTAX
    108107#define SVC_BL_CAND_INTRA                0      ///< Intra Base Mode Prediction hook as an example
    109 #endif
    110108#endif
    111109
Note: See TracChangeset for help on using the changeset viewer.