diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 1a0471060ad3cad43a421461f68d099b661447d8..f3554cadfac2429da0c060fcf77f930e62a30225 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -51,6 +51,7 @@ #include <cassert> //########### place macros to be removed in next cycle below this line ############### +#define JVET_R0071_SPS_PPS_CELANUP 1 // JVET-R0071 item 2-4: cleanups on subpicture signalling (item 1 has been ported in JVET_R0156_ASPECT4) #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 dc368125a3de3dba6386faef30d4ccbfd44617b5..5d19eea685e7aed02b239e51e03640ae635ecde2 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -641,6 +641,12 @@ void HLSyntaxReader::parsePPS( PPS* pcPPS ) READ_CODE(1, uiCode, "loop_filter_across_tiles_enabled_flag"); pcPPS->setLoopFilterAcrossTilesEnabledFlag( uiCode == 1 ); READ_CODE(1, uiCode, "loop_filter_across_slices_enabled_flag"); pcPPS->setLoopFilterAcrossSlicesEnabledFlag( uiCode == 1 ); } +#if JVET_R0071_SPS_PPS_CELANUP + else + { + pcPPS->setSingleSlicePerSubPicFlag(1); + } +#endif READ_FLAG( uiCode, "cabac_init_present_flag" ); pcPPS->setCabacInitPresentFlag( uiCode ? true : false ); @@ -1285,8 +1291,13 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) pcSPS->setSubPicCtuTopLeftY( 0, 0 ); pcSPS->setSubPicWidth( 0, ( pcSPS->getMaxPicWidthInLumaSamples() + pcSPS->getCTUSize() - 1 ) >> floorLog2( pcSPS->getCTUSize() ) ); pcSPS->setSubPicHeight( 0, ( pcSPS->getMaxPicHeightInLumaSamples() + pcSPS->getCTUSize() - 1 ) >> floorLog2( pcSPS->getCTUSize() ) ); +#if JVET_R0071_SPS_PPS_CELANUP + pcSPS->setSubPicTreatedAsPicFlag(0, 1); + pcSPS->setLoopFilterAcrossSubpicEnabledFlag(0, 0); +#else pcSPS->setSubPicTreatedAsPicFlag( 0, 0 ); pcSPS->setLoopFilterAcrossSubpicEnabledFlag( 0, 1 ); +#endif } else {