Changeset 514 in SHVCSoftware for branches/SHM-4.1-dev/source


Ignore:
Timestamp:
13 Dec 2013, 23:00:20 (11 years ago)
Author:
sharp
Message:
  1. Deshpande (Sharp) <sdeshpande@…>

-Signal max temporal sub-layers for each layer in the VPS, with a gating flag, from JCTVC-O0120.
-IL RPS derivation based on max temporal sub-layers per layer in VPS from JCTVC-O0120.

Location:
branches/SHM-4.1-dev/source
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-4.1-dev/source/App/TAppEncoder/TAppEncTop.cpp

    r512 r514  
    11001100#endif
    11011101#endif
     1102#if VPS_TSLAYERS
     1103    vps->setMaxTSLayersPresentFlag(true);
     1104    for( i = 0; i < MAX_VPS_LAYER_ID_PLUS1 - 1; i++ )
     1105    {
     1106        vps->setMaxTSLayersMinus1(i, vps->getMaxTLayers()-1);
     1107    }
     1108#endif
    11021109#if N0120_MAX_TID_REF_PRESENT_FLAG
    11031110#if N0120_MAX_TID_REF_CFG
  • branches/SHM-4.1-dev/source/Lib/TLibCommon/TComSlice.h

    r512 r514  
    594594  Bool       m_maxTidRefPresentFlag;
    595595#endif
     596#if VPS_TSLAYERS
     597  Bool       m_maxTSLayersPresentFlag;
     598  UInt       m_maxTSLayerMinus1[MAX_VPS_LAYER_ID_PLUS1 - 1];
     599#endif
    596600#if M0040_ADAPTIVE_RESOLUTION_CHANGE
    597601  Bool       m_singleLayerForNonIrapFlag;
     
    840844  Void   setMaxTidRefPresentFlag(Bool x)                            { m_maxTidRefPresentFlag = x;}
    841845#endif
     846#if VPS_TSLAYERS
     847    Bool   getMaxTSLayersPresentFlag()                                  { return m_maxTSLayersPresentFlag ;}
     848    Void   setMaxTSLayersPresentFlag(Bool x)                            { m_maxTSLayersPresentFlag = x;}
     849    UInt   getMaxTSLayersMinus1(Int layerId)                            { return m_maxTSLayerMinus1[layerId];}
     850    Void   setMaxTSLayersMinus1(Int layerId, UInt maxTSublayer)         { m_maxTSLayerMinus1[layerId] = maxTSublayer;}
     851#endif
    842852#if M0040_ADAPTIVE_RESOLUTION_CHANGE
    843853  Bool   getSingleLayerForNonIrapFlag()                             { return m_singleLayerForNonIrapFlag; }
  • branches/SHM-4.1-dev/source/Lib/TLibCommon/TypeDef.h

    r512 r514  
    131131#define O0225_MAX_TID_FOR_REF_LAYERS     1
    132132#define O0225_TID_BASED_IL_RPS_DERIV     1
     133
     134#define VPS_TSLAYERS                     1      ///< JCTVC-O0120 signal max temporal sub-layers for each layer
     135#define TSLAYERS_IL_RPS                  1      ///< JCTVC-O0120 IL RPS based on max temporal sub-layers
    133136#endif
    134137#if REF_IDX_MFM
  • branches/SHM-4.1-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r512 r514  
    11091109  }
    11101110#endif
     1111#if VPS_TSLAYERS
     1112    READ_FLAG( uiCode, "vps_sub_layers_max_minus1_present_flag"); vps->setMaxTSLayersPresentFlag(uiCode ? true : false);
     1113    if (vps->getMaxTSLayersPresentFlag())
     1114    {
     1115        for(i = 0; i < vps->getMaxLayers() - 1; i++)
     1116        {
     1117            READ_CODE( 3, uiCode, "sub_layers_vps_max_minus1[i]" ); vps->setMaxTSLayersMinus1(i, uiCode);
     1118        }
     1119    }
     1120    else
     1121    {
     1122        for( i = 0; i < vps->getMaxLayers() - 1; i++)
     1123        {
     1124            vps->setMaxTSLayersMinus1(i, vps->getMaxTLayers()-1);
     1125        }
     1126    }
     1127#endif
    11111128#if JCTVC_M0203_INTERLAYER_PRED_IDC
    11121129#if N0120_MAX_TID_REF_PRESENT_FLAG
     
    19281945        else
    19291946        {
    1930 #if O0225_TID_BASED_IL_RPS_DERIV
    1931           if(rpcSlice->getVPS()->getMaxTidIlRefPicsPlus1(0,rpcSlice->getLayerId()) >  rpcSlice->getTLayer())
     1947#if O0225_TID_BASED_IL_RPS_DERIV && TSLAYERS_IL_RPS
     1948          if( (rpcSlice->getVPS()->getMaxTidIlRefPicsPlus1(0,rpcSlice->getLayerId()) >  rpcSlice->getTLayer()) &&
     1949             (rpcSlice->getVPS()->getMaxTSLayersMinus1(0) >=  rpcSlice->getTLayer()) )
    19321950        {
    19331951#endif
    19341952          rpcSlice->setActiveNumILRRefIdx(1);
    19351953          rpcSlice->setInterLayerPredLayerIdc(0,0);
    1936 #if O0225_TID_BASED_IL_RPS_DERIV
     1954#if O0225_TID_BASED_IL_RPS_DERIV && TSLAYERS_IL_RPS
    19371955        }
    19381956#endif
     
    19491967      rpcSlice->setInterLayerPredEnabledFlag(true);
    19501968
    1951 #if O0225_TID_BASED_IL_RPS_DERIV      
     1969#if O0225_TID_BASED_IL_RPS_DERIV && TSLAYERS_IL_RPS
    19521970      Int   numRefLayerPics = 0;
    19531971      Int   i = 0;
     
    19551973      for(i = 0, numRefLayerPics = 0;  i < rpcSlice->getNumILRRefIdx(); i++ )
    19561974      {
    1957         if(rpcSlice->getVPS()->getMaxTidIlRefPicsPlus1(rpcSlice->getVPS()->getLayerIdInVps(i),rpcSlice->getLayerId()) >  rpcSlice->getTLayer())
     1975        if(rpcSlice->getVPS()->getMaxTidIlRefPicsPlus1(rpcSlice->getVPS()->getLayerIdInVps(i),rpcSlice->getLayerId()) >  rpcSlice->getTLayer() &&
     1976           (rpcSlice->getVPS()->getMaxTSLayersMinus1(rpcSlice->getVPS()->getLayerIdInVps(i)) >=  rpcSlice->getTLayer()) )
    19581977        {         
    19591978          refLayerPicIdc[ numRefLayerPics++ ] = i;
  • branches/SHM-4.1-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r507 r514  
    12191219        if( pcPic->isSpatialEnhLayer(refLayerIdc) )
    12201220        {   
    1221 #if O0098_SCALED_REF_LAYER_ID
     1221/*#if O0098_SCALED_REF_LAYER_ID
    12221222          Window &scalEL = pcSlice->getSPS()->getScaledRefLayerWindowForLayer(pcSlice->getVPS()->getRefLayerId(m_layerId, refLayerIdc));
    12231223#else
    12241224          Window &scalEL = pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc);
    1225 #endif
     1225#endif*/
    12261226#if O0215_PHASE_ALIGNMENT
    12271227#if O0194_JOINT_US_BITSHIFT
  • branches/SHM-4.1-dev/source/Lib/TLibEncoder/TEncCavlc.cpp

    r512 r514  
    909909  }
    910910#endif
     911#if VPS_TSLAYERS
     912    WRITE_FLAG( vps->getMaxTSLayersPresentFlag(), "vps_sub_layers_max_minus1_present_flag");
     913    if (vps->getMaxTSLayersPresentFlag())
     914    {
     915        for( i = 0; i < vps->getMaxLayers() - 1; i++)
     916        {
     917            WRITE_CODE(vps->getMaxTSLayersMinus1(i), 3, "sub_layers_vps_max_minus1[i]" );
     918        }
     919    }
     920#endif
    911921#if JCTVC_M0203_INTERLAYER_PRED_IDC
    912922#if N0120_MAX_TID_REF_PRESENT_FLAG
  • branches/SHM-4.1-dev/source/Lib/TLibEncoder/TEncGOP.cpp

    r513 r514  
    804804        if( pcPic->isSpatialEnhLayer(refLayerIdc))
    805805        {
    806 #if O0098_SCALED_REF_LAYER_ID
     806/*#if O0098_SCALED_REF_LAYER_ID
    807807          Window scalEL = pcSlice->getSPS()->getScaledRefLayerWindowForLayer(pcSlice->getVPS()->getRefLayerId(m_layerId, refLayerIdc));
    808808#else
    809809          Window scalEL = pcSlice->getSPS()->getScaledRefLayerWindow(refLayerIdc);
    810 #endif
     810#endif*/
    811811#if O0215_PHASE_ALIGNMENT
    812812#if O0194_JOINT_US_BITSHIFT
Note: See TracChangeset for help on using the changeset viewer.