Changeset 210 in SHVCSoftware for branches/SHM-2.1-dev/source


Ignore:
Timestamp:
16 May 2013, 11:37:38 (12 years ago)
Author:
seregin
Message:

merge changes from the trunk

Location:
branches/SHM-2.1-dev/source
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-2.1-dev/source

  • branches/SHM-2.1-dev/source/Lib/TLibCommon/TComDataCU.cpp

    r191 r210  
    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.1-dev/source/Lib/TLibCommon/TypeDef.h

    r196 r210  
    105105
    106106// Hooks
    107 #if !AVC_BASE || AVC_SYNTAX
    108107#define SVC_MVP                          1      ///< motion hook for merge mode as an example
    109 #if !AVC_SYNTAX
     108#if !AVC_BASE && !AVC_SYNTAX
    110109#define SVC_BL_CAND_INTRA                0      ///< Intra Base Mode Prediction hook as an example
    111 #endif
    112110#endif
    113111
  • branches/SHM-2.1-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r191 r210  
    11341134        if( nalu.m_layerId == 1 && pBLPic->getPicYuvRec() == NULL )
    11351135        {
    1136           TComSPS* sps = new TComSPS();
     1136          // using EL SPS with spsId = 1
     1137          TComSPS* sps = m_parameterSetManagerDecoder[nalu.m_layerId].getPrefetchedSPS(1);
    11371138          Int  numReorderPics[MAX_TLAYER];
    11381139          Window &conformanceWindow = sps->getConformanceWindow();
Note: See TracChangeset for help on using the changeset viewer.