Changeset 815 in SHVCSoftware for trunk/source/Lib/TLibCommon/TComDataCU.cpp


Ignore:
Timestamp:
30 Jun 2014, 06:13:06 (10 years ago)
Author:
seregin
Message:

merge with SHM-6-dev branch

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/source

  • trunk/source/Lib/TLibCommon/TComDataCU.cpp

    r713 r815  
    35173517#endif
    35183518
    3519 #if N0139_POSITION_ROUNDING_OFFSET
     3519#if REF_IDX_MFM
     3520  // offset for collocated block in the motion mapping
    35203521  if( iMotionMapping == 1 )
    35213522  {
     3523    Bool unequalPictureSizeFlag = g_posScalingFactor[refLayerIdc][0] != 65536 || g_posScalingFactor[refLayerIdc][1] != 65536; //the condition should be updated according to the WD.
     3524
    35223525    // actually, motion field compression is performed in the Void TComPic::compressMotion() function, but with (+4) the rounding may have effect on the picture boundary check.
    3523     iBX = ( ( iBX + 4 ) >> 4 ) << 4;
    3524     iBY = ( ( iBY + 4 ) >> 4 ) << 4;
     3526    if( unequalPictureSizeFlag )
     3527    {
     3528      iBX = ( ( iBX + 4 ) >> 4 ) << 4;
     3529      iBY = ( ( iBY + 4 ) >> 4 ) << 4;
     3530    }
     3531    else
     3532    {
     3533      iBX += 4;
     3534      iBY += 4;
     3535    }
    35253536  }
    35263537#endif
     
    36373648  {
    36383649    Int refIdxL0 = cMvFieldL0.getRefIdx();
    3639     if(getSlice()->getRefPic(REF_PIC_LIST_0, refIdxL0)->isILR(m_layerId))
     3650    TComPic* refPic = m_pcSlice->getRefPic(REF_PIC_LIST_0, refIdxL0);
     3651
     3652    if(refPic->isILR(m_layerId))
    36403653    {
    36413654      checkZeroMVILR &= (cMvFieldL0.getHor() == 0 && cMvFieldL0.getVer() == 0);
     3655
     3656      // It is a requirement of bitstream conformance that when the reference picture represented by the variable refIdxLX is an inter-layer reference picture,
     3657      // VpsInterLayerSamplePredictionEnabled[ LayerIdxInVps[ currLayerId ] ][ LayerIdxInVps[ rLId ] ] shall be equal to 1, where rLId is set equal to nuh_layer_id of the inter-layer picture
     3658      checkZeroMVILR &= m_pcSlice->getVPS()->isSamplePredictionType( m_layerId, refPic->getLayerId() );
    36423659    }
    36433660  }
     
    36453662  {
    36463663    Int refIdxL1  = cMvFieldL1.getRefIdx();
    3647     if(getSlice()->getRefPic(REF_PIC_LIST_1, refIdxL1)->isILR(m_layerId))
     3664    TComPic* refPic = m_pcSlice->getRefPic(REF_PIC_LIST_1, refIdxL1);
     3665
     3666    if(refPic->isILR(m_layerId))
    36483667    {
    36493668      checkZeroMVILR &= (cMvFieldL1.getHor() == 0 && cMvFieldL1.getVer() == 0);
     3669
     3670      // It is a requirement of bitstream conformance that when the reference picture represented by the variable refIdxLX is an inter-layer reference picture,
     3671      // VpsInterLayerSamplePredictionEnabled[ LayerIdxInVps[ currLayerId ] ][ LayerIdxInVps[ rLId ] ] shall be equal to 1, where rLId is set equal to nuh_layer_id of the inter-layer picture
     3672      checkZeroMVILR &= m_pcSlice->getVPS()->isSamplePredictionType( m_layerId, refPic->getLayerId() );
    36503673    }
    36513674  }
Note: See TracChangeset for help on using the changeset viewer.