Changeset 773 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecTop.cpp


Ignore:
Timestamp:
16 Jan 2014, 09:56:13 (11 years ago)
Author:
tech
Message:

Merged branch/9.2-dev0@722.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibDecoder/TDecTop.cpp

    r758 r773  
    228228    m_uiMaxViewIndex                     = std::max( m_uiMaxViewIndex, uiViewIndex );
    229229    m_aiViewId[ uiViewIndex ]            = pcSlice->getViewId();
    230 #if CAM_HLS_F0136_F0045_F0082
     230
    231231    if( uiViewIndex == 1 )
    232232    {
     
    239239      AOF( m_bCamParsVaryOverTime    == pcSlice->getVPS()->hasCamParInSliceHeader ( uiViewIndex ) );
    240240    }
    241 #else
    242     if( uiViewIndex == 1 )
    243     {
    244       m_uiCamParsCodedPrecision       = pcSlice->getSPS()->getCamParPrecision     ();
    245       m_bCamParsVaryOverTime          = pcSlice->getSPS()->hasCamParInSliceHeader ();
    246     }
    247     else if( uiViewIndex > 1 )
    248     {
    249       AOF( m_uiCamParsCodedPrecision == pcSlice->getSPS()->getCamParPrecision     () );
    250       AOF( m_bCamParsVaryOverTime    == pcSlice->getSPS()->hasCamParInSliceHeader () );
    251     }
    252 #endif
     241
    253242    for( UInt uiBaseIndex = 0; uiBaseIndex < uiViewIndex; uiBaseIndex++ )
    254243    {
     
    264253      else
    265254      {
    266 #if CAM_HLS_F0136_F0045_F0082
    267255        m_aaiCodedScale [ uiBaseIndex ][ uiViewIndex ]  = pcSlice->getVPS()->getCodedScale    (uiViewIndex) [ uiBaseIndex ];
    268256        m_aaiCodedOffset[ uiBaseIndex ][ uiViewIndex ]  = pcSlice->getVPS()->getCodedOffset   (uiViewIndex) [ uiBaseIndex ];
    269257        m_aaiCodedScale [ uiViewIndex ][ uiBaseIndex ]  = pcSlice->getVPS()->getInvCodedScale (uiViewIndex) [ uiBaseIndex ];
    270258        m_aaiCodedOffset[ uiViewIndex ][ uiBaseIndex ]  = pcSlice->getVPS()->getInvCodedOffset(uiViewIndex) [ uiBaseIndex ];
    271 #else
    272         m_aaiCodedScale [ uiBaseIndex ][ uiViewIndex ]  = pcSlice->getSPS()->getCodedScale    () [ uiBaseIndex ];
    273         m_aaiCodedOffset[ uiBaseIndex ][ uiViewIndex ]  = pcSlice->getSPS()->getCodedOffset   () [ uiBaseIndex ];
    274         m_aaiCodedScale [ uiViewIndex ][ uiBaseIndex ]  = pcSlice->getSPS()->getInvCodedScale () [ uiBaseIndex ];
    275         m_aaiCodedOffset[ uiViewIndex ][ uiBaseIndex ]  = pcSlice->getSPS()->getInvCodedOffset() [ uiBaseIndex ];
    276 #endif
    277259        xInitLUTs( uiBaseIndex, uiViewIndex, m_aaiCodedScale[ uiBaseIndex ][ uiViewIndex ], m_aaiCodedOffset[ uiBaseIndex ][ uiViewIndex ], m_adBaseViewShiftLUT, m_aiBaseViewShiftLUT );
    278260        xInitLUTs( uiViewIndex, uiBaseIndex, m_aaiCodedScale[ uiViewIndex ][ uiBaseIndex ], m_aaiCodedOffset[ uiViewIndex ][ uiBaseIndex ], m_adBaseViewShiftLUT, m_aiBaseViewShiftLUT );
     
    302284}
    303285
    304 #if QC_DEPTH_IV_MRG_F0125
     286#if H_3D_IV_MERGE
    305287Void
    306288CamParsCollector::copyCamParamForSlice( TComSlice* pcSlice )
    307289{
    308 #if !CAM_HLS_F0136_F0045_F0082
    309   UInt uiViewIndex = pcSlice->getViewIndex();
    310 
    311   pcSlice->getSPS()->initCamParaSPS( uiViewIndex, m_uiCamParsCodedPrecision, m_bCamParsVaryOverTime, m_aaiCodedScale, m_aaiCodedOffset );
    312 #endif
    313290  if( m_bCamParsVaryOverTime )
    314291  {
     
    656633#if H_MV
    657634  m_apcSlicePilot->setVPS(vps); 
    658 #if H_MV_6_PS_0092_17
    659635  // The nuh_layer_id value of the NAL unit containing the PPS that is activated for a layer layerA with nuh_layer_id equal to nuhLayerIdA shall be equal to 0, or nuhLayerIdA, or the nuh_layer_id of a direct or indirect reference layer of layerA.
    660636  assert( pps->getLayerId() == m_layerId || pps->getLayerId( ) == 0 || vps->getInDirectDependencyFlag( m_layerId, pps->getLayerId() ) );   
    661637  // The nuh_layer_id value of the NAL unit containing the SPS that is activated for a layer layerA with nuh_layer_id equal to nuhLayerIdA shall be equal to 0, or nuhLayerIdA, or the nuh_layer_id of a direct or indirect reference layer of layerA.
    662638  assert( sps->getLayerId() == m_layerId || sps->getLayerId( ) == 0 || vps->getInDirectDependencyFlag( m_layerId, sps->getLayerId() ) );
    663 #endif
    664639  sps->inferRepFormat  ( vps , m_layerId );
    665640  sps->inferScalingList( m_parameterSetManagerDecoder.getActiveSPS( sps->getSpsScalingListRefLayerId() ) );
     
    692667
    693668#if H_MV
    694 #if H_MV_FIX_SKIP_PICTURES
    695669Bool TDecTop::xDecodeSlice(InputNALUnit &nalu, Int &iSkipFrame, Int iPOCLastDisplay, Bool newLayerFlag, Bool& sliceSkippedFlag  )
    696 #else
    697 Bool TDecTop::xDecodeSlice(InputNALUnit &nalu, Int &iSkipFrame, Int iPOCLastDisplay, Bool newLayerFlag )
    698 #endif
    699670{
    700671  assert( nalu.m_layerId == m_layerId );
     
    754725#endif
    755726
    756 #if H_MV_LAYER_WISE_STARTUP
     727#if H_MV
    757728    xCeckNoClrasOutput();
    758729#endif
     
    762733    m_prevSliceSkipped = true;
    763734    m_skippedPOC = m_apcSlicePilot->getPOC();
    764 #if H_MV_FIX_SKIP_PICTURES
    765       sliceSkippedFlag = true;
     735#if H_MV
     736    sliceSkippedFlag = true;
    766737#endif
    767738      return false;
     
    772743    m_prevSliceSkipped = true;
    773744    m_skippedPOC = m_apcSlicePilot->getPOC();
    774 #if H_MV_FIX_SKIP_PICTURES
    775       sliceSkippedFlag = true;
     745#if H_MV
     746    sliceSkippedFlag = true;
    776747#endif
    777748      return false;
     
    1007978    pcSlice->setRefPicList     ( tempRefPicLists, usedAsLongTerm, numPocTotalCurr, true );
    1008979#if H_3D_ARP
    1009 #if SHARP_ARP_REF_CHECK_F0105
    1010980    pcSlice->setARPStepNum(m_ivPicLists);
    1011 #else
    1012     pcSlice->setARPStepNum();
    1013 #endif
    1014981    if( pcSlice->getARPStepNum() > 1 )
    1015982    {
     
    11131080  }
    11141081
    1115 #if QC_DEPTH_IV_MRG_F0125
     1082#if H_3D_IV_MERGE
    11161083  if( pcSlice->getIsDepth() && m_pcCamParsCollector )
    11171084  {
     
    11271094    m_pcCamParsCollector->setSlice( pcSlice );
    11281095  }
    1129 #if QC_DEPTH_IV_MRG_F0125
    1130   if( pcSlice->getIsDepth() )
    1131   {
    1132 #if !CAM_HLS_F0136_F0045_F0082
    1133     pcSlice->getSPS()->setHasCamParInSliceHeader( false );
    1134 #endif
    1135   }
    1136 #endif
    11371096#endif
    11381097  m_bFirstSliceInPicture = false;
     
    11741133  pps->setLayerId( getLayerId() );
    11751134#endif
    1176 #if DLT_DIFF_CODING_IN_PPS
     1135#if H_3D
    11771136  // Assuming that all PPS indirectly refer to the same VPS via different SPS
    11781137  // There is no parsing dependency in decoding DLT in PPS.
     
    11811140  //   Step 1) decoding DLT tables based on the number of depth layers, and
    11821141  //   Step 2) mapping DLT tables to the depth layers
    1183   // as descripted in the 3D-HEVC WD.
     1142  // as described in the 3D-HEVC WD.
    11841143  TComVPS* vps = m_parameterSetManagerDecoder.getPrefetchedVPS( 0 );
    11851144  m_cEntropyDecoder.decodePPS( pps, vps );
     
    12261185
    12271186#if H_MV
    1228 #if H_MV_FIX_SKIP_PICTURES
    12291187Bool TDecTop::decode(InputNALUnit& nalu, Int& iSkipFrame, Int& iPOCLastDisplay, Bool newLayerFlag, Bool& sliceSkippedFlag )
    1230 #else
    1231 Bool TDecTop::decode(InputNALUnit& nalu, Int& iSkipFrame, Int& iPOCLastDisplay, Bool newLayerFlag)
    1232 #endif
    12331188#else
    12341189Bool TDecTop::decode(InputNALUnit& nalu, Int& iSkipFrame, Int& iPOCLastDisplay)
     
    12751230    case NAL_UNIT_CODED_SLICE_RASL_R:
    12761231#if H_MV
    1277 #if H_MV_FIX_SKIP_PICTURES
    12781232      return xDecodeSlice(nalu, iSkipFrame, iPOCLastDisplay, newLayerFlag, sliceSkippedFlag );
    1279 #else
    1280       return xDecodeSlice(nalu, iSkipFrame, iPOCLastDisplay, newLayerFlag);
    1281 #endif
    12821233#else
    12831234      return xDecodeSlice(nalu, iSkipFrame, iPOCLastDisplay);
     
    13281279    return true;
    13291280  }
    1330 #if H_MV_LAYER_WISE_STARTUP
     1281#if H_MV
    13311282  else if ( !m_layerInitilizedFlag[ m_layerId ] ) // start of random access point, m_pocRandomAccess has not been set yet.
    13321283#else
     
    13401291    {
    13411292
    1342 #if H_MV_LAYER_WISE_STARTUP
     1293#if H_MV
    13431294      if ( xAllRefLayersInitilized() )
    13441295      {
     
    13571308    else if ( m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || m_apcSlicePilot->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP )
    13581309    {
    1359 #if H_MV_LAYER_WISE_STARTUP
     1310#if H_MV
    13601311      if ( xAllRefLayersInitilized() )
    13611312      {
    13621313        m_layerInitilizedFlag[ m_layerId ] = true;
     1314        m_pocRandomAccess = -MAX_INT; // no need to skip the reordered pictures in IDR, they are decodable.
     1315      }
     1316      else
     1317      {
     1318        return true;
     1319      }
     1320#else
    13631321      m_pocRandomAccess = -MAX_INT; // no need to skip the reordered pictures in IDR, they are decodable.
     1322#endif
    13641323    }
    13651324    else
    13661325    {
    1367         return true;
    1368       }
    1369 #else
    1370       m_pocRandomAccess = -MAX_INT; // no need to skip the reordered pictures in IDR, they are decodable.
    1371 #endif
    1372     }
    1373     else
    1374     {
    1375 #if H_MV_FIX_SKIP_PICTURES
     1326#if H_MV
    13761327      static Bool warningMessage[MAX_NUM_LAYERS];
    13771328      static Bool warningInitFlag = false;
     
    14081359    return true;
    14091360  }
    1410 #if H_MV_LAYER_WISE_STARTUP
     1361#if H_MV
    14111362  return !m_layerInitilizedFlag[ getLayerId() ];
    14121363#else
     
    14551406}
    14561407
    1457 #if H_MV_LAYER_WISE_STARTUP
     1408#if H_MV
    14581409Void TDecTop::xCeckNoClrasOutput()
    14591410{
Note: See TracChangeset for help on using the changeset viewer.