diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 2f307705eb805932fc6b8281230c80388f7243ac..1723614f9483ba1c6de2eced4599c08c55d3c43f 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -63,6 +63,8 @@ #define JVET_Q0488_SEI_REPETITION_CONSTRAINT 1 // JVET-Q0488: SEI repetition constraint +#define JVET_R0332_HLS_ORDER 1 // JVET-R0332: Grouping syntax elements in SPS based on slice type + #define JVET_Q0764_WRAP_AROUND_WITH_RPR 1 // JVET-Q0764: Combination of wrap around offset and RPR #define JVET_R0055_HANDLING_NON_EXISTENT_QM 1 // JVET-R0055: infer chroma scaling lists to be all 16 in 4:0:0 by copy mode flag diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index d38bc7b5e384add6fd51063909d416a530ade96d..341ad69f68e0e6900291afe9805a4f8105b193e5 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -1590,10 +1590,10 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) READ_FLAG(uiCode, "sps_wpp_entry_point_offsets_present_flag"); pcSPS->setEntropyCodingSyncEntryPointsPresentFlag(uiCode == 1); } #endif - +#if !JVET_R0332_HLS_ORDER READ_FLAG( uiCode, "sps_weighted_pred_flag" ); pcSPS->setUseWP( uiCode ? true : false ); READ_FLAG( uiCode, "sps_weighted_bipred_flag" ); pcSPS->setUseWPBiPred( uiCode ? true : false ); - +#endif READ_CODE(4, uiCode, "log2_max_pic_order_cnt_lsb_minus4"); pcSPS->setBitsForPOC( 4 + uiCode ); CHECK(uiCode > 12, "log2_max_pic_order_cnt_lsb_minus4 shall be in the range of 0 to 12"); @@ -1627,7 +1627,7 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) #endif dpb_parameters(pcSPS->getMaxTLayers() - 1, pcSPS->getSubLayerDpbParamsFlag(), pcSPS); } - +#if !JVET_R0332_HLS_ORDER READ_FLAG(uiCode, "long_term_ref_pics_flag"); pcSPS->setLongTermRefsPresent(uiCode); #if JVET_R0205 if (pcSPS->getVPSId() > 0) @@ -1687,7 +1687,7 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) for (uint32_t ii = 0; ii < numberOfRPL; ii++) copyRefPicList(pcSPS, rplListSource->getReferencePictureList(ii), rplListDest->getReferencePictureList(ii)); } - +#endif unsigned minQT[3] = { 0, 0, 0 }; unsigned maxBTD[3] = { 0, 0, 0 }; @@ -1831,6 +1831,72 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) READ_FLAG(uiCode, "sps_bdpcm_enabled_flag"); pcSPS->setBDPCMEnabledFlag(uiCode ? true : false); } +#if JVET_R0332_HLS_ORDER + READ_FLAG( uiCode, "sps_weighted_pred_flag" ); pcSPS->setUseWP( uiCode ? true : false ); + READ_FLAG( uiCode, "sps_weighted_bipred_flag" ); pcSPS->setUseWPBiPred( uiCode ? true : false ); + + READ_FLAG(uiCode, "long_term_ref_pics_flag"); pcSPS->setLongTermRefsPresent(uiCode); +#if JVET_R0205 + if (pcSPS->getVPSId() > 0) + { + READ_FLAG( uiCode, "sps_inter_layer_ref_pics_present_flag" ); pcSPS->setInterLayerPresentFlag( uiCode ); + } + else + { + pcSPS->setInterLayerPresentFlag(0); + } +#else + READ_FLAG( uiCode, "inter_layer_ref_pics_present_flag" ); pcSPS->setInterLayerPresentFlag( uiCode ); +#endif + READ_FLAG( uiCode, "sps_idr_rpl_present_flag" ); pcSPS->setIDRRefParamListPresent( (bool) uiCode ); + READ_FLAG(uiCode, "rpl1_copy_from_rpl0_flag"); + pcSPS->setRPL1CopyFromRPL0Flag(uiCode); + + //Read candidate for List0 + READ_UVLC(uiCode, "num_ref_pic_lists_in_sps[0]"); + uint32_t numberOfRPL = uiCode; + pcSPS->createRPLList0(numberOfRPL); + RPLList* rplList = pcSPS->getRPLList0(); + ReferencePictureList* rpl; + for (uint32_t ii = 0; ii < numberOfRPL; ii++) + { + rpl = rplList->getReferencePictureList(ii); +#if JVET_R0059_RPL_CLEANUP + parseRefPicList(pcSPS, rpl, ii); +#else + parseRefPicList(pcSPS, rpl); +#endif + } + + //Read candidate for List1 + if (!pcSPS->getRPL1CopyFromRPL0Flag()) + { + READ_UVLC(uiCode, "num_ref_pic_lists_in_sps[1]"); + numberOfRPL = uiCode; + pcSPS->createRPLList1(numberOfRPL); + rplList = pcSPS->getRPLList1(); + for (uint32_t ii = 0; ii < numberOfRPL; ii++) + { + rpl = rplList->getReferencePictureList(ii); +#if JVET_R0059_RPL_CLEANUP + parseRefPicList(pcSPS, rpl, ii); +#else + parseRefPicList(pcSPS, rpl); +#endif + } + } + else + { + numberOfRPL = pcSPS->getNumRPL0(); + pcSPS->createRPLList1(numberOfRPL); + RPLList* rplListSource = pcSPS->getRPLList0(); + RPLList* rplListDest = pcSPS->getRPLList1(); + for (uint32_t ii = 0; ii < numberOfRPL; ii++) + copyRefPicList(pcSPS, rplListSource->getReferencePictureList(ii), rplListDest->getReferencePictureList(ii)); + } + +#endif + READ_FLAG(uiCode, "sps_ref_wraparound_enabled_flag"); pcSPS->setWrapAroundEnabledFlag( uiCode ? true : false ); #if !JVET_Q0764_WRAP_AROUND_WITH_RPR @@ -1881,6 +1947,72 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) pcSPS->setFpelMmvdEnabledFlag( false ); } #endif + +#if JVET_R0332_HLS_ORDER + READ_UVLC(uiCode, "six_minus_max_num_merge_cand"); + CHECK(MRG_MAX_NUM_CANDS <= uiCode, "Incorrrect max number of merge candidates!"); + pcSPS->setMaxNumMergeCand(MRG_MAX_NUM_CANDS - uiCode); + READ_FLAG(uiCode, "sps_sbt_enabled_flag"); pcSPS->setUseSBT ( uiCode != 0 ); + READ_FLAG( uiCode, "sps_affine_enabled_flag" ); pcSPS->setUseAffine ( uiCode != 0 ); + if ( pcSPS->getUseAffine() ) + { + READ_UVLC(uiCode, "five_minus_max_num_subblock_merge_cand"); +#if JVET_R0371_MAX_NUM_SUB_BLK_MRG_CAND + CHECK(uiCode > 5 - (pcSPS->getSBTMVPEnabledFlag() ? 1 : 0), "The value of five_minus_max_num_subblock_merge_cand shall be in the range of 0 to 5 - sps_sbtmvp_enabled_flag"); + CHECK(AFFINE_MRG_MAX_NUM_CANDS < uiCode, "The value of five_minus_max_num_subblock_merge_cand shall be in the range of 0 to 5 - sps_sbtmvp_enabled_flag"); +#else + CHECK(AFFINE_MRG_MAX_NUM_CANDS < uiCode, "Incorrrect max number of affine merge candidates!"); +#endif + pcSPS->setMaxNumAffineMergeCand(AFFINE_MRG_MAX_NUM_CANDS - uiCode); + READ_FLAG( uiCode, "sps_affine_type_flag" ); pcSPS->setUseAffineType ( uiCode != 0 ); + if( pcSPS->getAMVREnabledFlag()) + { + READ_FLAG( uiCode, "sps_affine_amvr_enabled_flag" ); pcSPS->setAffineAmvrEnabledFlag ( uiCode != 0 ); + } + READ_FLAG( uiCode, "sps_affine_prof_enabled_flag" ); pcSPS->setUsePROF ( uiCode != 0 ); + if (pcSPS->getUsePROF()) + { + READ_FLAG(uiCode, "sps_prof_pic_present_flag"); pcSPS->setProfControlPresentFlag ( uiCode != 0 ); + } + else { + pcSPS->setProfControlPresentFlag( false ); + } + } + + READ_FLAG( uiCode, "sps_bcw_enabled_flag" ); pcSPS->setUseBcw( uiCode != 0 ); + + READ_FLAG( uiCode, "sps_ciip_enabled_flag" ); pcSPS->setUseCiip ( uiCode != 0 ); +#if !JVET_R0214_MMVD_SYNTAX_MODIFICATION + if ( pcSPS->getUseMMVD() ) + { + READ_FLAG( uiCode, "sps_fpel_mmvd_enabled_flag" ); pcSPS->setFpelMmvdEnabledFlag ( uiCode != 0 ); + } +#endif + if (pcSPS->getMaxNumMergeCand() >= 2) + { + READ_FLAG(uiCode, "sps_gpm_enabled_flag"); + pcSPS->setUseGeo(uiCode != 0); + if (pcSPS->getUseGeo() && pcSPS->getMaxNumMergeCand() >= 3) + { + READ_UVLC(uiCode, "max_num_merge_cand_minus_max_num_gpm_cand"); + CHECK(pcSPS->getMaxNumMergeCand() < uiCode, "Incorrrect max number of GEO candidates!"); + pcSPS->setMaxNumGeoCand((uint32_t)(pcSPS->getMaxNumMergeCand() - uiCode)); + } + else if (pcSPS->getUseGeo()) + pcSPS->setMaxNumGeoCand(2); + } + else + { + pcSPS->setUseGeo(0); + pcSPS->setMaxNumGeoCand(0); + } + + READ_UVLC(uiCode, "log2_parallel_merge_level_minus2"); + CHECK(uiCode + 2 > ctbLog2SizeY, "The value of log2_parallel_merge_level_minus2 shall be in the range of 0 to ctbLog2SizeY - 2"); + pcSPS->setLog2ParallelMergeLevelMinus2(uiCode); + +#endif + READ_FLAG(uiCode, "sps_isp_enabled_flag"); pcSPS->setUseISP( uiCode != 0 ); READ_FLAG(uiCode, "sps_mrl_enabled_flag"); pcSPS->setUseMRL( uiCode != 0 ); READ_FLAG(uiCode, "sps_mip_enabled_flag"); pcSPS->setUseMIP( uiCode != 0 ); @@ -1909,6 +2041,7 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) READ_FLAG( uiCode, "sps_explicit_mts_intra_enabled_flag" ); pcSPS->setUseIntraMTS ( uiCode != 0 ); READ_FLAG( uiCode, "sps_explicit_mts_inter_enabled_flag" ); pcSPS->setUseInterMTS ( uiCode != 0 ); } +#if !JVET_R0332_HLS_ORDER READ_UVLC(uiCode, "six_minus_max_num_merge_cand"); CHECK(MRG_MAX_NUM_CANDS <= uiCode, "Incorrrect max number of merge candidates!"); pcSPS->setMaxNumMergeCand(MRG_MAX_NUM_CANDS - uiCode); @@ -1938,6 +2071,7 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) pcSPS->setProfControlPresentFlag( false ); } } +#endif READ_FLAG( uiCode, "sps_palette_enabled_flag"); pcSPS->setPLTMode ( uiCode != 0 ); if (chromaArrayType == CHROMA_444 && pcSPS->getLog2MaxTbSize() != 6) { @@ -1961,7 +2095,9 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) pcSPS->setMinQpPrimeTsMinus4(CHANNEL_TYPE_CHROMA, uiCode); #endif } +#if !JVET_R0332_HLS_ORDER READ_FLAG( uiCode, "sps_bcw_enabled_flag" ); pcSPS->setUseBcw( uiCode != 0 ); +#endif READ_FLAG(uiCode, "sps_ibc_enabled_flag"); pcSPS->setIBCFlag(uiCode); if (pcSPS->getIBCFlag()) { @@ -1971,6 +2107,7 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) } else pcSPS->setMaxNumIBCMergeCand(0); +#if !JVET_R0332_HLS_ORDER // KJS: sps_ciip_enabled_flag READ_FLAG( uiCode, "sps_ciip_enabled_flag" ); pcSPS->setUseCiip ( uiCode != 0 ); #if !JVET_R0214_MMVD_SYNTAX_MODIFICATION @@ -1997,6 +2134,7 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) pcSPS->setUseGeo(0); pcSPS->setMaxNumGeoCand(0); } +#endif READ_FLAG(uiCode, "sps_lmcs_enable_flag"); pcSPS->setUseLmcs(uiCode == 1); READ_FLAG( uiCode, "sps_lfnst_enabled_flag" ); pcSPS->setUseLFNST( uiCode != 0 ); @@ -2015,11 +2153,11 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) } } #endif - +#if !JVET_R0332_HLS_ORDER READ_UVLC(uiCode, "log2_parallel_merge_level_minus2"); CHECK(uiCode + 2 > ctbLog2SizeY, "The value of log2_parallel_merge_level_minus2 shall be in the range of 0 to ctbLog2SizeY - 2"); pcSPS->setLog2ParallelMergeLevelMinus2(uiCode); - +#endif READ_FLAG(uiCode, "sps_explicit_scaling_list_enabled_flag"); pcSPS->setScalingListFlag(uiCode); #if JVET_R0380_SCALING_MATRIX_DISABLE_YCC_OR_RGB if (pcSPS->getUseColorTrans() && pcSPS->getScalingListFlag()) diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index 96e0d4a95c2097f78c66362e93889febb14c2ff8..5117979970c69ad8f96e4fa8d05ae268e019f2b2 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -957,10 +957,10 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) WRITE_FLAG( pcSPS->getEntropyCodingSyncEntryPointsPresentFlag() ? 1 : 0, "sps_wpp_entry_point_offsets_present_flag" ); } #endif - +#if !JVET_R0332_HLS_ORDER WRITE_FLAG( pcSPS->getUseWP() ? 1 : 0, "sps_weighted_pred_flag" ); // Use of Weighting Prediction (P_SLICE) WRITE_FLAG( pcSPS->getUseWPBiPred() ? 1 : 0, "sps_weighted_bipred_flag" ); // Use of Weighting Bi-Prediction (B_SLICE) - +#endif WRITE_CODE(pcSPS->getBitsForPOC()-4, 4, "log2_max_pic_order_cnt_lsb_minus4"); WRITE_FLAG(pcSPS->getPocMsbFlag() ? 1 : 0, "sps_poc_msb_flag"); @@ -989,6 +989,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) dpb_parameters(pcSPS->getMaxTLayers() - 1, pcSPS->getSubLayerDpbParamsFlag(), pcSPS); } CHECK( pcSPS->getMaxCUWidth() != pcSPS->getMaxCUHeight(), "Rectangular CTUs not supported" ); +#if !JVET_R0332_HLS_ORDER WRITE_FLAG(pcSPS->getLongTermRefsPresent() ? 1 : 0, "long_term_ref_pics_flag"); #if JVET_R0205 if( pcSPS->getVPSId() > 0 ) @@ -1032,6 +1033,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) #endif } } +#endif if( pcSPS->getChromaFormatIdc() != CHROMA_400 ) { WRITE_FLAG(pcSPS->getUseDualITree(), "qtbtt_dual_tree_intra_flag"); @@ -1106,6 +1108,55 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) CHECK(pcSPS->getBDPCMEnabledFlag(), "BDPCM cannot be used when transform skip is disabled"); } +#if JVET_R0332_HLS_ORDER + WRITE_FLAG(pcSPS->getUseWP() ? 1 : 0, "sps_weighted_pred_flag"); // Use of Weighting Prediction (P_SLICE) + WRITE_FLAG(pcSPS->getUseWPBiPred() ? 1 : 0, "sps_weighted_bipred_flag"); // Use of Weighting Bi-Prediction (B_SLICE) + + WRITE_FLAG(pcSPS->getLongTermRefsPresent() ? 1 : 0, "long_term_ref_pics_flag"); +#if JVET_R0205 + if( pcSPS->getVPSId() > 0 ) + { + WRITE_FLAG( pcSPS->getInterLayerPresentFlag() ? 1 : 0, "sps_inter_layer_ref_pics_present_flag" ); + } +#else + WRITE_FLAG( pcSPS->getInterLayerPresentFlag() ? 1 : 0, "inter_layer_ref_pics_present_flag" ); +#endif + WRITE_FLAG(pcSPS->getIDRRefParamListPresent() ? 1 : 0, "sps_idr_rpl_present_flag" ); + WRITE_FLAG(pcSPS->getRPL1CopyFromRPL0Flag() ? 1 : 0, "rpl1_copy_from_rpl0_flag"); + + const RPLList* rplList0 = pcSPS->getRPLList0(); + const RPLList* rplList1 = pcSPS->getRPLList1(); + + //Write candidate for List0 + uint32_t numberOfRPL = pcSPS->getNumRPL0(); + WRITE_UVLC(numberOfRPL, "num_ref_pic_lists_in_sps[0]"); + for (int ii = 0; ii < numberOfRPL; ii++) + { + const ReferencePictureList* rpl = rplList0->getReferencePictureList(ii); +#if JVET_R0059_RPL_CLEANUP + xCodeRefPicList(rpl, pcSPS->getLongTermRefsPresent(), pcSPS->getBitsForPOC(), !pcSPS->getUseWP() && !pcSPS->getUseWPBiPred(), ii); +#else + xCodeRefPicList( rpl, pcSPS->getLongTermRefsPresent(), pcSPS->getBitsForPOC(), !pcSPS->getUseWP() && !pcSPS->getUseWPBiPred()); +#endif + } + + //Write candidate for List1 + if (!pcSPS->getRPL1CopyFromRPL0Flag()) + { + numberOfRPL = pcSPS->getNumRPL1(); + WRITE_UVLC(numberOfRPL, "num_ref_pic_lists_in_sps[1]"); + for (int ii = 0; ii < numberOfRPL; ii++) + { + const ReferencePictureList* rpl = rplList1->getReferencePictureList(ii); +#if JVET_R0059_RPL_CLEANUP + xCodeRefPicList(rpl, pcSPS->getLongTermRefsPresent(), pcSPS->getBitsForPOC(), !pcSPS->getUseWP() && !pcSPS->getUseWPBiPred(), ii); +#else + xCodeRefPicList( rpl, pcSPS->getLongTermRefsPresent(), pcSPS->getBitsForPOC(), !pcSPS->getUseWP() && !pcSPS->getUseWPBiPred()); +#endif + } + } +#endif + WRITE_FLAG( pcSPS->getWrapAroundEnabledFlag() ? 1 : 0, "sps_ref_wraparound_enabled_flag" ); #if !JVET_Q0764_WRAP_AROUND_WITH_RPR if( pcSPS->getWrapAroundEnabledFlag() ) @@ -1141,6 +1192,47 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) WRITE_FLAG(pcSPS->getFpelMmvdEnabledFlag() ? 1 : 0, "sps_mmvd_fullpel_only_flag"); } #endif +#if JVET_R0332_HLS_ORDER + WRITE_UVLC(MRG_MAX_NUM_CANDS - pcSPS->getMaxNumMergeCand(), "six_minus_max_num_merge_cand"); + WRITE_FLAG( pcSPS->getUseSBT() ? 1 : 0, "sps_sbt_enabled_flag"); + WRITE_FLAG( pcSPS->getUseAffine() ? 1 : 0, "sps_affine_enabled_flag" ); + if ( pcSPS->getUseAffine() ) + { + WRITE_UVLC(AFFINE_MRG_MAX_NUM_CANDS - pcSPS->getMaxNumAffineMergeCand(), "five_minus_max_num_subblock_merge_cand"); + WRITE_FLAG( pcSPS->getUseAffineType() ? 1 : 0, "sps_affine_type_flag" ); + if (pcSPS->getAMVREnabledFlag()) + { + WRITE_FLAG( pcSPS->getAffineAmvrEnabledFlag() ? 1 : 0, "sps_affine_amvr_enabled_flag" ); + } + WRITE_FLAG( pcSPS->getUsePROF() ? 1 : 0, "sps_affine_prof_enabled_flag" ); + if (pcSPS->getUsePROF()) + { + WRITE_FLAG(pcSPS->getProfControlPresentFlag() ? 1 : 0, "sps_prof_pic_present_flag" ); + } + } + + WRITE_FLAG(pcSPS->getUseBcw() ? 1 : 0, "sps_bcw_enabled_flag"); + + WRITE_FLAG( pcSPS->getUseCiip() ? 1 : 0, "sps_ciip_enabled_flag" ); +#if !JVET_R0214_MMVD_SYNTAX_MODIFICATION + if ( pcSPS->getUseMMVD() ) + { + WRITE_FLAG( pcSPS->getFpelMmvdEnabledFlag() ? 1 : 0, "sps_fpel_mmvd_enabled_flag" ); + } +#endif + if (pcSPS->getMaxNumMergeCand() >= 2) + { + WRITE_FLAG(pcSPS->getUseGeo() ? 1 : 0, "sps_gpm_enabled_flag"); + if (pcSPS->getUseGeo() && pcSPS->getMaxNumMergeCand() >= 3) + { + CHECK(pcSPS->getMaxNumMergeCand() < pcSPS->getMaxNumGeoCand(), "Incorrrect max number of GEO candidates!"); + WRITE_UVLC(pcSPS->getMaxNumMergeCand() - pcSPS->getMaxNumGeoCand(), "max_num_merge_cand_minus_max_num_gpm_cand"); + } + } + + WRITE_UVLC(pcSPS->getLog2ParallelMergeLevelMinus2(), "log2_parallel_merge_level_minus2"); +#endif + WRITE_FLAG( pcSPS->getUseISP() ? 1 : 0, "sps_isp_enabled_flag"); WRITE_FLAG( pcSPS->getUseMRL() ? 1 : 0, "sps_mrl_enabled_flag"); WRITE_FLAG( pcSPS->getUseMIP() ? 1 : 0, "sps_mip_enabled_flag"); @@ -1166,6 +1258,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) WRITE_FLAG( pcSPS->getUseInterMTS() ? 1 : 0, "sps_explicit_mts_inter_enabled_flag" ); } CHECK(pcSPS->getMaxNumMergeCand() > MRG_MAX_NUM_CANDS, "More merge candidates signalled than supported"); +#if !JVET_R0332_HLS_ORDER WRITE_UVLC(MRG_MAX_NUM_CANDS - pcSPS->getMaxNumMergeCand(), "six_minus_max_num_merge_cand"); WRITE_FLAG( pcSPS->getUseSBT() ? 1 : 0, "sps_sbt_enabled_flag"); WRITE_FLAG( pcSPS->getUseAffine() ? 1 : 0, "sps_affine_enabled_flag" ); @@ -1183,6 +1276,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) WRITE_FLAG(pcSPS->getProfControlPresentFlag() ? 1 : 0, "sps_prof_pic_present_flag" ); } } +#endif WRITE_FLAG(pcSPS->getPLTMode() ? 1 : 0, "sps_palette_enabled_flag" ); if (pcSPS->getChromaFormatIdc() == CHROMA_444 && pcSPS->getLog2MaxTbSize() != 6) { @@ -1196,13 +1290,16 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) WRITE_UVLC(pcSPS->getMinQpPrimeTsMinus4(CHANNEL_TYPE_LUMA), "min_qp_prime_ts_minus4"); #endif } +#if !JVET_R0332_HLS_ORDER WRITE_FLAG( pcSPS->getUseBcw() ? 1 : 0, "sps_bcw_enabled_flag" ); +#endif WRITE_FLAG(pcSPS->getIBCFlag() ? 1 : 0, "sps_ibc_enabled_flag"); if (pcSPS->getIBCFlag()) { CHECK(pcSPS->getMaxNumIBCMergeCand() > IBC_MRG_MAX_NUM_CANDS, "More IBC merge candidates signalled than supported"); WRITE_UVLC(IBC_MRG_MAX_NUM_CANDS - pcSPS->getMaxNumIBCMergeCand(), "six_minus_max_num_ibc_merge_cand"); } +#if !JVET_R0332_HLS_ORDER // KJS: sps_ciip_enabled_flag WRITE_FLAG( pcSPS->getUseCiip() ? 1 : 0, "sps_ciip_enabled_flag" ); #if !JVET_R0214_MMVD_SYNTAX_MODIFICATION @@ -1220,6 +1317,7 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) WRITE_UVLC(pcSPS->getMaxNumMergeCand() - pcSPS->getMaxNumGeoCand(), "max_num_merge_cand_minus_max_num_gpm_cand"); } } +#endif WRITE_FLAG(pcSPS->getUseLmcs() ? 1 : 0, "sps_lmcs_enable_flag"); WRITE_FLAG( pcSPS->getUseLFNST() ? 1 : 0, "sps_lfnst_enabled_flag" ); @@ -1236,8 +1334,9 @@ void HLSWriter::codeSPS( const SPS* pcSPS ) } } #endif +#if !JVET_R0332_HLS_ORDER WRITE_UVLC(pcSPS->getLog2ParallelMergeLevelMinus2(), "log2_parallel_merge_level_minus2"); - +#endif // KJS: reference picture sets to be replaced