Changeset 723 in SHVCSoftware


Ignore:
Timestamp:
22 Apr 2014, 19:22:47 (11 years ago)
Author:
seregin
Message:

add a check for motion prediction type of ILRP used as a collocated picture

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

Legend:

Unmodified
Added
Removed
  • branches/SHM-6-dev/source/Lib/TLibCommon/TComPrediction.cpp

    r722 r723  
    488488
    489489#if SVC_EXTENSION
    490   TComPic* refPic = pcCU->getSlice()->getRefPic(eRefPicList, iRefIdx);
    491 
    492   // ILRP has to be for the sample prediction type
    493   assert( ( refPic->isILR(pcCU->getLayerId()) && pcCU->getSlice()->getVPS()->isSamplePredictionType( pcCU->getLayerId(), refPic->getLayerId() ) ) || refPic->isILR(pcCU->getLayerId()) == false );
     490  if( pcCU->getLayerId() > 0 )
     491  {
     492    TComPic* refPic = pcCU->getSlice()->getRefPic(eRefPicList, iRefIdx);
     493
     494    // It is a requirement of bitstream conformance that when the reference picture represented by the variable refIdxLX is an inter-layer reference picture,
     495    // VpsInterLayerSamplePredictionEnabled[ LayerIdxInVps[ currLayerId ] ][ LayerIdxInVps[ rLId ] ] shall be equal to 1, where rLId is set equal to nuh_layer_id of the inter-layer picture
     496    assert( ( refPic->isILR(pcCU->getLayerId()) && pcCU->getSlice()->getVPS()->isSamplePredictionType( pcCU->getLayerId(), refPic->getLayerId() ) ) || refPic->isILR(pcCU->getLayerId()) == false );
    494497
    495498#if REF_IDX_ME_ZEROMV
    496   assert( ( refPic->isILR(pcCU->getLayerId()) && cMv.getHor() == 0 && cMv.getVer() == 0 ) || refPic->isILR(pcCU->getLayerId()) == false );
     499    // It is a requirement of bitstream conformance that the variables mvLX[ 0 ] and mvLX[ 1 ] shall be equal to 0 if the value of refIdxLX corresponds to an inter-layer reference picture.
     500    assert( ( refPic->isILR(pcCU->getLayerId()) && cMv.getHor() == 0 && cMv.getVer() == 0 ) || refPic->isILR(pcCU->getLayerId()) == false );
    497501#endif
     502  }
    498503#endif
    499504
  • branches/SHM-6-dev/source/Lib/TLibCommon/TComSlice.h

    r722 r723  
    884884  Void   setDirectDependencyType(Int currLayerId, Int refLayerId, UInt x)       { m_directDependencyType[currLayerId][refLayerId] = x;    }
    885885  Bool   isSamplePredictionType(Int currLayerId, Int refLayerId)                { assert(currLayerId != refLayerId); return ( ( m_directDependencyType[currLayerId][refLayerId] + 1 ) & 1 ) ? true : false; }
     886  Bool   isMotionPredictionType(Int currLayerId, Int refLayerId)                { assert(currLayerId != refLayerId); return ( ( ( m_directDependencyType[currLayerId][refLayerId] + 1 ) & 2 ) >> 1 ) ? true : false; }
    886887#endif
    887888  UInt   getNumProfileTierLevel()                                { return m_numProfileTierLevel; }
  • branches/SHM-6-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r722 r723  
    17631763      }
    17641764    }
    1765 #endif
     1765#endif
     1766
     1767    if( m_layerId > 0 && pcSlice->getEnableTMVPFlag() )
     1768    {
     1769      TComPic* refPic = pcSlice->getRefPic(RefPicList(1 - pcSlice->getColFromL0Flag()), pcSlice->getColRefIdx());
     1770
     1771      // It is a requirement of bitstream conformance when the collocated picture, used for temporal motion vector prediction, is an inter-layer reference picture,
     1772      // VpsInterLayerMotionPredictionEnabled[ LayerIdxInVps[ currLayerId ] ][ LayerIdxInVps[ rLId ] ] shall be equal to 1, where rLId is set equal to nuh_layer_id of the inter-layer picture.
     1773      if( refPic->isILR(pcSlice->getLayerId()) )
     1774      {
     1775        assert( m_ppcTDecTop[m_layerId]->getMotionPredEnabledFlag(refPic->getLayerId()) );
     1776      }
     1777    }
    17661778#endif //SVC_EXTENSION
    17671779   
Note: See TracChangeset for help on using the changeset viewer.