Changeset 726 in SHVCSoftware for branches/SHM-6-dev/source/Lib/TLibCommon


Ignore:
Timestamp:
23 Apr 2014, 08:24:48 (12 years ago)
Author:
seregin
Message:

checks for ILRP prediction type

File:
1 edited

Legend:

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

    r717 r726  
    785785  //set L0 inter-layer reference picture modification
    786786#if RPL_INIT_N0316_N0082
    787   Bool hasModification = (m_aiNumRefIdx[REF_PIC_LIST_0] == (numberOfPocBeforeCurr + m_activeNumILRRefIdx)) ? false : true;
     787  Bool hasModification = (m_aiNumRefIdx[REF_PIC_LIST_0] >= (numberOfPocBeforeCurr + m_activeNumILRRefIdx)) ? false : true;
    788788#else
    789789  Bool hasModification = (m_aiNumRefIdx[REF_PIC_LIST_0] == numberOfRpsCurrTempList) ? false : true;
     
    799799      refPicListModification->setRefPicSetIdxL0(i, i);
    800800    }
     801
    801802    if(m_aiNumRefIdx[REF_PIC_LIST_0] > numberOfRpsCurrTempList)
    802803    {
    803         // repeat last ref pic when the number of active ref idx are more than RPS entries
     804      // repeat last ref pic when the number of active ref idx are more than RPS entries
    804805      for (Int i = numberOfRpsCurrTempList; i < m_aiNumRefIdx[REF_PIC_LIST_0]; i ++)
    805806      {
     
    809810    else
    810811    {
    811       for(Int i = m_activeNumILRRefIdx; i > 0; i-- )
     812      // number of ILRPs included into the reference picture list with the list modification
     813      Int inlucdeNumILRP = min(m_aiNumRefIdx[REF_PIC_LIST_0]-numberOfPocBeforeCurr, m_activeNumILRRefIdx);
     814
     815      for(Int i = inlucdeNumILRP; i > 0; i-- )
    812816      {
    813817#if RPL_INIT_N0316_N0082
     
    821825          for (Int j = numberOfPocBeforeCurr; j < (m_aiNumRefIdx[REF_PIC_LIST_0] - i); j++)
    822826          {
    823             refPicListModification->setRefPicSetIdxL0(j, j + m_activeNumILRRefIdx);
     827            assert( j + inlucdeNumILRP < numberOfRpsCurrTempList );
     828            refPicListModification->setRefPicSetIdxL0(j, j + inlucdeNumILRP);
    824829          }
    825830        }
     
    832837
    833838  //set L1 inter-layer reference picture modification
    834   hasModification = (m_aiNumRefIdx[REF_PIC_LIST_1] == numberOfRpsCurrTempList) ? false : true;
     839  hasModification = (m_aiNumRefIdx[REF_PIC_LIST_1] >= numberOfRpsCurrTempList) ? false : true;
    835840#if N0147_IRAP_ALIGN_FLAG
    836841  hasModification = hasModification && ( m_aiNumRefIdx[REF_PIC_LIST_1] > 1 );
     
    854859    else
    855860    {
    856       for(Int i = m_activeNumILRRefIdx; i > 0; i-- )
     861      Int inlucdeNumILRP = min(m_aiNumRefIdx[REF_PIC_LIST_1], m_activeNumILRRefIdx);
     862
     863      for(Int i = inlucdeNumILRP; i > 0; i-- )
    857864      {
    858865        refPicListModification->setRefPicSetIdxL1(m_aiNumRefIdx[REF_PIC_LIST_1] - i, numberOfRpsCurrTempList - i);
Note: See TracChangeset for help on using the changeset viewer.