Changeset 446 in SHVCSoftware for branches/SHM-4.0-dev/source/Lib/TLibDecoder


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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.