Changeset 112 in SHVCSoftware for branches/HM-10.0-dev-SHM/source/Lib


Ignore:
Timestamp:
4 Apr 2013, 04:36:38 (12 years ago)
Author:
qualcomm
Message:

Include signaling of profile, tier, level information for layer sets (MACRO: VPS_EXTN_PROFILE_INFO)

Include profile, tier, level signaling for all layers sets. Does not include config file support for specifying the information.

From: Adarsh K. Ramasubramonian <aramasub@…>

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

Legend:

Unmodified
Added
Removed
  • branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TComSlice.cpp

    r110 r112  
    14851485    m_uiMaxLatencyIncrease[i] = 0;
    14861486  }
     1487#if VPS_EXTN_PROFILE_INFO
     1488  ::memset(m_profilePresentFlag, 0, sizeof(m_profilePresentFlag));
     1489  ::memset(m_profileLayerSetRef, 0, sizeof(m_profileLayerSetRef));
     1490#endif
    14871491#if VPS_EXTN_OP_LAYER_SETS
    14881492  ::memset(m_layerIdIncludedFlag, 0, sizeof(m_layerIdIncludedFlag));
     
    22772281  ::memset(m_profileCompatibilityFlag, 0, sizeof(m_profileCompatibilityFlag));
    22782282}
     2283#if VPS_EXTN_PROFILE_INFO
     2284Void ProfileTierLevel::copyProfileInfo(ProfileTierLevel *ptl)
     2285{
     2286  this->setProfileSpace          ( ptl->getProfileSpace()      );
     2287  this->setTierFlag              ( ptl->getTierFlag()          );
     2288  this->setProfileIdc            ( ptl->getProfileIdc()        );
     2289  for(Int j = 0; j < 32; j++)
     2290  {
     2291    this->setProfileCompatibilityFlag(j, ptl->getProfileCompatibilityFlag(j));
     2292  }
     2293  this->setProgressiveSourceFlag  ( ptl->getProgressiveSourceFlag()  );
     2294  this->setInterlacedSourceFlag   ( ptl->getInterlacedSourceFlag()   );
     2295  this->setNonPackedConstraintFlag( ptl->getNonPackedConstraintFlag());
     2296  this->setFrameOnlyConstraintFlag( ptl->getFrameOnlyConstraintFlag()); 
     2297}
     2298#endif
    22792299
    22802300TComPTL::TComPTL()
     
    22832303  ::memset(m_subLayerLevelPresentFlag,   0, sizeof(m_subLayerLevelPresentFlag  ));
    22842304}
     2305#if VPS_EXTN_PROFILE_INFO
     2306Void TComPTL::copyProfileInfo(TComPTL *ptl)
     2307{
     2308  // Copy all information related to general profile
     2309  this->getGeneralPTL()->copyProfileInfo(ptl->getGeneralPTL());
     2310}
     2311#endif
    22852312#if SIGNAL_BITRATE_PICRATE_IN_VPS
    22862313TComBitRatePicRateInfo::TComBitRatePicRateInfo()
  • branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TComSlice.h

    r110 r112  
    229229  Void setFrameOnlyConstraintFlag(Bool b) { m_frameOnlyConstraintFlag = b; }
    230230#endif
     231#if VPS_EXTN_PROFILE_INFO
     232  Void copyProfileInfo(ProfileTierLevel *ptl);
     233#endif
    231234};
    232235
     
    249252  ProfileTierLevel* getGeneralPTL()  { return &m_generalPTL; }
    250253  ProfileTierLevel* getSubLayerPTL(Int i)  { return &m_subLayerPTL[i]; }
     254#if VPS_EXTN_PROFILE_INFO
     255  Void copyProfileInfo(TComPTL *ptl);
     256#endif
    251257};
    252258/// VPS class
     
    510516  // Variables related to VPS extensions
    511517  // ------------------------------------------
     518#if VPS_EXTN_PROFILE_INFO
     519  // Profile-tier-level signalling related
     520  Bool       m_profilePresentFlag[MAX_VPS_LAYER_SETS_PLUS1];    // The value with index 0 will not be used.
     521  UInt       m_profileLayerSetRef[MAX_VPS_LAYER_SETS_PLUS1];    // The value with index 0 will not be used.
     522  std::vector<TComPTL>    m_pcPTLForExtn; 
     523#endif
    512524#if VPS_EXTN_OP_LAYER_SETS
    513525  // .. More declarations here
     
    583595  TimingInfo* getTimingInfo() { return &m_timingInfo; }
    584596#endif
    585 
     597#if VPS_EXTN_PROFILE_INFO
     598  Bool   getProfilePresentFlag(Int id)                          { return m_profilePresentFlag[id]; }
     599  Void   setProfilePresentFlag(Int id, Bool x)                  { m_profilePresentFlag[id] = x;    }
     600
     601  UInt   getProfileLayerSetRef(Int id)                          { return m_profileLayerSetRef[id]; }
     602  Void   setProfileLayerSetRef(Int id, Bool x)                  { m_profileLayerSetRef[id] = x;    }
     603
     604  std::vector<TComPTL>* getPTLForExtnPtr()                      { return &m_pcPTLForExtn;          }
     605  TComPTL* getPTLForExtn(Int id)                                { return &m_pcPTLForExtn[id];      }
     606#endif
    586607#if VPS_EXTN_OP_LAYER_SETS
    587608  // Target output layer signalling related
  • branches/HM-10.0-dev-SHM/source/Lib/TLibCommon/TypeDef.h

    r110 r112  
    4848#if VPS_EXTNS
    4949#define VPS_EXTN_OP_LAYER_SETS           1      ///< Include output layer sets in VPS extension
     50#define VPS_EXTN_PROFILE_INFO            1      ///< Include profile information for layer sets in VPS extension
    5051#endif
    5152#define MAX_LAYERS                       2      ///< max number of layers the codec is supposed to handle
  • branches/HM-10.0-dev-SHM/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r111 r112  
    841841  UInt uiCode;
    842842  // ... More syntax elements to be parsed here
     843#if VPS_EXTN_PROFILE_INFO
     844  // Profile-tier-level signalling
     845  vps->getPTLForExtnPtr()->resize(vps->getNumLayerSets());
     846  for(Int idx = 1; idx <= vps->getNumLayerSets() - 1; idx++)
     847  {
     848    READ_FLAG( uiCode, "vps_profile_present_flag[i]" ); vps->setProfilePresentFlag(idx, uiCode ? true : false);
     849    if( !vps->getProfilePresentFlag(idx) )
     850    {
     851      READ_UVLC( uiCode, "vps_profile_layer_set_ref_minus1[i]" ); vps->setProfileLayerSetRef(idx, uiCode + 1);
     852      assert( vps->getProfileLayerSetRef(idx) < idx );
     853      // Copy profile information as indicated
     854      vps->getPTLForExtn(idx)->copyProfileInfo( vps->getPTLForExtn( vps->getProfileLayerSetRef(idx) ) );
     855    }   
     856    parsePTL( vps->getPTLForExtn(idx), vps->getProfilePresentFlag(idx), vps->getMaxTLayers() - 1 );
     857  }
     858#endif
     859
    843860#if VPS_EXTN_OP_LAYER_SETS
    844861  // Target output layer signalling
  • branches/HM-10.0-dev-SHM/source/Lib/TLibEncoder/TEncCavlc.cpp

    r111 r112  
    669669{
    670670  // ... More syntax elements to be written here
    671 
     671#if VPS_EXTN_PROFILE_INFO
     672  // Profile-tier-level signalling
     673  for(Int idx = 1; idx <= vps->getNumLayerSets() - 1; idx++)
     674  {
     675    WRITE_FLAG( vps->getProfilePresentFlag(idx),       "vps_profile_present_flag[i]" );
     676    if( !vps->getProfilePresentFlag(idx) )
     677    {
     678      WRITE_UVLC( vps->getProfileLayerSetRef(idx) - 1, "vps_profile_layer_set_ref_minus1[i]" );
     679    }
     680    codePTL( vps->getPTLForExtn(idx), vps->getProfilePresentFlag(idx), vps->getMaxTLayers() - 1 );
     681  }
     682#endif
    672683#if VPS_EXTN_OP_LAYER_SETS
    673684  // Target output layer signalling
Note: See TracChangeset for help on using the changeset viewer.