Changeset 941 in SHVCSoftware for branches/SHM-dev/source/Lib


Ignore:
Timestamp:
30 Dec 2014, 18:47:09 (11 years ago)
Author:
seregin
Message:

support profile, tier and level for each layer, patch was provided by Hendry <fhendry@…>

Location:
branches/SHM-dev/source/Lib
Files:
5 edited

Legend:

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

    r908 r941  
    582582  Bool        m_layerIdIncludedFlag[MAX_VPS_OP_SETS_PLUS1][MAX_VPS_NUH_RESERVED_ZERO_LAYER_ID_PLUS1];
    583583#endif
     584#if !MULTIPLE_PTL_SUPPORT
    584585  TComPTL     m_pcPTL;
     586#else
     587  TComPTL     m_pcPTLList[NUM_POSSIBLE_LEVEL];
     588#endif
    585589  TimingInfo  m_timingInfo;
    586590
     
    649653  UInt       m_profileLayerSetRef[MAX_VPS_LAYER_SETS_PLUS1];    // The value with index 0 will not be used.
    650654#endif
    651   std::vector<TComPTL>    m_pcPTLForExtn; 
     655#if !MULTIPLE_PTL_SUPPORT
     656  std::vector<TComPTL>    m_pcPTLForExtn;
     657#endif
    652658#endif
    653659#if VPS_EXTN_OP_LAYER_SETS
     
    964970  Void    setLayerIdIncludedFlag(Bool v, UInt opsIdx, UInt id)  { m_layerIdIncludedFlag[opsIdx][id] = v;    }
    965971
     972#if !MULTIPLE_PTL_SUPPORT
    966973  TComPTL* getPTL() { return &m_pcPTL; }
     974#else
     975  TComPTL* getPTL() { return &m_pcPTLList[0]; }
     976  TComPTL* getPTL(UInt idx) { return &m_pcPTLList[idx]; }
     977#endif
    967978  TimingInfo* getTimingInfo() { return &m_timingInfo; }
    968979
     
    10651076#endif
    10661077
     1078#if !MULTIPLE_PTL_SUPPORT
    10671079  std::vector<TComPTL>* getPTLForExtnPtr()                      { return &m_pcPTLForExtn;          }
    10681080  TComPTL* getPTLForExtn(Int id)                                { return &m_pcPTLForExtn[id];      }
     1081#endif
    10691082#endif
    10701083#if VPS_EXTN_OP_LAYER_SETS
     
    11321145  Int    getProfileLevelTierIdx(Int const olsIdx, Int const layerIdx)     { return m_profileLevelTierIdx[olsIdx][layerIdx]; }
    11331146  Void   setProfileLevelTierIdx(Int const olsIdx, Int const layerIdx, Int const ptlIdx)     { m_profileLevelTierIdx[olsIdx][layerIdx] = ptlIdx; }
     1147#if MULTIPLE_PTL_SUPPORT
     1148  Void   addProfileLevelTierIdx(Int const olsIdx, Int const ptlIdx)     { m_profileLevelTierIdx[olsIdx].push_back(ptlIdx); }
     1149#endif
    11341150  Int calculateLenOfSyntaxElement( Int const numVal );
    11351151#else
  • branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h

    r924 r941  
    6969#define VPS_VUI_BSP_HRD_PARAMS           1      ///< JCTVC-R0231: Define the VPS VUI BSP hrd_params() as a separate function, and apply changes adopted.
    7070#define O0137_MAX_LAYERID                1      ///< JCTVC-O0137, JCTVC-O0200, JCTVC-O0223: restrict nuh_layer_id and vps_max_layers_minus1
     71
     72#define MULTIPLE_PTL_SUPPORT             1      ///< Fixing profile, tier and level signalling
     73#define NUM_POSSIBLE_LEVEL               13     ///< Number of possible level as described in R1013
    7174
    7275#define R0226_CONSTRAINT_TMVP_SEI        1      ///< JCTVC-R0226, Modification to semantics in temporal motion vector prediction constraints SEI message
  • branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r937 r941  
    13751375  {
    13761376    vps->setProfilePresentFlag(1, false);
     1377#if !MULTIPLE_PTL_SUPPORT
    13771378    vps->getPTLForExtnPtr()->empty();
    13781379    vps->getPTLForExtnPtr()->resize(2);
    13791380    vps->getPTLForExtn(1)->copyProfileInfo( vps->getPTL() );
    13801381    parsePTL( vps->getPTLForExtn(1), vps->getProfilePresentFlag(1), vps->getMaxTLayers() - 1 );
     1382#else
     1383    parsePTL( vps->getPTL(1), vps->getProfilePresentFlag(1), vps->getMaxTLayers() - 1 );
     1384#endif
    13811385  }
    13821386#endif
     
    16001604  READ_CODE(  6, uiCode, "vps_num_profile_tier_level_minus1"); vps->setNumProfileTierLevel( uiCode + 1 );
    16011605#else
    1602   READ_UVLC(  uiCode, "vps_num_profile_tier_level_minus1"); vps->setNumProfileTierLevel( uiCode + 1 );
     1606  READ_UVLC(  uiCode, "vps_num_profile_tier_level_minus1");
     1607  vps->setNumProfileTierLevel( uiCode + 1 );
     1608  //vps->setNumProfileTierLevel( 3 );
     1609  int aa = vps->getNumProfileTierLevel();
    16031610#endif
    16041611#if PER_LAYER_PTL
    16051612  Int const numBitsForPtlIdx = vps->calculateLenOfSyntaxElement( vps->getNumProfileTierLevel() );
    16061613#endif
     1614#if !MULTIPLE_PTL_SUPPORT
    16071615  vps->getPTLForExtnPtr()->resize(vps->getNumProfileTierLevel());
     1616#endif
    16081617#if LIST_OF_PTL
    16091618  for(Int idx = vps->getBaseLayerInternalFlag() ? 2 : 1; idx <= vps->getNumProfileTierLevel() - 1; idx++)
     
    16121621#endif
    16131622  {
    1614     READ_FLAG( uiCode, "vps_profile_present_flag[i]" ); vps->setProfilePresentFlag(idx, uiCode ? true : false);
     1623    READ_FLAG( uiCode, "vps_profile_present_flag[i]" );
     1624    vps->setProfilePresentFlag(idx, uiCode ? true : false);
    16151625    if( !vps->getProfilePresentFlag(idx) )
    16161626    {
    16171627#if P0048_REMOVE_PROFILE_REF
    16181628      // Copy profile information from previous one
     1629#if !MULTIPLE_PTL_SUPPORT
    16191630      vps->getPTLForExtn(idx)->copyProfileInfo( (idx==1) ? vps->getPTL() : vps->getPTLForExtn( idx - 1 ) );
     1631#else
     1632      vps->getPTL(idx)->copyProfileInfo( vps->getPTL( idx - 1 ) );
     1633#endif
    16201634#else
    16211635      READ_CODE( 6, uiCode, "profile_ref_minus1[i]" ); vps->setProfileLayerSetRef(idx, uiCode + 1);
     
    16291643#endif
    16301644    }
     1645#if !MULTIPLE_PTL_SUPPORT
    16311646    parsePTL( vps->getPTLForExtn(idx), vps->getProfilePresentFlag(idx), vps->getMaxTLayers() - 1 );
     1647#else
     1648    parsePTL( vps->getPTL(idx), vps->getProfilePresentFlag(idx), vps->getMaxTLayers() - 1 );
     1649#endif
    16321650  }
    16331651#endif
     
    16731691  if( vps->getNumLayerSets() > 1 )
    16741692  {
    1675     READ_UVLC( uiCode, "num_add_olss" );            vps->setNumAddOutputLayerSets( uiCode );
     1693    READ_UVLC( uiCode, "num_add_olss" );           
     1694    vps->setNumAddOutputLayerSets( uiCode );
    16761695    READ_CODE( 2, uiCode, "default_output_layer_idc" );   vps->setDefaultTargetOutputLayerIdc( uiCode );
    16771696  }
  • branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r924 r941  
    354354#else
    355355    m_iMaxRefPicNum = pcSlice->getVPS()->getMaxVpsDecPicBufferingMinus1( getCommonDecoderParams()->getTargetOutputLayerSetIdx(), pcSlice->getLayerId(), pcSlice->getTLayer() ) + 1; // m_uiMaxDecPicBuffering has the space for the picture currently being decoded
    356     //TODO: HENDRY -- Do the checking here.
    357356#endif
    358357  }
     
    10881087    m_isNoOutputPriorPics = false;
    10891088  }
    1090 
    1091   //TODO: HENDRY -- Probably do the checking for max number of positive and negative pics here
    1092 
    10931089
    10941090  //For inference of PicOutputFlag
  • branches/SHM-dev/source/Lib/TLibEncoder/TEncCavlc.cpp

    r937 r941  
    10881088  if( vps->getMaxLayers() > 1 && vps->getBaseLayerInternalFlag() )
    10891089  {
     1090#if !MULTIPLE_PTL_SUPPORT
    10901091    codePTL( vps->getPTLForExtn(1), false, vps->getMaxTLayers() - 1 );
     1092#else
     1093    codePTL( vps->getPTL(1), false, vps->getMaxTLayers() - 1 );
     1094#endif
    10911095  }
    10921096#endif
     
    12541258#endif
    12551259#if LIST_OF_PTL
     1260#if !MULTIPLE_PTL_SUPPORT
    12561261  assert( vps->getNumProfileTierLevel() == vps->getPTLForExtnPtr()->size());
     1262#else
     1263  //Do something here to make sure the loop is correct to consider base layer internal stuff
     1264#endif
    12571265  for(Int idx = vps->getBaseLayerInternalFlag() ? 2 : 1; idx <= vps->getNumProfileTierLevel() - 1; idx++)
    12581266#else
     
    12601268#endif
    12611269  {
     1270#if MULTIPLE_PTL_SUPPORT
     1271    vps->setProfilePresentFlag(idx, true);
     1272#endif
    12621273    WRITE_FLAG( vps->getProfilePresentFlag(idx),       "vps_profile_present_flag[i]" );
    12631274#if !P0048_REMOVE_PROFILE_REF
     
    12671278    }
    12681279#endif
     1280#if !MULTIPLE_PTL_SUPPORT
    12691281    codePTL( vps->getPTLForExtn(idx), vps->getProfilePresentFlag(idx), vps->getMaxTLayers() - 1 );
     1282#else
     1283    codePTL( vps->getPTL(idx), vps->getProfilePresentFlag(idx), vps->getMaxTLayers() - 1 );
     1284#endif
    12701285  }
    12711286#endif
Note: See TracChangeset for help on using the changeset viewer.