diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index ecd14902c0c714e463a572178c94407460d76bb8..88a323329203b5c882bc0f5ea856e055a741d3c0 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -60,6 +60,8 @@ #define JVET_S_PROFILES 1 // Profile definitions +#define JVET_S_SUB_PROFILE 1 // Move signalling of ptl_num_sub_profiles + #define JVET_S0219_ASPECT2_CHANGE_ORDER_APS_PARAMS_TYPE 1 // JVET-S0219 aspect2: change the order to put the aps_params_type before the aps_adaptation_parameter_set_id. #define JVET_R0270 1 // JVET-S0270: Treating picture with mixed RASL and RADL slices as RASL picture diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index a0e33aca4d4ccadca9f8f965fb48737b61dd14c6..9b4fcc4e7958521fa0e8d9c1ee855361bb794ef1 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -4847,6 +4847,7 @@ void HLSyntaxReader::parseProfileTierLevel(ProfileTierLevel *ptl, bool profileTi #if JVET_S0179_CONDITIONAL_SIGNAL_GCI parseConstraintInfo(ptl->getConstraintInfo()); #endif +#if !JVET_S_SUB_PROFILE READ_CODE(8, symbol, "num_sub_profiles"); uint8_t numSubProfiles = symbol; ptl->setNumSubProfile( numSubProfiles ); @@ -4854,6 +4855,7 @@ void HLSyntaxReader::parseProfileTierLevel(ProfileTierLevel *ptl, bool profileTi { READ_CODE(32, symbol, "general_sub_profile_idc[i]"); ptl->setSubProfileIdc(i, symbol); } +#endif } #if JVET_S0203 @@ -4893,6 +4895,20 @@ void HLSyntaxReader::parseProfileTierLevel(ProfileTierLevel *ptl, bool profileTi ptl->setSubLayerLevelIdc( i, ptl->getSubLayerLevelIdc( i + 1 ) ); } } + +#if JVET_S_SUB_PROFILE + if (profileTierPresentFlag) + { + READ_CODE(8, symbol, "ptl_num_sub_profiles"); + uint8_t numSubProfiles = symbol; + ptl->setNumSubProfile(numSubProfiles); + for (int i = 0; i < numSubProfiles; i++) + { + READ_CODE(32, symbol, "general_sub_profile_idc[i]"); + ptl->setSubProfileIdc(i, symbol); + } + } +#endif } diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index fcf448d8db98156a7fb80aee3d82932e01c21023..c81549ef8dc4da118f7bf76923b7143662e53281 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -2789,11 +2789,13 @@ void HLSWriter::codeProfileTierLevel ( const ProfileTierLevel* ptl, bool pro #if JVET_S0179_CONDITIONAL_SIGNAL_GCI codeConstraintInfo(ptl->getConstraintInfo()); #endif +#if !JVET_S_SUB_PROFILE WRITE_CODE(ptl->getNumSubProfile(), 8, "num_sub_profiles"); for (int i = 0; i < ptl->getNumSubProfile(); i++) { WRITE_CODE(ptl->getSubProfileIdc(i) , 32, "general_sub_profile_idc[i]"); } +#endif } #if JVET_S0203 @@ -2826,6 +2828,16 @@ void HLSWriter::codeProfileTierLevel ( const ProfileTierLevel* ptl, bool pro } } +#if JVET_S_SUB_PROFILE + if (profileTierPresentFlag) + { + WRITE_CODE(ptl->getNumSubProfile(), 8, "ptl_num_sub_profiles"); + for (int i = 0; i < ptl->getNumSubProfile(); i++) + { + WRITE_CODE(ptl->getSubProfileIdc(i), 32, "general_sub_profile_idc[i]"); + } + } +#endif }