diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index e9e13a403f9e00a6059ccf563e741a9add7985e1..7c1e7f15279d1a55efee0b984db5d137c73adf2d 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -91,7 +91,7 @@ #define JVET_R0371_MAX_NUM_SUB_BLK_MRG_CAND 1 // JVET-R0371: set the range of max number of subblock based merge candidate to 0 to 5 - sps_sbtmvp_enabled_flag. -#define JVET_R0113_PICTURE_PARAMETER_SET_CLEANUP 1 // JVET-R0113: Conditional signaling of loop_filter_across_tiles_enabled_flag and the 6 PPS PH/SH location flags +#define JVET_R0113_AND_JVET_R0106_PPS_CLEANUP 1 // JVET-R0113 and JVET-R0106: Cleanup in Picture Parameter Set #define JVET_R0233_CCALF_LINE_BUFFER_REDUCTION 1 // JVET-R0233 method 2: Line buffer reduction for CCALF diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index 4298e0aedfe072571aa692838c19167b44f78b58..5ce2ea83f0d8e2b26443915eb1aa735ead42f242 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -538,14 +538,14 @@ void HLSyntaxReader::parsePPS( PPS* pcPPS ) // rectangular slice signalling if (pcPPS->getNumTiles() > 1) { -#if JVET_R0113_PICTURE_PARAMETER_SET_CLEANUP +#if JVET_R0113_AND_JVET_R0106_PPS_CLEANUP READ_CODE(1, uiCode, "pps_loop_filter_across_tiles_enabled_flag"); pcPPS->setLoopFilterAcrossTilesEnabledFlag(uiCode == 1); #endif READ_CODE(1, uiCode, "rect_slice_flag"); } else { -#if JVET_R0113_PICTURE_PARAMETER_SET_CLEANUP +#if JVET_R0113_AND_JVET_R0106_PPS_CLEANUP pcPPS->setLoopFilterAcrossTilesEnabledFlag(true); #endif uiCode = 1; @@ -679,7 +679,7 @@ void HLSyntaxReader::parsePPS( PPS* pcPPS ) pcPPS->setSliceTileIdx(pcPPS->getNumSlicesInPic()-1, tileIdx ); } -#if !JVET_R0113_PICTURE_PARAMETER_SET_CLEANUP +#if !JVET_R0113_AND_JVET_R0106_PPS_CLEANUP // loop filtering across slice/tile controls READ_CODE(1, uiCode, "loop_filter_across_tiles_enabled_flag"); pcPPS->setLoopFilterAcrossTilesEnabledFlag( uiCode == 1 ); #endif @@ -808,6 +808,17 @@ void HLSyntaxReader::parsePPS( PPS* pcPPS ) { READ_FLAG( uiCode, "deblocking_filter_override_enabled_flag" ); pcPPS->setDeblockingFilterOverrideEnabledFlag( uiCode ? true : false ); READ_FLAG( uiCode, "pps_deblocking_filter_disabled_flag" ); pcPPS->setPPSDeblockingFilterDisabledFlag(uiCode ? true : false ); +#if JVET_R0113_AND_JVET_R0106_PPS_CLEANUP + if (!pcPPS->getNoPicPartitionFlag() && pcPPS->getDeblockingFilterOverrideEnabledFlag()) + { + READ_FLAG(uiCode, "pps_dbf_info_in_ph_flag"); + pcPPS->setDbfInfoInPhFlag(uiCode ? true : false); + } + else + { + pcPPS->setDbfInfoInPhFlag(false); + } +#endif if(!pcPPS->getPPSDeblockingFilterDisabledFlag()) { READ_SVLC( iCode, "pps_beta_offset_div2" ); pcPPS->setDeblockingFilterBetaOffsetDiv2( iCode ); @@ -838,9 +849,12 @@ void HLSyntaxReader::parsePPS( PPS* pcPPS ) else { pcPPS->setDeblockingFilterOverrideEnabledFlag(false); +#if JVET_R0113_AND_JVET_R0106_PPS_CLEANUP + pcPPS->setDbfInfoInPhFlag(false); +#endif } -#if JVET_R0113_PICTURE_PARAMETER_SET_CLEANUP +#if JVET_R0113_AND_JVET_R0106_PPS_CLEANUP if (!pcPPS->getNoPicPartitionFlag()) { READ_FLAG(uiCode, "pps_rpl_info_in_ph_flag"); pcPPS->setRplInfoInPhFlag(uiCode ? true : false); @@ -849,15 +863,6 @@ void HLSyntaxReader::parsePPS( PPS* pcPPS ) { pcPPS->setRplInfoInPhFlag(false); } - if(!pcPPS->getNoPicPartitionFlag() && pcPPS->getDeblockingFilterOverrideEnabledFlag()) - { - READ_FLAG(uiCode, "pps_dbf_info_in_ph_flag"); - pcPPS->setDbfInfoInPhFlag(uiCode ? true : false); - } - else - { - pcPPS->setDbfInfoInPhFlag(false); - } if (!pcPPS->getNoPicPartitionFlag()) { READ_FLAG(uiCode, "pps_sao_info_in_ph_flag"); pcPPS->setSaoInfoInPhFlag(uiCode ? true : false); diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index 9f2c3621191d332b20625c8179c700731a499a00..0be46d5ce044fa306753e3a1862ee937b6a8dbd6 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -342,7 +342,7 @@ void HLSWriter::codePPS( const PPS* pcPPS ) // rectangular slice signalling if (pcPPS->getNumTiles() > 1) { -#if JVET_R0113_PICTURE_PARAMETER_SET_CLEANUP +#if JVET_R0113_AND_JVET_R0106_PPS_CLEANUP WRITE_FLAG(pcPPS->getLoopFilterAcrossTilesEnabledFlag(), "pps_loop_filter_across_tiles_enabled_flag"); #endif WRITE_FLAG(pcPPS->getRectSliceFlag() ? 1 : 0, "rect_slice_flag"); @@ -409,7 +409,7 @@ void HLSWriter::codePPS( const PPS* pcPPS ) } } -#if !JVET_R0113_PICTURE_PARAMETER_SET_CLEANUP +#if !JVET_R0113_AND_JVET_R0106_PPS_CLEANUP // loop filtering across slice/tile controls WRITE_FLAG( pcPPS->getLoopFilterAcrossTilesEnabledFlag(), "loop_filter_across_tiles_enabled_flag"); #endif @@ -469,6 +469,12 @@ void HLSWriter::codePPS( const PPS* pcPPS ) { WRITE_FLAG( pcPPS->getDeblockingFilterOverrideEnabledFlag() ? 1 : 0, "deblocking_filter_override_enabled_flag" ); WRITE_FLAG( pcPPS->getPPSDeblockingFilterDisabledFlag() ? 1 : 0, "pps_deblocking_filter_disabled_flag" ); +#if JVET_R0113_AND_JVET_R0106_PPS_CLEANUP + if (!pcPPS->getNoPicPartitionFlag() && pcPPS->getDeblockingFilterOverrideEnabledFlag()) + { + WRITE_FLAG(pcPPS->getDbfInfoInPhFlag() ? 1 : 0, "pps_dbf_info_in_ph_flag"); + } +#endif if(!pcPPS->getPPSDeblockingFilterDisabledFlag()) { WRITE_SVLC( pcPPS->getDeblockingFilterBetaOffsetDiv2(), "pps_beta_offset_div2" ); @@ -480,14 +486,10 @@ void HLSWriter::codePPS( const PPS* pcPPS ) } } -#if JVET_R0113_PICTURE_PARAMETER_SET_CLEANUP +#if JVET_R0113_AND_JVET_R0106_PPS_CLEANUP if (!pcPPS->getNoPicPartitionFlag()) { WRITE_FLAG(pcPPS->getRplInfoInPhFlag() ? 1 : 0, "pps_rpl_info_in_ph_flag"); - if (pcPPS->getDeblockingFilterOverrideEnabledFlag()) - { - WRITE_FLAG(pcPPS->getDbfInfoInPhFlag() ? 1 : 0, "pps_dbf_info_in_ph_flag"); - } WRITE_FLAG(pcPPS->getSaoInfoInPhFlag() ? 1 : 0, "pps_sao_info_in_ph_flag"); WRITE_FLAG(pcPPS->getAlfInfoInPhFlag() ? 1 : 0, "pps_alf_info_in_ph_flag"); if ((pcPPS->getUseWP() || pcPPS->getWPBiPred()) && pcPPS->getRplInfoInPhFlag())