Ignore:
Timestamp:
6 Jul 2014, 04:44:14 (10 years ago)
Author:
tech
Message:

Cleanup part 7.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-11.1-dev0/source/App/TAppDecoder/TAppDecTop.cpp

    r964 r973  
    7171#endif
    7272
    73 #if H_MV_HLS_7_VPS_P0300_27
     73#if H_MV
    7474    m_markedForOutput = false;
    7575#endif
     
    161161  Int  pocLastPic        = -MAX_INT;   
    162162
    163 #if H_MV_HLS_7_VPS_P0300_27
    164163  Int  layerIdLastPic    = -MAX_INT;
    165 #endif
    166164  Int  layerIdCurrPic    = 0;
    167165
     
    216214          || (nalu.m_nalUnitType == NAL_UNIT_VPS && nalu.m_layerId > 0)           
    217215          || (nalu.m_nalUnitType == NAL_UNIT_EOB && nalu.m_layerId > 0)   
    218 #if H_MV_HLS_8_MIS_Q0177_47
    219216          || (nalu.m_nalUnitType == NAL_UNIT_EOS && nalu.m_layerId > 0)   
    220 #endif
    221217         )
    222218      {
     
    237233        // - nalu.isSlice() == true     
    238234
    239 #if H_MV_HLS_7_VPS_P0300_27
    240235        if ( nalu.m_nalUnitType == NAL_UNIT_VPS )
    241236        {
     
    244239          {
    245240            TComVPS* vps = m_vps;
    246 #else
    247         // Update TargetDecLayerIdList only when not specified by layer id file, specification by file might actually out of conformance.
    248         if (nalu.m_nalUnitType == NAL_UNIT_VPS && m_targetDecLayerIdSetFileEmpty )
    249         {
    250           TComVPS* vps = m_tDecTop[decIdx]->getPrefetchedVPS();
    251 #endif
    252241          if ( m_targetOptLayerSetIdx == -1 )
    253242          {
     
    255244            m_targetOptLayerSetIdx = vps->getVpsNumLayerSetsMinus1();
    256245          }
    257 #if H_MV_HLS_8_HRD_Q0102_08
     246
    258247          for (Int dI = 0; dI < m_numDecoders; dI++ )
    259248          {
    260249            m_tDecTop[decIdx]->setTargetOptLayerSetIdx( m_targetOptLayerSetIdx );
    261250          }
    262 #endif
    263251
    264252          if ( m_targetOptLayerSetIdx < 0 || m_targetOptLayerSetIdx >= vps->getNumOutputLayerSets() )
     
    269257          m_targetDecLayerIdSet = vps->getTargetDecLayerIdList( m_targetOptLayerSetIdx );
    270258        }
    271 #if H_MV_HLS_7_VPS_P0300_27
    272       }
    273 #endif
     259      }
    274260#if H_3D
    275261        if (nalu.m_nalUnitType == NAL_UNIT_VPS )
     
    289275        if ( bNewPicture || !bitstreamFile )
    290276        {
    291 #if H_MV_HLS_7_VPS_P0300_27
    292277          layerIdLastPic    = layerIdCurrPic;
    293 #endif
    294278          layerIdCurrPic    = nalu.m_layerId;
    295279          pocLastPic        = pocCurrPic;
     
    340324        assert( decIdxLastPic != -1 );
    341325        m_tDecTop[decIdxLastPic]->endPicDecoding(poc, pcListPic, m_targetDecLayerIdSet );
    342 #if H_MV_HLS_7_VPS_P0300_27
    343326        xMarkForOutput( allLayersDecoded, poc, layerIdLastPic );
    344 #endif
    345327#else
    346328        m_cTDecTop.executeLoopFilters(poc, pcListPic);
     
    799781        }
    800782        pcPic->setOutputMark(false);
    801 #if H_MV_HLS_7_VPS_P0300_27
     783#if H_MV
    802784        pcPic->setPicOutputFlag(false);
    803785#endif
     
    985967        }
    986968        pcPic->setOutputMark(false);
    987 #if H_MV_HLS_7_VPS_P0300_27
     969#if H_MV
    988970        pcPic->setPicOutputFlag(false);
    989971#endif
     
    10611043    m_tDecTop[ decIdx ]->setIvPicLists( &m_ivPicLists );
    10621044    m_tDecTop[ decIdx ]->setLayerInitilizedFlags( m_layerInitilizedFlags );
    1063 #if    H_MV_HLS_8_HRD_Q0102_08
    10641045    m_tDecTop[ decIdx ]->setTargetOptLayerSetIdx( m_targetOptLayerSetIdx );   
    1065 #endif
    10661046
    10671047#if H_3D
     
    10991079}
    11001080
    1101 
    1102 #if H_MV_HLS_7_VPS_P0300_27
    11031081Void TAppDecTop::xMarkForOutput( Bool allLayersDecoded, Int pocLastPic, Int layerIdLastPic )
    11041082
     
    11521130  }
    11531131}
    1154 #endif
     1132
     1133Void TAppDecTop::xMarkAltOutPic( Int targetOutputLayer, Int pocLastPic )
     1134{
     1135  Int optLayerIdxInVps = m_vps->getLayerIdInNuh( targetOutputLayer );
     1136  Int highestNuhLayerId = -1;
     1137  TComPic* picWithHighestNuhLayerId = NULL;
     1138  for (Int dIdx = 0; dIdx < m_numDecoders; dIdx++)
     1139  {
     1140    Int curLayerId = m_tDecTop[dIdx]->getLayerId();
     1141    Int curLayerIdxInVps = m_vps->getLayerIdInNuh( curLayerId  );
     1142    if ( m_vps->getInDirectDependencyFlag(optLayerIdxInVps, curLayerIdxInVps ) )
     1143    {
     1144      TComPic* curPic = m_ivPicLists.getPic( curLayerId, pocLastPic );
     1145      if (curPic != NULL)
     1146      {
     1147        if (curPic->getReconMark() && curPic->getPicOutputFlag() )
     1148        {
     1149          curPic->setOutputMark   ( false );
     1150          curPic->setPicOutputFlag( false );
     1151          if ( curLayerId > highestNuhLayerId)
     1152          {
     1153            highestNuhLayerId = curLayerId ;
     1154            picWithHighestNuhLayerId = curPic;
     1155          }           
     1156        }
     1157      }
     1158    }
     1159  }
     1160  if ( picWithHighestNuhLayerId != NULL )
     1161  {
     1162    picWithHighestNuhLayerId->setPicOutputFlag(true);
     1163    picWithHighestNuhLayerId->setOutputMark   (true);
     1164  }
     1165}
     1166
    11551167#endif
    11561168//! \}
Note: See TracChangeset for help on using the changeset viewer.