diff --git a/doc/software-manual.tex b/doc/software-manual.tex index e463001801d7de0c79aaa310da3eb62eab53d294..7d8b07e59c6ad2f37c9d1cdd812766f22f6c4ab8 100644 --- a/doc/software-manual.tex +++ b/doc/software-manual.tex @@ -977,6 +977,18 @@ Valid values are: main, high. NB: There is currently only limited validation that the encoder configuration complies with the profile, level and tier constraints. \\ +\Option{FrameOnlyConstraintFlag} & +%\ShortOption{\None} & +\Default{1} & +Specifies the value of ptl_frame_only_constraint_flag . +\\ + +\Option{MultiLayerEnabledFlag} & +%\ShortOption{\None} & +\Default{0} & +Specifies the value of ptl_multilayer_enabled_flag. +\\ + \Option{SubProfile} & %\ShortOption{\None} & \Default{0} & @@ -1085,6 +1097,12 @@ Specifies the value of gci_no_gdr_constraint_flag Specifies the value of gci_no_aps_constraint_flag \\ +\Option{NoIdrRplConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_idr_rpl_constraint_flag +\\ + \Option{OneTilePerPicConstraintFlag} & %\ShortOption{\None} & \Default{false} & @@ -1102,11 +1120,22 @@ Specifies the value of pic_header_in_slice_header_constraint_flag \Default{false} & Specifies the value of one_slice_per_pic_constraint_flag \\ +\Option{NoRectSliceConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_rectangular_slice_constraint_flag +\\ -\Option{OneSubpicPerPicConstraintFlag} & +\Option{OneSlicePerSubpicConstraintFlag} & %\ShortOption{\None} & \Default{false} & -Specifies the value of one_subpic_per_pic_constraint_flag +Specifies the value of gci_one_slice_per_subpic_constraint_flag +\\ + +\Option{NoSubpicInfoConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_subpic_info_constraint_flag \\ \Option{MaxLog2CtuSizeConstraintIdc} & @@ -1355,18 +1384,6 @@ Specifies the value of gci_no_ladf_constraint_flag Specifies the value of gci_no_virtual_boundaries_constraint_flag \\ - -\Option{SingleLayerConstraintFlag} & -%\ShortOption{\None} & -\Default{false} & -Specifies the value of single_layer_constraint_flag -\\ - -\Option{FrameOnlyConstraintFlag} & -%\ShortOption{\None} & -\Default{false} & -Specifies the value of general_frame_only_constraint_flag -\\ \end{OptionTableNoShorthand} diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index d0bfaf9aa0e82321661f65342ba675745c43408b..57d5bad6ee706cf13ea118498df9abe88aa8f12c 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -268,7 +268,21 @@ void EncApp::xInitLibCfg() m_cEncLib.setOneTilePerPicConstraintFlag(m_oneTilePerPicConstraintFlag); m_cEncLib.setPicHeaderInSliceHeaderConstraintFlag(m_picHeaderInSliceHeaderConstraintFlag); m_cEncLib.setOneSlicePerPicConstraintFlag(m_oneSlicePerPicConstraintFlag); +#if JVET_S0113_S0195_GCI + m_cEncLib.setNoIdrRplConstraintFlag(m_noIdrRplConstraintFlag); + CHECK(m_noIdrRplConstraintFlag&& m_idrRefParamList, "IDR RPL shall be deactivated when gci_no_idr_rpl_constraint_flag equal to 1"); + + m_cEncLib.setNoRectSliceConstraintFlag(m_noRectSliceConstraintFlag); + CHECK(m_noRectSliceConstraintFlag && !m_rasterSliceFlag, "Rectangular slice shall be deactivated when gci_no_rectangular_slice_constraint_flag equal to 1"); + + m_cEncLib.setOneSlicePerSubpicConstraintFlag(m_oneSlicePerSubpicConstraintFlag); + CHECK(m_oneSlicePerSubpicConstraintFlag && !m_singleSlicePerSubPicFlag, "Each picture shall consist of one and only one rectangular slice when gci_one_slice_per_subpic_constraint_flag equal to 1"); + + m_cEncLib.setNoSubpicInfoConstraintFlag(m_noSubpicInfoConstraintFlag); + CHECK(m_noSubpicInfoConstraintFlag&& m_subPicInfoPresentFlag, "Subpicture information shall not present when gci_no_subpic_info_constraint_flag equal to 1"); +#else m_cEncLib.setOneSubpicPerPicConstraintFlag(m_oneSubpicPerPicConstraintFlag); +#endif #if !JVET_S0138_GCI_PTL m_cEncLib.setFrameOnlyConstraintFlag(m_frameOnlyConstraintFlag); #endif @@ -445,7 +459,14 @@ void EncApp::xInitLibCfg() m_cEncLib.setOneTilePerPicConstraintFlag(false); m_cEncLib.setPicHeaderInSliceHeaderConstraintFlag(false); m_cEncLib.setOneSlicePerPicConstraintFlag(false); +#if JVET_S0113_S0195_GCI + m_cEncLib.setNoIdrRplConstraintFlag(false); + m_cEncLib.setNoRectSliceConstraintFlag(false); + m_cEncLib.setOneSlicePerSubpicConstraintFlag(false); + m_cEncLib.setNoSubpicInfoConstraintFlag(false); +#else m_cEncLib.setOneSubpicPerPicConstraintFlag(false); +#endif #if !JVET_S0138_GCI_PTL m_cEncLib.setFrameOnlyConstraintFlag(false); #endif diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index 70f217b71fff88e41c477b0671ef07c5115aaa86..7fdbfe7e7b25ef727e4de040cf30c595f4c83b94 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -835,7 +835,14 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ("OneTilePerPicConstraintFlag", m_oneTilePerPicConstraintFlag, false, "Indicate that each picture shall contain only one tile") ("PicHeaderInSliceHeaderConstraintFlag", m_picHeaderInSliceHeaderConstraintFlag, false, "Indicate that picture header is present in slice header") ("OneSlicePerPicConstraintFlag", m_oneSlicePerPicConstraintFlag, false, "Indicate that each picture shall contain only one slice") +#if JVET_S0113_S0195_GCI + ("NoIdrRplConstraintFlag", m_noIdrRplConstraintFlag, false, "Indicate that RPL is not present in SH of IDR slices") + ("NoRectSliceConstraintFlag", m_noRectSliceConstraintFlag, false, "Indicate that rectagular slice is deactivated") + ("OneSlicePerSubpicConstraintFlag", m_oneSlicePerSubpicConstraintFlag, false, "Indicate that each subpicture shall contain only one slice") + ("NoSubpicInfoConstraintFlag", m_noSubpicInfoConstraintFlag, false, "Indicate that subpicture information is not present") +#else ("OneSubpicPerPicConstraintFlag", m_oneSubpicPerPicConstraintFlag, false, "Indicate that each picture shall contain only one subpicture") +#endif #if JVET_S0066_GCI ("MaxLog2CtuSizeConstraintIdc", m_maxLog2CtuSizeConstraintIdc, 8, "Indicate that Log2CtuSize shall be in the range of 0 to m_maxLog2CtuSizeConstraintIdc") #endif diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h index 6ff20c2cd1d3ae3a01edb076358d1015f5e10819..5a9f598e5d401abfd9af152d386c6e5b6d8b5211 100644 --- a/source/App/EncoderApp/EncAppCfg.h +++ b/source/App/EncoderApp/EncAppCfg.h @@ -217,7 +217,14 @@ protected: bool m_oneTilePerPicConstraintFlag; bool m_picHeaderInSliceHeaderConstraintFlag; bool m_oneSlicePerPicConstraintFlag; +#if JVET_S0113_S0195_GCI + bool m_noIdrRplConstraintFlag; + bool m_noRectSliceConstraintFlag; + bool m_oneSlicePerSubpicConstraintFlag; + bool m_noSubpicInfoConstraintFlag; +#else bool m_oneSubpicPerPicConstraintFlag; +#endif #if !JVET_S0138_GCI_PTL bool m_frameOnlyConstraintFlag; #endif diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h index 2fd099594a74a4ee324d36e8d6a9ff9373b5a29f..007b00ed49c5328b7943ee318e69ae89b7056df5 100644 --- a/source/Lib/CommonLib/Slice.h +++ b/source/Lib/CommonLib/Slice.h @@ -246,7 +246,14 @@ class ConstraintInfo bool m_oneTilePerPicConstraintFlag; bool m_picHeaderInSliceHeaderConstraintFlag; bool m_oneSlicePerPicConstraintFlag; +#if JVET_S0113_S0195_GCI + bool m_noIdrRplConstraintFlag; + bool m_noRectSliceConstraintFlag; + bool m_oneSlicePerSubpicConstraintFlag; + bool m_noSubpicInfoConstraintFlag; +#else bool m_oneSubpicPerPicConstraintFlag; +#endif #if !JVET_S0138_GCI_PTL bool m_frameOnlyConstraintFlag; #endif @@ -332,7 +339,14 @@ public: , m_oneTilePerPicConstraintFlag(false) , m_picHeaderInSliceHeaderConstraintFlag(false) , m_oneSlicePerPicConstraintFlag(false) +#if JVET_S0113_S0195_GCI + , m_noIdrRplConstraintFlag(false) + , m_noRectSliceConstraintFlag(false) + , m_oneSlicePerSubpicConstraintFlag(false) + , m_noSubpicInfoConstraintFlag(false) +#else , m_oneSubpicPerPicConstraintFlag(false) +#endif #if !JVET_S0138_GCI_PTL , m_frameOnlyConstraintFlag (false) #endif @@ -444,8 +458,22 @@ public: bool getOneSlicePerPicConstraintFlag() const { return m_oneSlicePerPicConstraintFlag; } void setOneSlicePerPicConstraintFlag(bool b) { m_oneSlicePerPicConstraintFlag = b; } +#if JVET_S0113_S0195_GCI + bool getNoIdrRplConstraintFlag() const { return m_noIdrRplConstraintFlag; } + void setNoIdrRplConstraintFlag(bool b) { m_noIdrRplConstraintFlag = b; } + + bool getNoRectSliceConstraintFlag() const { return m_noRectSliceConstraintFlag; } + void setNoRectSliceConstraintFlag(bool b) { m_noRectSliceConstraintFlag = b; } + + bool getOneSlicePerSubpicConstraintFlag() const { return m_oneSlicePerSubpicConstraintFlag; } + void setOneSlicePerSubpicConstraintFlag(bool b) { m_oneSlicePerSubpicConstraintFlag = b; } + + bool getNoSubpicInfoConstraintFlag() const { return m_noSubpicInfoConstraintFlag; } + void setNoSubpicInfoConstraintFlag(bool b) { m_noSubpicInfoConstraintFlag = b; } +#else bool getOneSubpicPerPicConstraintFlag() const { return m_oneSubpicPerPicConstraintFlag; } void setOneSubpicPerPicConstraintFlag(bool b) { m_oneSubpicPerPicConstraintFlag = b; } +#endif bool getIntraOnlyConstraintFlag() const { return m_intraOnlyConstraintFlag; } void setIntraOnlyConstraintFlag(bool b) { m_intraOnlyConstraintFlag = b; } diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 88a323329203b5c882bc0f5ea856e055a741d3c0..7e3312b5aed5a479276b2de4c6b2fa73bcbd1060 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -147,6 +147,11 @@ #define JVET_S0138_GCI_PTL 1 // JVET-S_Notes_d9: move frame_only_constraint_flag and single_layer_constraint_flag into PTL for easy access +#define JVET_S0113_S0195_GCI 1 // JVET-S0113: no_rectangular_slice_constraint_flag to constrain pps_rect_slice_flag + // one_slice_per_subpicture_constraint_flag to constrain pps_single_slice_per_subpic_flag + // JVET-S0195: replace one_subpic_per_pic_constraint_flag with no_subpic_info_constraint_flag and its semantics + // add no_idr_rpl_constraint_flag + #define JVET_S0182_RPL_SIGNALLING 1 // JVET-S0182: modifications to rpl information signalling #define JVET_S0185_PROPOSAl1_PICTURE_TIMING_CLEANUP 1 // JVET-S0185: Proposal 1, put syntax element pt_cpb_removal_delay_minus1[] first, followed by similar information for sub-layers, followed by pt_dpb_output_delay diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp index af37a0dcb6f7ecb2e6c0742996ea6925eb2f602e..f6ad8a5df2ef5dc4b4de7e53840117ee6c520ceb 100644 --- a/source/Lib/DecoderLib/DecLib.cpp +++ b/source/Lib/DecoderLib/DecLib.cpp @@ -1856,12 +1856,40 @@ void DecLib::xCheckParameterSetConstraints(const int layerId) #endif } +#if JVET_S0113_S0195_GCI + if (sps->getProfileTierLevel()->getConstraintInfo()->getNoIdrRplConstraintFlag()) + { + CHECK(sps->getIDRRefParamListPresent(), "When gci_no_idr_rpl_constraint_flag equal to 1 , the value of sps_idr_rpl_present_flag shall be equal to 0") + } + + if (sps->getProfileTierLevel()->getConstraintInfo()->getNoMixedNaluTypesInPicConstraintFlag()) + { + CHECK(pps->getMixedNaluTypesInPicFlag(), "When gci_no_mixed_nalu_types_in_pic_constraint_flag equal to 1, the value of pps_mixed_nalu_types_in_pic_flag shall be equal to 0") + } + + if (sps->getProfileTierLevel()->getConstraintInfo()->getNoRectSliceConstraintFlag()) + { + CHECK(pps->getRectSliceFlag(), "When gci_no_rectangular_slice_constraint_flag equal to 1, the value of pps_rect_slice_flag shall be equal to 0") + } + + if (sps->getProfileTierLevel()->getConstraintInfo()->getOneSlicePerSubpicConstraintFlag()) + { + CHECK(!(pps->getSingleSlicePerSubPicFlag()), "When gci_one_slice_per_subpic_constraint_flag equal to 1, the value of pps_single_slice_per_subpic_flag shall be equal to 1") + } + + if (sps->getProfileTierLevel()->getConstraintInfo()->getNoSubpicInfoConstraintFlag()) + { + CHECK(sps->getSubPicInfoPresentFlag(), "When gci_no_subpic_info_constraint_flag is equal to 1, the value of sps_subpic_info_present_flag shall be equal to 0") + } +#else #if JVET_S0050_GCI if (sps->getProfileTierLevel()->getConstraintInfo()->getOneSubpicPerPicConstraintFlag()) { CHECK(sps->getNumSubPics() != 1, "When one_subpic_per_pic_constraint_flag is equal to 1, the value of sps_num_subpics_minus1 shall be equal to 0") } #endif +#endif + #if JVET_S0066_GCI CHECK(sps->getCTUSize() > (1 << sps->getProfileTierLevel()->getConstraintInfo()->getMaxLog2CtuSizeConstraintIdc()), "The CTU size specified by sps_log2_ctu_size_minus5 shall not exceed the constraint specified by gci_three_minus_max_log2_ctu_size_constraint_idc"); diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp index 9b4fcc4e7958521fa0e8d9c1ee855361bb794ef1..e730abf429b38dff689f74b9d12a098bc99b90b0 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -1497,16 +1497,23 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) #endif READ_FLAG( uiCode, "subpic_info_present_flag" ); pcSPS->setSubPicInfoPresentFlag(uiCode); +#if JVET_S0113_S0195_GCI + if (pcSPS->getProfileTierLevel()->getConstraintInfo()->getNoSubpicInfoConstraintFlag()) + { + CHECK(uiCode != 0, "When gci_no_subpic_info_constraint_flag is equal to 1, the value of subpic_info_present_flag shall be equal to 0"); + } +#endif if (pcSPS->getSubPicInfoPresentFlag()) { READ_UVLC(uiCode, "sps_num_subpics_minus1"); pcSPS->setNumSubPics(uiCode + 1); CHECK(uiCode > (pcSPS->getMaxPicWidthInLumaSamples() / (1 << pcSPS->getCTUSize())) * (pcSPS->getMaxPicHeightInLumaSamples() / (1 << pcSPS->getCTUSize())) - 1, "Invalid sps_num_subpics_minus1 value"); +#if !JVET_S0113_S0195_GCI if (pcSPS->getProfileTierLevel()->getConstraintInfo()->getOneSubpicPerPicConstraintFlag()) { CHECK(uiCode != 0, "When one_subpic_per_pic_constraint_flag is equal to 1, each picture shall contain only one subpicture"); } - +#endif if( pcSPS->getNumSubPics() == 1 ) { pcSPS->setSubPicCtuTopLeftX( 0, 0 ); @@ -1915,6 +1922,13 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS) pcSPS->setInterLayerPresentFlag(0); } READ_FLAG( uiCode, "sps_idr_rpl_present_flag" ); pcSPS->setIDRRefParamListPresent( (bool) uiCode ); +#if JVET_S0113_S0195_GCI + if (pcSPS->getProfileTierLevel()->getConstraintInfo()->getNoIdrRplConstraintFlag()) + { + CHECK(uiCode != 0, "When gci_no_idr_rpl_constraint_flag equal to 1 , the value of sps_idr_rpl_present_flag shall be equal to 0"); + } +#endif + READ_FLAG(uiCode, "rpl1_copy_from_rpl0_flag"); pcSPS->setRPL1CopyFromRPL0Flag(uiCode); @@ -4629,10 +4643,19 @@ void HLSyntaxReader::parseConstraintInfo(ConstraintInfo *cinfo) } #endif READ_FLAG(symbol, "no_res_change_in_clvs_constraint_flag" ); cinfo->setNoResChangeInClvsConstraintFlag(symbol ? true : false); +#if JVET_S0113_S0195_GCI + READ_FLAG(symbol, "gci_no_idr_rpl_constraint_flag" ); cinfo->setNoIdrRplConstraintFlag(symbol ? true : false); +#endif READ_FLAG(symbol, "one_tile_per_pic_constraint_flag" ); cinfo->setOneTilePerPicConstraintFlag(symbol ? true : false); READ_FLAG(symbol, "pic_header_in_slice_header_constraint_flag"); cinfo->setPicHeaderInSliceHeaderConstraintFlag(symbol ? true : false); READ_FLAG(symbol, "one_slice_per_pic_constraint_flag" ); cinfo->setOneSlicePerPicConstraintFlag(symbol ? true : false); +#if JVET_S0113_S0195_GCI + READ_FLAG(symbol, "gci_no_rectangular_slice_constraint_flag" ); cinfo->setNoRectSliceConstraintFlag(symbol ? true : false); + READ_FLAG(symbol, "gci_one_slice_per_subpic_constraint_flag" ); cinfo->setOneSlicePerSubpicConstraintFlag(symbol ? true : false); + READ_FLAG(symbol, "gci_no_subpic_info_constraint_flag" ); cinfo->setNoSubpicInfoConstraintFlag(symbol ? true : false); +#else READ_FLAG(symbol, "one_subpic_per_pic_constraint_flag" ); cinfo->setOneSubpicPerPicConstraintFlag(symbol ? true : false); +#endif #if !JVET_S0050_GCI if (cinfo->getOneSlicePerPicConstraintFlag()) { diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h index 2e4524b6745bd373b693eb41c5f359aba0217394..83d24e12760a0b4326d17d8e538d340d23a42748 100644 --- a/source/Lib/EncoderLib/EncCfg.h +++ b/source/Lib/EncoderLib/EncCfg.h @@ -257,7 +257,14 @@ protected: bool m_oneTilePerPicConstraintFlag; bool m_picHeaderInSliceHeaderConstraintFlag; bool m_oneSlicePerPicConstraintFlag; +#if JVET_S0113_S0195_GCI + bool m_noIdrRplConstraintFlag; + bool m_noRectSliceConstraintFlag; + bool m_oneSlicePerSubpicConstraintFlag; + bool m_noSubpicInfoConstraintFlag; +#else bool m_oneSubpicPerPicConstraintFlag; +#endif #if !JVET_S0138_GCI_PTL bool m_frameOnlyConstraintFlag; #endif @@ -1887,8 +1894,23 @@ public: bool getOneSlicePerPicConstraintFlag() const { return m_oneSlicePerPicConstraintFlag; } void setOneSlicePerPicConstraintFlag(bool b) { m_oneSlicePerPicConstraintFlag = b; } +#if JVET_S0113_S0195_GCI + bool getNoIdrRplConstraintFlag() const { return m_noIdrRplConstraintFlag; } + void setNoIdrRplConstraintFlag(bool b) { m_noIdrRplConstraintFlag = b; } + + bool getNoRectSliceConstraintFlag() const { return m_noRectSliceConstraintFlag; } + void setNoRectSliceConstraintFlag(bool b) { m_noRectSliceConstraintFlag = b; } + + bool getOneSlicePerSubpicConstraintFlag() const { return m_oneSlicePerSubpicConstraintFlag; } + void setOneSlicePerSubpicConstraintFlag(bool b) { m_oneSlicePerSubpicConstraintFlag = b; } + + bool getNoSubpicInfoConstraintFlag() const { return m_noSubpicInfoConstraintFlag; } + void setNoSubpicInfoConstraintFlag(bool b) { m_noSubpicInfoConstraintFlag = b; } +#else bool getOneSubpicPerPicConstraintFlag() const { return m_oneSubpicPerPicConstraintFlag; } void setOneSubpicPerPicConstraintFlag(bool b) { m_oneSubpicPerPicConstraintFlag = b; } +#endif + #if !JVET_S0138_GCI_PTL bool getFrameOnlyConstraintFlag() const { return m_frameOnlyConstraintFlag; } void setFrameOnlyConstraintFlag(bool b) { m_frameOnlyConstraintFlag = b; } diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index f8618f4862437a4839c37f83e7fd79f7802027c5..eb9d651887be050371a7541871838d9bf1d634bd 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -1127,7 +1127,14 @@ void EncLib::xInitSPS( SPS& sps ) cinfo->setOneTilePerPicConstraintFlag(m_oneTilePerPicConstraintFlag); cinfo->setPicHeaderInSliceHeaderConstraintFlag(m_picHeaderInSliceHeaderConstraintFlag); cinfo->setOneSlicePerPicConstraintFlag(m_oneSlicePerPicConstraintFlag); +#if JVET_S0113_S0195_GCI + cinfo->setNoIdrRplConstraintFlag(m_noIdrRplConstraintFlag); + cinfo->setNoRectSliceConstraintFlag(m_noRectSliceConstraintFlag); + cinfo->setOneSlicePerSubpicConstraintFlag(m_oneSlicePerSubpicConstraintFlag); + cinfo->setNoSubpicInfoConstraintFlag(m_noSubpicInfoConstraintFlag); +#else cinfo->setOneSubpicPerPicConstraintFlag(m_oneSubpicPerPicConstraintFlag); +#endif #if !JVET_S0138_GCI_PTL cinfo->setFrameOnlyConstraintFlag (m_frameOnlyConstraintFlag); #endif diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index c81549ef8dc4da118f7bf76923b7143662e53281..9a15dec97c41a0c85c450b514cc7bf9052bb8a40 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -2691,10 +2691,19 @@ void HLSWriter::codeConstraintInfo ( const ConstraintInfo* cinfo ) #endif WRITE_FLAG(cinfo->getAllLayersIndependentConstraintFlag(), "all_layers_independent_constraint_flag"); WRITE_FLAG(cinfo->getNoResChangeInClvsConstraintFlag(), "no_res_change_in_clvs_constraint_flag"); +#if JVET_S0113_S0195_GCI + WRITE_FLAG(cinfo->getNoIdrRplConstraintFlag(), "gci_no_idr_rpl_constraint_flag"); +#endif WRITE_FLAG(cinfo->getOneTilePerPicConstraintFlag(), "one_tile_per_pic_constraint_flag"); WRITE_FLAG(cinfo->getPicHeaderInSliceHeaderConstraintFlag(), "pic_header_in_slice_header_constraint_flag"); WRITE_FLAG(cinfo->getOneSlicePerPicConstraintFlag(), "one_slice_per_pic_constraint_flag"); +#if JVET_S0113_S0195_GCI + WRITE_FLAG(cinfo->getNoRectSliceConstraintFlag(), "gci_no_rectangular_slice_constraint_flag"); + WRITE_FLAG(cinfo->getOneSlicePerSubpicConstraintFlag(), "gci_one_slice_per_subpic_constraint_flag"); + WRITE_FLAG(cinfo->getNoSubpicInfoConstraintFlag(), "gci_no_subpic_info_constraint_flag"); +#else WRITE_FLAG(cinfo->getOneSubpicPerPicConstraintFlag(), "one_subpic_per_pic_constraint_flag"); +#endif WRITE_FLAG(cinfo->getNoQtbttDualTreeIntraConstraintFlag() ? 1 : 0, "no_qtbtt_dual_tree_intra_constraint_flag"); #if JVET_S0066_GCI