Changeset 460 in SHVCSoftware


Ignore:
Timestamp:
12 Nov 2013, 03:47:27 (11 years ago)
Author:
seregin
Message:

correct refLayerIdc for ILP derivation

Location:
branches/SHM-4.0-dev/source/Lib
Files:
7 edited

Legend:

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

    r455 r460  
    30493049#endif
    30503050}
    3051 #endif
    30523051
    30533052#if REF_IDX_MFM
     
    30963095#endif
    30973096
     3097Void TComSlice::setILRPic(TComPic **pcIlpPic)
     3098{
     3099  for( Int i = 0; i < m_activeNumILRRefIdx; i++ )
     3100  {
     3101    Int refLayerIdc = m_interLayerPredLayerIdc[i];
     3102
     3103    if( pcIlpPic[refLayerIdc] )
     3104    {
     3105      pcIlpPic[refLayerIdc]->copyUpsampledPictureYuv( m_pcPic->getFullPelBaseRec( refLayerIdc ), pcIlpPic[refLayerIdc]->getPicYuvRec() );
     3106      pcIlpPic[refLayerIdc]->getSlice(0)->setPOC( m_iPOC );
     3107      pcIlpPic[refLayerIdc]->setLayerId( m_layerId ); //set reference layerId
     3108      pcIlpPic[refLayerIdc]->getPicYuvRec()->setBorderExtension( false );
     3109      pcIlpPic[refLayerIdc]->getPicYuvRec()->extendPicBorder();
     3110      for (Int j=0; j<pcIlpPic[refLayerIdc]->getPicSym()->getNumberOfCUsInFrame(); j++)    // set reference CU layerId
     3111      {
     3112        pcIlpPic[refLayerIdc]->getPicSym()->getCU(j)->setLayerId( pcIlpPic[refLayerIdc]->getLayerId() );
     3113      }
     3114    }
     3115  }
     3116}
     3117
     3118#endif //SVC_EXTENSION
     3119
    30983120//! \}
  • branches/SHM-4.0-dev/source/Lib/TLibCommon/TComSlice.h

    r454 r460  
    20582058  UInt getBitDepthY();
    20592059  UInt getBitDepthC();
    2060   Int getQpBDOffsetY();
    2061   Int getQpBDOffsetC();
    2062 #endif
     2060  Int  getQpBDOffsetY();
     2061  Int  getQpBDOffsetC();
     2062#endif
     2063
     2064  Void setILRPic(TComPic **pcIlpPic);
    20632065
    20642066#endif //SVC_EXTENSION
  • branches/SHM-4.0-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r459 r460  
    200200  }
    201201}
    202 
    203 
    204 
    205 Void TDecTop::setILRPic(TComPic *pcPic)
    206 {
    207   for( Int i = 0; i < pcPic->getSlice(0)->getActiveNumILRRefIdx(); i++ )
    208   {
    209     Int refLayerIdc = pcPic->getSlice(0)->getInterLayerPredLayerIdc(i);
    210 
    211     if(m_cIlpPic[refLayerIdc])
    212     {
    213       m_cIlpPic[refLayerIdc]->copyUpsampledPictureYuv(pcPic->getFullPelBaseRec(refLayerIdc), m_cIlpPic[refLayerIdc]->getPicYuvRec());
    214       m_cIlpPic[refLayerIdc]->getSlice(0)->setPOC(pcPic->getPOC());
    215       m_cIlpPic[refLayerIdc]->setLayerId(pcPic->getSlice(0)->getBaseColPic(refLayerIdc)->getLayerId()); //set reference layerId
    216       m_cIlpPic[refLayerIdc]->getPicYuvRec()->setBorderExtension(false);
    217       m_cIlpPic[refLayerIdc]->getPicYuvRec()->extendPicBorder();
    218       for (Int j=0; j<m_cIlpPic[refLayerIdc]->getPicSym()->getNumberOfCUsInFrame(); j++)  // set reference CU layerId
    219       {
    220         m_cIlpPic[refLayerIdc]->getPicSym()->getCU(j)->setLayerId(m_cIlpPic[refLayerIdc]->getLayerId());
    221       }
    222     }
    223   }
    224 }
    225202#endif
    226203
     
    310287#endif
    311288        }
    312 #if MAX_ONE_RESAMPLING_DIRECT_LAYERS
    313 #if SCALABILITY_MASK_E0104
    314         if(pcSlice->getVPS()->getScalabilityMask(2))
    315 #else
    316         if(pcSlice->getVPS()->getScalabilityMask(1))
    317 #endif
    318         {
    319           pcSlice->setPic(rpcPic);
    320         }
    321 #endif
    322289      }
    323290    }
     
    10991066  pcPic->setLayerId(nalu.m_layerId);
    11001067  pcSlice->setLayerId(nalu.m_layerId);
     1068  pcSlice->setPic(pcPic);
    11011069#endif
    11021070
     
    12321200      }
    12331201
    1234       setILRPic(pcPic);
     1202      pcSlice->setILRPic( m_cIlpPic );
    12351203#if REF_IDX_MFM
    12361204#if M0457_COL_PICTURE_SIGNALING
     
    12561224    if( pcSlice->getMFMEnabledFlag() )
    12571225    {
    1258       Int nRefLayerID = pcSlice->getRefPic( pcSlice->getSliceType() == B_SLICE ? ( RefPicList )( 1 - pcSlice->getColFromL0Flag() ) : REF_PIC_LIST_0 , pcSlice->getColRefIdx() )->getLayerId();
    1259       if( nRefLayerID != pcSlice->getLayerId() )
    1260       {
    1261         TComPic * pColBasePic = pcSlice->getBaseColPic( nRefLayerID );
     1226      Int refLayerId = pcSlice->getRefPic( pcSlice->getSliceType() == B_SLICE ? ( RefPicList )( 1 - pcSlice->getColFromL0Flag() ) : REF_PIC_LIST_0 , pcSlice->getColRefIdx() )->getLayerId();
     1227      if( refLayerId != pcSlice->getLayerId() )
     1228      {       
     1229        TComPic * pColBasePic = pcSlice->getBaseColPic( refLayerId );
    12621230        assert( pColBasePic->checkSameRefInfo() == true );
    12631231      }
  • branches/SHM-4.0-dev/source/Lib/TLibDecoder/TDecTop.h

    r442 r460  
    213213  Void      xInitILRP(TComSPS *pcSPS);
    214214#endif
    215   Void      setILRPic(TComPic *pcPic);
    216215#endif
    217216#if AVC_SYNTAX || SYNTAX_OUTPUT
  • branches/SHM-4.0-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r459 r460  
    11481148    if( m_layerId > 0 && pcSlice->getActiveNumILRRefIdx() )
    11491149    {
    1150       m_pcEncTop->setILRPic(pcPic);
     1150      pcSlice->setILRPic( m_pcEncTop->getIlpList() );
    11511151#if REF_IDX_MFM
    11521152#if M0457_COL_PICTURE_SIGNALING
  • branches/SHM-4.0-dev/source/Lib/TLibEncoder/TEncTop.cpp

    r448 r460  
    15391539#endif
    15401540
    1541 #if SVC_EXTENSION
    15421541#if !REPN_FORMAT_IN_VPS
    15431542Void TEncTop::xInitILRP()
     
    16271626}
    16281627#endif
    1629 Void TEncTop::setILRPic(TComPic *pcPic)
    1630 {
    1631   for( Int i = 0; i < pcPic->getSlice(0)->getActiveNumILRRefIdx(); i++ )
    1632   {
    1633     Int refLayerIdc = pcPic->getSlice(0)->getInterLayerPredLayerIdc(i);
    1634 
    1635     if(m_cIlpPic[refLayerIdc])
    1636     {
    1637       m_cIlpPic[refLayerIdc]->copyUpsampledPictureYuv(pcPic->getFullPelBaseRec(refLayerIdc), m_cIlpPic[refLayerIdc]->getPicYuvRec());
    1638       m_cIlpPic[refLayerIdc]->getSlice(0)->setPOC(pcPic->getPOC());
    1639       m_cIlpPic[refLayerIdc]->setLayerId(pcPic->getSlice(0)->getBaseColPic(refLayerIdc)->getLayerId()); //set reference layerId
    1640       m_cIlpPic[refLayerIdc]->getPicYuvRec()->setBorderExtension(false);
    1641       m_cIlpPic[refLayerIdc]->getPicYuvRec()->extendPicBorder();
    1642       for (Int j=0; j<m_cIlpPic[refLayerIdc]->getPicSym()->getNumberOfCUsInFrame(); j++)    // set reference CU layerId
    1643       {
    1644         m_cIlpPic[refLayerIdc]->getPicSym()->getCU(j)->setLayerId(m_cIlpPic[refLayerIdc]->getLayerId());
    1645       }
    1646     }
    1647   }
    1648 }
    1649 #endif
    1650 #endif
     1628#endif //SVC_EXTENSION
    16511629//! \}
  • branches/SHM-4.0-dev/source/Lib/TLibEncoder/TEncTop.h

    r448 r460  
    219219#if SVC_EXTENSION
    220220  TComPic** getIlpList() { return m_cIlpPic; }
    221   Void      setILRPic(TComPic *pcPic);
    222221#if REF_IDX_MFM
    223222  Void      setMFMEnabledFlag       (Bool flag)   {m_bMFMEnabledFlag = flag;}
Note: See TracChangeset for help on using the changeset viewer.