Changeset 446 in SHVCSoftware for branches


Ignore:
Timestamp:
8 Nov 2013, 02:13:51 (11 years ago)
Author:
seregin
Message:

copy layerId, reference picture list modification information for the slices in the picture along with performing the upsampling once per picture

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

Legend:

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

    r442 r446  
    118118, m_temporalLayerNonReferenceFlag ( false )
    119119, m_enableTMVPFlag                ( true )
     120#if REF_IDX_MFM
     121, m_bMFMEnabledFlag               ( false )
     122#endif
    120123{
    121124  m_aiNumRefIdx[0] = m_aiNumRefIdx[1] = 0;
     
    631634#if RPL_INIT_N0316_N0082
    632635    if( m_layerId > 0 )
    633     {
     636    {     
    634637#if JCTVC_M0458_INTERLAYER_RPS_SIG
    635638      for( i = 0; i < m_activeNumILRRefIdx && cIdx < numPocTotalCurr; cIdx ++, i ++)     
     
    11331136#if SVC_EXTENSION
    11341137  m_pcVPS                = pSrc->m_pcVPS;
     1138  m_layerId              = pSrc->m_layerId;
    11351139#if JCTVC_M0458_INTERLAYER_RPS_SIG
    11361140  m_activeNumILRRefIdx         = pSrc->m_activeNumILRRefIdx;
  • branches/SHM-4.0-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r442 r446  
    684684
    685685#if SVC_EXTENSION
     686  m_apcSlicePilot->setSliceIdx( m_uiSliceIdx ); // it should be removed if HM will reflect it in above
    686687#if VPS_EXTN_DIRECT_REF_LAYERS && M0457_PREDICTION_INDICATIONS
    687688  setRefLayerParams(m_apcSlicePilot->getVPS());
     
    11131114#endif
    11141115
    1115 #if SVC_EXTENSION   
    1116     if(m_layerId > 0)
    1117     {
    1118       for( i = 0; i < pcSlice->getActiveNumILRRefIdx(); i++ )
    1119       {
    1120         UInt refLayerIdc = pcSlice->getInterLayerPredLayerIdc(i);
     1116#if SVC_EXTENSION
     1117    // Create upsampling reference layer pictures for all possible dependent layers and do it only once for the first slice.
     1118    // Other slices might choose which reference pictures to be used for inter-layer prediction
     1119    if( m_layerId > 0 && m_uiSliceIdx == 0 )
     1120    {     
     1121      for( i = 0; i < pcSlice->getNumILRRefIdx(); i++ )
     1122      {
     1123        UInt refLayerIdc = i;
    11211124#if AVC_BASE
    11221125        if( pcSlice->getVPS()->getRefLayerId( m_layerId, refLayerIdc ) == 0 && m_parameterSetManagerDecoder[0].getActiveVPS()->getAvcBaseLayerFlag() )
     
    12001203    if( m_layerId > 0 && pcSlice->getActiveNumILRRefIdx() )
    12011204    {
     1205      for( i = 0; i < pcSlice->getActiveNumILRRefIdx(); i++ )
     1206      {
     1207        UInt refLayerIdc = pcSlice->getInterLayerPredLayerIdc(i);
     1208#if AVC_BASE
     1209        if( pcSlice->getVPS()->getRefLayerId( m_layerId, refLayerIdc ) == 0 && m_parameterSetManagerDecoder[0].getActiveVPS()->getAvcBaseLayerFlag() )
     1210        {
     1211          pcSlice->setBaseColPic ( refLayerIdc, *m_ppcTDecTop[0]->getListPic()->begin() );
     1212#if AVC_SYNTAX
     1213          TComPic* pBLPic = pcSlice->getBaseColPic(refLayerIdc);
     1214          if( pcSlice->getPOC() == 0 )
     1215          {
     1216            // initialize partition order.
     1217            UInt* piTmp = &g_auiZscanToRaster[0];
     1218            initZscanToRaster( pBLPic->getPicSym()->getMaxDepth() + 1, 1, 0, piTmp );
     1219            initRasterToZscan( pBLPic->getPicSym()->getMaxCUWidth(), pBLPic->getPicSym()->getMaxCUHeight(), pBLPic->getPicSym()->getMaxDepth() + 1 );
     1220          }     
     1221          pBLPic->getSlice( 0 )->initBaseLayerRPL( pcSlice );
     1222          pBLPic->readBLSyntax( m_ppcTDecTop[0]->getBLSyntaxFile(), SYNTAX_BYTES );
     1223#endif
     1224        }
     1225        else
     1226        {
     1227#if VPS_EXTN_DIRECT_REF_LAYERS
     1228          TDecTop *pcTDecTop = (TDecTop *)getRefLayerDec( refLayerIdc );
     1229#else
     1230          TDecTop *pcTDecTop = (TDecTop *)getLayerDec( m_layerId-1 );
     1231#endif
     1232          TComList<TComPic*> *cListPic = pcTDecTop->getListPic();
     1233          pcSlice->setBaseColPic ( *cListPic, refLayerIdc );
     1234        }
     1235#else
     1236#if VPS_EXTN_DIRECT_REF_LAYERS
     1237        TDecTop *pcTDecTop = (TDecTop *)getRefLayerDec( refLayerIdc );
     1238#else
     1239        TDecTop *pcTDecTop = (TDecTop *)getLayerDec( m_layerId-1 );
     1240#endif
     1241        TComList<TComPic*> *cListPic = pcTDecTop->getListPic();
     1242        pcSlice->setBaseColPic ( *cListPic, refLayerIdc );
     1243#endif
     1244
     1245        pcSlice->setFullPelBaseRec ( refLayerIdc, pcPic->getFullPelBaseRec(refLayerIdc) );
     1246      }
     1247
    12021248      setILRPic(pcPic);
    12031249#if REF_IDX_MFM
  • branches/SHM-4.0-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r442 r446  
    16071607          pcSlice->setSliceSegmentCurStartCUAddr  ( startCUAddrSlice      );
    16081608          pcSlice->setSliceBits(0);
     1609#if SVC_EXTENSION
     1610          // copy reference list modification info from the first slice, assuming that this information is the same across all slices in the picture
     1611          memcpy( pcSlice->getRefPicListModification(), pcPic->getSlice(0)->getRefPicListModification(), sizeof(TComRefPicListModification) );
     1612#endif
    16091613          uiNumSlices ++;
    16101614        }
Note: See TracChangeset for help on using the changeset viewer.