From 8825059924c8b5e75fb9c39ecf54b74451c1c7b4 Mon Sep 17 00:00:00 2001 From: phil <cowanp@sharplabs.com> Date: Thu, 16 Jul 2020 15:08:32 -0700 Subject: [PATCH] JVET-S0184: Modifications to virtual boundary constraints --- source/Lib/CommonLib/TypeDef.h | 2 ++ source/Lib/DecoderLib/VLCReader.cpp | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index b0b5714ab..8b8459fcd 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -131,6 +131,8 @@ #define JVET_S0183_VPS_INFORMATION_SIGNALLING 1 // JVET-S0183: Proposal 1, signal vps_num_output_layer_sets_minus1 as vps_num_output_layer_sets_minus2 +#define JVET_S0184_VIRTUAL_BOUNDARY_CONSTRAINT 1 // JVET-S0184: Conformance constraints regarding virtual boundary signalling when subpictures are present + //########### place macros to be be kept below this line ############### #define JVET_S0257_DUMP_360SEI_MESSAGE 1 // Software support of 360 SEI messages diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index b6ecf0b00..5ce1258b0 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -2897,7 +2897,9 @@ void HLSyntaxReader::parsePictureHeader( PicHeader* picHeader, ParameterSetManag { READ_FLAG( uiCode, "ph_virtual_boundaries_present_flag" ); picHeader->setVirtualBoundariesPresentFlag( uiCode != 0 ); +#if !JVET_S0184_VIRTUAL_BOUNDARY_CONSTRAINT CHECK( sps->getSubPicInfoPresentFlag() && picHeader->getVirtualBoundariesPresentFlag(), "When the subpicture info is present, the signalling of the virtual boundary position, if present, shall be in SPS" ); +#endif if( picHeader->getVirtualBoundariesPresentFlag() ) { READ_CODE( 2, uiCode, "ph_num_ver_virtual_boundaries"); picHeader->setNumVerVirtualBoundaries( uiCode ); @@ -3587,6 +3589,10 @@ void HLSyntaxReader::parseSliceHeader (Slice* pcSlice, PicHeader* picHeader, Par #if !JVET_S0052_RM_SEPARATE_COLOUR_PLANE CHECK(pcSlice->getPictureHeaderInSliceHeader() && sps->getSeparateColourPlaneFlag() == 1, "when separate_colour_plane_flag is equal to 1, the value of picture_header_in_slice_header_flag shall be equal to 0"); #endif +#if JVET_S0184_VIRTUAL_BOUNDARY_CONSTRAINT + CHECK(sps->getSubPicInfoPresentFlag() == 1 && sps->getVirtualBoundariesEnabledFlag() == 1 && sps->getVirtualBoundariesPresentFlag() == 0, + "when sps_subpic_info_present_flag is equal to 1 and sps_virtual_boundaries_enabled_flag is equal to 1, sps_virtual_boundaries_present_flag shall be equal 1"); +#endif const ChromaFormat chFmt = sps->getChromaFormatIdc(); const uint32_t numValidComp=getNumberValidComponents(chFmt); -- GitLab