From 0c5127b5c7a575554ccafda46ddddf1294f98fc6 Mon Sep 17 00:00:00 2001 From: Tangi Poirier <tangi.poirier@interdigital.com> Date: Thu, 6 Aug 2020 16:20:02 +0200 Subject: [PATCH] JVET-S0058: additional general constraint flags --- doc/software-manual.tex | 12 ++++++++++++ source/App/EncoderApp/EncApp.cpp | 16 ++++++++++++++++ source/App/EncoderApp/EncAppCfg.cpp | 6 ++++++ source/App/EncoderApp/EncAppCfg.h | 6 ++++++ source/Lib/CommonLib/Slice.cpp | 6 ++++++ source/Lib/CommonLib/Slice.h | 20 ++++++++++++++++++++ source/Lib/CommonLib/TypeDef.h | 2 ++ source/Lib/DecoderLib/DecLib.cpp | 11 ++++++++++- source/Lib/DecoderLib/VLCReader.cpp | 6 ++++++ source/Lib/EncoderLib/EncCfg.h | 14 ++++++++++++++ source/Lib/EncoderLib/EncLib.cpp | 6 ++++++ source/Lib/EncoderLib/VLCWriter.cpp | 7 ++++++- 12 files changed, 110 insertions(+), 2 deletions(-) diff --git a/doc/software-manual.tex b/doc/software-manual.tex index 201e81b07..37126222c 100644 --- a/doc/software-manual.tex +++ b/doc/software-manual.tex @@ -1156,6 +1156,12 @@ Specifies the value of gci_three_minus_max_log2_ctu_size_constraint_idc Specifies the value of gci_no_partition_constraints_override_constraint_flag \\ +\Option{NoMttConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_mtt_constraint_flag +\\ + \Option{NoQtbttDualTreeIntraConstraintFlag} & %\ShortOption{\None} & \Default{false} & @@ -1210,6 +1216,12 @@ Specifies the value of gci_no_ref_pic_resampling_constraint_flag Specifies the value of gci_no_res_change_in_clvs_constraint_flag \\ +\Option{NoWeightedPredictionConstraintFlag} & +%\ShortOption{\None} & +\Default{false} & +Specifies the value of gci_no_weighted_prediction_constraint_flag +\\ + \Option{NoRefWraparoundConstraintFlag} & %\ShortOption{\None} & \Default{false} & diff --git a/source/App/EncoderApp/EncApp.cpp b/source/App/EncoderApp/EncApp.cpp index cf0eb83ba..0586c6cbd 100644 --- a/source/App/EncoderApp/EncApp.cpp +++ b/source/App/EncoderApp/EncApp.cpp @@ -328,6 +328,11 @@ void EncApp::xInitLibCfg() m_cEncLib.setMaxChromaFormatConstraintIdc(m_maxChromaFormatConstraintIdc); CHECK(m_chromaFormatIDC > m_maxChromaFormatConstraintIdc, "Chroma format Idc shall be less than or equal to m_maxBitDepthConstraintIdc"); +#if JVET_S0058_GCI + m_cEncLib.setNoMttConstraintFlag(m_noMttConstraintFlag); + CHECK(m_noMttConstraintFlag && (m_uiMaxMTTHierarchyDepth || m_uiMaxMTTHierarchyDepthI || m_uiMaxMTTHierarchyDepthIChroma), "Mtt shall be deactivated when m_bNoMttConstraintFlag is equal to 1"); +#endif + m_cEncLib.setNoQtbttDualTreeIntraConstraintFlag(m_bNoQtbttDualTreeIntraConstraintFlag); CHECK(m_bNoQtbttDualTreeIntraConstraintFlag && m_dualTree, "Dual tree shall be deactivated when m_bNoQtbttDualTreeIntraConstraintFlag is equal to 1"); @@ -348,6 +353,11 @@ void EncApp::xInitLibCfg() m_cEncLib.setNoCCAlfConstraintFlag(m_noCCAlfConstraintFlag); CHECK(m_noCCAlfConstraintFlag && m_ccalf, "CCALF shall be deactivated when m_noCCAlfConstraintFlag is equal to 1"); +#if JVET_S0058_GCI + m_cEncLib.setNoWeightedPredictionConstraintFlag(m_noWeightedPredictionConstraintFlag); + CHECK(m_noWeightedPredictionConstraintFlag && (m_useWeightedPred || m_useWeightedBiPred), "Weighted Prediction shall be deactivated when m_bNoWeightedPredictionConstraintFlag is equal to 1"); +#endif + m_cEncLib.setNoRefWraparoundConstraintFlag(m_bNoRefWraparoundConstraintFlag); CHECK(m_bNoRefWraparoundConstraintFlag && m_wrapAround, "Wrap around shall be deactivated when m_bNoRefWraparoundConstraintFlag is equal to 1"); @@ -482,11 +492,17 @@ void EncApp::xInitLibCfg() m_cEncLib.setIntraOnlyConstraintFlag(false); m_cEncLib.setMaxBitDepthConstraintIdc(16); m_cEncLib.setMaxChromaFormatConstraintIdc(3); +#if JVET_S0058_GCI + m_cEncLib.setNoMttConstraintFlag(false); +#endif m_cEncLib.setNoQtbttDualTreeIntraConstraintFlag(false); m_cEncLib.setNoPartitionConstraintsOverrideConstraintFlag(false); m_cEncLib.setNoSaoConstraintFlag(false); m_cEncLib.setNoAlfConstraintFlag(false); m_cEncLib.setNoCCAlfConstraintFlag(false); +#if JVET_S0058_GCI + m_cEncLib.setNoWeightedPredictionConstraintFlag(false); +#endif m_cEncLib.setNoRefWraparoundConstraintFlag(false); m_cEncLib.setNoTemporalMvpConstraintFlag(false); m_cEncLib.setNoSbtmvpConstraintFlag(false); diff --git a/source/App/EncoderApp/EncAppCfg.cpp b/source/App/EncoderApp/EncAppCfg.cpp index 409d47156..a20f4d452 100644 --- a/source/App/EncoderApp/EncAppCfg.cpp +++ b/source/App/EncoderApp/EncAppCfg.cpp @@ -847,6 +847,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ("MaxLog2CtuSizeConstraintIdc", m_maxLog2CtuSizeConstraintIdc, 8, "Indicate that Log2CtuSize shall be in the range of 0 to m_maxLog2CtuSizeConstraintIdc") #endif ("NoPartitionConstraintsOverrideConstraintFlag", m_noPartitionConstraintsOverrideConstraintFlag, false, "Indicate that Partition Override is deactivated") + #if JVET_S0058_GCI + ("MttConstraintFlag", m_noMttConstraintFlag, false, "Indicate that Mtt is deactivated") +#endif ("NoQtbttDualTreeIntraConstraintFlag", m_bNoQtbttDualTreeIntraConstraintFlag, false, "Indicate that Qtbtt DualTree Intra is deactivated") ("NoPaletteConstraintFlag", m_noPaletteConstraintFlag, false, "Indicate that PLT is deactivated") ("NoIbcConstraintFlag", m_noIbcConstraintFlag, false, "Indicate that IBC is deactivated") @@ -858,6 +861,9 @@ bool EncAppCfg::parseCfg( int argc, char* argv[] ) ("NoRprConstraintFlag", m_noRprConstraintFlag, false, "Indicate that reference picture resampling is deactivated") #endif ("NoResChangeInClvsConstraintFlag", m_noResChangeInClvsConstraintFlag, false, "Indicate that the picture spatial resolution does not change within any CLVS referring to the SPS") + #if JVET_S0058_GCI + ("WeightedPredictionConstraintFlag", m_noWeightedPredictionConstraintFlag, false, "Indicate that Weighted Prediction is deactivated") +#endif ("NoRefWraparoundConstraintFlag", m_bNoRefWraparoundConstraintFlag, false, "Indicate that Reference Wraparound is deactivated") ("NoTemporalMvpConstraintFlag", m_bNoTemporalMvpConstraintFlag, false, "Indicate that temporal MVP is deactivated") ("NoSbtmvpConstraintFlag", m_bNoSbtmvpConstraintFlag, false, "Indicate that SbTMVP is deactivated") diff --git a/source/App/EncoderApp/EncAppCfg.h b/source/App/EncoderApp/EncAppCfg.h index 02b0a7f72..75b8aa99f 100644 --- a/source/App/EncoderApp/EncAppCfg.h +++ b/source/App/EncoderApp/EncAppCfg.h @@ -154,6 +154,9 @@ protected: #if JVET_S0050_GCI bool m_noExplicitScaleListConstraintFlag; bool m_noVirtualBoundaryConstraintFlag; +#endif +#if JVET_S0058_GCI + bool m_noMttConstraintFlag; #endif bool m_bNoQtbttDualTreeIntraConstraintFlag; #if JVET_S0066_GCI @@ -163,6 +166,9 @@ protected: bool m_bNoSaoConstraintFlag; bool m_bNoAlfConstraintFlag; bool m_noCCAlfConstraintFlag; +#if JVET_S0058_GCI + bool m_noWeightedPredictionConstraintFlag; +#endif bool m_bNoRefWraparoundConstraintFlag; bool m_bNoTemporalMvpConstraintFlag; bool m_bNoSbtmvpConstraintFlag; diff --git a/source/Lib/CommonLib/Slice.cpp b/source/Lib/CommonLib/Slice.cpp index b4e2a32a4..744889ac7 100644 --- a/source/Lib/CommonLib/Slice.cpp +++ b/source/Lib/CommonLib/Slice.cpp @@ -4605,12 +4605,18 @@ bool operator == (const ConstraintInfo& op1, const ConstraintInfo& o #if JVET_Q0114_ASPECT5_GCI_FLAG if (op1.m_noRprConstraintFlag != op2.m_noRprConstraintFlag ) return false; if (op1.m_noResChangeInClvsConstraintFlag != op2.m_noResChangeInClvsConstraintFlag ) return false; +#endif +#if JVET_S0058_GCI + if (op1.m_noMttConstraintFlag != op2.m_noMttConstraintFlag ) return false; #endif if( op1.m_noQtbttDualTreeIntraConstraintFlag != op2.m_noQtbttDualTreeIntraConstraintFlag ) return false; if( op1.m_noPartitionConstraintsOverrideConstraintFlag != op2.m_noPartitionConstraintsOverrideConstraintFlag ) return false; if( op1.m_noSaoConstraintFlag != op2.m_noSaoConstraintFlag ) return false; if( op1.m_noAlfConstraintFlag != op2.m_noAlfConstraintFlag ) return false; if( op1.m_noCCAlfConstraintFlag != op2.m_noCCAlfConstraintFlag ) return false; +#if JVET_S0058_GCI + if (op1.m_noWeightedPredictionConstraintFlag != op2.m_noWeightedPredictionConstraintFlag ) return false; +#endif if( op1.m_noRefWraparoundConstraintFlag != op2.m_noRefWraparoundConstraintFlag ) return false; if( op1.m_noTemporalMvpConstraintFlag != op2.m_noTemporalMvpConstraintFlag ) return false; if( op1.m_noSbtmvpConstraintFlag != op2.m_noSbtmvpConstraintFlag ) return false; diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h index fbcf0c9cc..4d3b18fe1 100644 --- a/source/Lib/CommonLib/Slice.h +++ b/source/Lib/CommonLib/Slice.h @@ -283,6 +283,9 @@ class ConstraintInfo #if JVET_S0050_GCI bool m_noExplicitScaleListConstraintFlag; bool m_noVirtualBoundaryConstraintFlag; +#endif +#if JVET_S0058_GCI + bool m_noMttConstraintFlag; #endif bool m_noQtbttDualTreeIntraConstraintFlag; #if JVET_S0066_GCI @@ -292,6 +295,9 @@ class ConstraintInfo bool m_noSaoConstraintFlag; bool m_noAlfConstraintFlag; bool m_noCCAlfConstraintFlag; +#if JVET_S0058_GCI + bool m_noWeightedPredictionConstraintFlag; +#endif bool m_noRefWraparoundConstraintFlag; bool m_noTemporalMvpConstraintFlag; bool m_noSbtmvpConstraintFlag; @@ -383,6 +389,9 @@ public: #if JVET_S0050_GCI , m_noExplicitScaleListConstraintFlag(false) , m_noVirtualBoundaryConstraintFlag(false) +#endif +#if JVET_S0058_GCI + , m_noMttConstraintFlag(false) #endif , m_noQtbttDualTreeIntraConstraintFlag(false) #if JVET_S0066_GCI @@ -392,6 +401,9 @@ public: , m_noSaoConstraintFlag (false) , m_noAlfConstraintFlag (false) , m_noCCAlfConstraintFlag (false) +#if JVET_S0058_GCI + , m_noWeightedPredictionConstraintFlag(false) +#endif , m_noRefWraparoundConstraintFlag(false) , m_noTemporalMvpConstraintFlag(false) , m_noSbtmvpConstraintFlag (false) @@ -525,6 +537,10 @@ public: void setNoExplicitScaleListConstraintFlag(bool b) { m_noExplicitScaleListConstraintFlag = b; } bool getNoVirtualBoundaryConstraintFlag() const { return m_noVirtualBoundaryConstraintFlag; } void setNoVirtualBoundaryConstraintFlag(bool b) { m_noVirtualBoundaryConstraintFlag = b; } +#endif +#if JVET_S0058_GCI + bool getNoMttConstraintFlag() const { return m_noMttConstraintFlag; } + void setNoMttConstraintFlag(bool bVal) { m_noMttConstraintFlag = bVal; } #endif bool getNoQtbttDualTreeIntraConstraintFlag() const { return m_noQtbttDualTreeIntraConstraintFlag; } void setNoQtbttDualTreeIntraConstraintFlag(bool bVal) { m_noQtbttDualTreeIntraConstraintFlag = bVal; } @@ -542,6 +558,10 @@ public: void setNoCCAlfConstraintFlag(bool val) { m_noCCAlfConstraintFlag = val; } bool getNoJointCbCrConstraintFlag() const { return m_noJointCbCrConstraintFlag; } void setNoJointCbCrConstraintFlag(bool bVal) { m_noJointCbCrConstraintFlag = bVal; } +#if JVET_S0058_GCI + bool getNoWeightedPredictionConstraintFlag() const { return m_noWeightedPredictionConstraintFlag; } + void setNoWeightedPredictionConstraintFlag(bool bVal) { m_noWeightedPredictionConstraintFlag = bVal; } +#endif bool getNoRefWraparoundConstraintFlag() const { return m_noRefWraparoundConstraintFlag; } void setNoRefWraparoundConstraintFlag(bool bVal) { m_noRefWraparoundConstraintFlag = bVal; } bool getNoTemporalMvpConstraintFlag() const { return m_noTemporalMvpConstraintFlag; } diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index e02b0a0fb..4b9af3159 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -52,6 +52,8 @@ // clang-format off //########### place macros to be removed in next cycle below this line ############### +#define JVET_S0058_GCI 1 // no_mtt_constraint_flag and no_weightedpred_constraint_flag + #define JVET_S0203 1 // JVET-S0203 (aspects 1 & 2): change the signalling of sublayer_level_idc[ i ] and ptl_sublayer_level_present_flag[ i ] to be in descending order #define JVET_S0066_GCI 1 // JVET-S0066: Signal new GCI flags gci_three_minus_max_log2_ctu_size_constraint_idc and gci_no_luma_transform_size_64_constraint_flag (no_explicit_scaling_list_constraint_flag already included as part of JVET-S0050) diff --git a/source/Lib/DecoderLib/DecLib.cpp b/source/Lib/DecoderLib/DecLib.cpp index 94018b804..b187c9bac 100644 --- a/source/Lib/DecoderLib/DecLib.cpp +++ b/source/Lib/DecoderLib/DecLib.cpp @@ -1900,7 +1900,16 @@ void DecLib::xCheckParameterSetConstraints(const int layerId) } #endif #endif - +#if JVET_S0058_GCI + if (sps->getProfileTierLevel()->getConstraintInfo()->getNoMttConstraintFlag()) + { + CHECK((sps->getMaxMTTHierarchyDepth() || sps->getMaxMTTHierarchyDepthI() || sps->getMaxMTTHierarchyDepthIChroma()), "When gci_no_mtt_constraint_flag is equal to 1, the values of sps_max_mtt_hierarchy_depth_intra_slice_luma, sps_max_mtt_hierarchy_depth_inter_slice and sps_max_mtt_hierarchy_depth_intra_slice_chroma shall be equal to 0"); + } + if (sps->getProfileTierLevel()->getConstraintInfo()->getNoWeightedPredictionConstraintFlag()) + { + CHECK((sps->getUseWP() || sps->getUseWPBiPred()), "When gci_no_weighted_prediction_constraint_flag is equal to 1, the values of sps_weighted_pred_flag and sps_weighted_bipred_flag shall be equal to 0"); + } +#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 8389ceb97..ea4fbf653 100644 --- a/source/Lib/DecoderLib/VLCReader.cpp +++ b/source/Lib/DecoderLib/VLCReader.cpp @@ -4702,6 +4702,9 @@ void HLSyntaxReader::parseConstraintInfo(ConstraintInfo *cinfo) { CHECK(symbol == 0, "When one_slice_per_pic_constraint_flag is equal to 1, the value of one_subpic_per_pic_constraint_flag shall be equal to 1"); } +#endif +#if JVET_S0058_GCI + READ_FLAG(symbol, "gci_no_Mtt_constraint_flag" ); cinfo->setNoMttConstraintFlag(symbol > 0 ? true : false); #endif READ_FLAG(symbol, "no_qtbtt_dual_tree_intra_constraint_flag" ); cinfo->setNoQtbttDualTreeIntraConstraintFlag(symbol > 0 ? true : false); #if !JVET_S0050_GCI @@ -4733,6 +4736,9 @@ void HLSyntaxReader::parseConstraintInfo(ConstraintInfo *cinfo) READ_FLAG(symbol, "no_mrl_constraint_flag"); cinfo->setNoMrlConstraintFlag(symbol > 0 ? true : false); READ_FLAG(symbol, "no_isp_constraint_flag"); cinfo->setNoIspConstraintFlag(symbol > 0 ? true : false); READ_FLAG(symbol, "no_mip_constraint_flag"); cinfo->setNoMipConstraintFlag(symbol > 0 ? true : false); +#if JVET_S0058_GCI + READ_FLAG(symbol, "gci_no_weighted_prediction_constraint_flag"); cinfo->setNoWeightedPredictionConstraintFlag(symbol > 0 ? true : false); +#endif READ_FLAG(symbol, "no_ref_wraparound_constraint_flag"); cinfo->setNoRefWraparoundConstraintFlag(symbol > 0 ? true : false); #if !JVET_S0050_GCI if (cinfo->getIntraOnlyConstraintFlag() == 1) diff --git a/source/Lib/EncoderLib/EncCfg.h b/source/Lib/EncoderLib/EncCfg.h index d0ea83db6..e206643d2 100644 --- a/source/Lib/EncoderLib/EncCfg.h +++ b/source/Lib/EncoderLib/EncCfg.h @@ -199,6 +199,9 @@ protected: #if JVET_S0050_GCI bool m_noExplicitScaleListConstraintFlag; bool m_noVirtualBoundaryConstraintFlag; +#endif +#if JVET_S0058_GCI + bool m_bNoMttConstraintFlag; #endif bool m_bNoQtbttDualTreeIntraConstraintFlag; #if JVET_S0066_GCI @@ -208,6 +211,9 @@ protected: bool m_bNoSaoConstraintFlag; bool m_bNoAlfConstraintFlag; bool m_noCCAlfConstraintFlag; +#if JVET_S0058_GCI + bool m_bNoWeightedPredictionConstraintFlag; +#endif bool m_bNoRefWraparoundConstraintFlag; bool m_bNoTemporalMvpConstraintFlag; bool m_bNoSbtmvpConstraintFlag; @@ -846,6 +852,10 @@ public: void setNoExplicitScaleListConstraintFlag(bool bVal) { m_noExplicitScaleListConstraintFlag = bVal; } bool getNoVirtualBoundaryConstraintFlag() const { return m_noVirtualBoundaryConstraintFlag; } void setNoVirtualBoundaryConstraintFlag(bool bVal) { m_noVirtualBoundaryConstraintFlag = bVal; } +#endif +#if JVET_S0058_GCI + bool getNoMttConstraintFlag() const { return m_bNoMttConstraintFlag; } + void setNoMttConstraintFlag(bool bVal) { m_bNoMttConstraintFlag = bVal; } #endif bool getNoQtbttDualTreeIntraConstraintFlag() const { return m_bNoQtbttDualTreeIntraConstraintFlag; } void setNoQtbttDualTreeIntraConstraintFlag(bool bVal) { m_bNoQtbttDualTreeIntraConstraintFlag = bVal; } @@ -861,6 +871,10 @@ public: void setNoAlfConstraintFlag(bool bVal) { m_bNoAlfConstraintFlag = bVal; } bool getNoCCAlfConstraintFlag() const { return m_noCCAlfConstraintFlag; } void setNoCCAlfConstraintFlag(bool bVal) { m_noCCAlfConstraintFlag = bVal; } +#if JVET_S0058_GCI + bool getWeightedPredictionConstraintFlag() const { return m_bNoWeightedPredictionConstraintFlag; } + void setNoWeightedPredictionConstraintFlag(bool bVal) { m_bNoWeightedPredictionConstraintFlag = bVal; } +#endif bool getNoRefWraparoundConstraintFlag() const { return m_bNoRefWraparoundConstraintFlag; } void setNoRefWraparoundConstraintFlag(bool bVal) { m_bNoRefWraparoundConstraintFlag = bVal; } bool getNoTemporalMvpConstraintFlag() const { return m_bNoTemporalMvpConstraintFlag; } diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp index ae770c25d..08e579d53 100644 --- a/source/Lib/EncoderLib/EncLib.cpp +++ b/source/Lib/EncoderLib/EncLib.cpp @@ -1162,12 +1162,18 @@ void EncLib::xInitSPS( SPS& sps ) #if JVET_S0050_GCI cinfo->setNoExplicitScaleListConstraintFlag(m_noExplicitScaleListConstraintFlag); cinfo->setNoVirtualBoundaryConstraintFlag(m_noVirtualBoundaryConstraintFlag); +#endif +#if JVET_S0058_GCI + cinfo->setNoMttConstraintFlag(m_bNoMttConstraintFlag); #endif cinfo->setNoQtbttDualTreeIntraConstraintFlag(m_bNoQtbttDualTreeIntraConstraintFlag); cinfo->setNoPartitionConstraintsOverrideConstraintFlag(m_noPartitionConstraintsOverrideConstraintFlag); cinfo->setNoSaoConstraintFlag(m_bNoSaoConstraintFlag); cinfo->setNoAlfConstraintFlag(m_bNoAlfConstraintFlag); cinfo->setNoCCAlfConstraintFlag(m_noCCAlfConstraintFlag); +#if JVET_S0058_GCI + cinfo->setNoWeightedPredictionConstraintFlag(m_bNoWeightedPredictionConstraintFlag); +#endif cinfo->setNoRefWraparoundConstraintFlag(m_bNoRefWraparoundConstraintFlag); cinfo->setNoTemporalMvpConstraintFlag(m_bNoTemporalMvpConstraintFlag); cinfo->setNoSbtmvpConstraintFlag(m_bNoSbtmvpConstraintFlag); diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp index edda6d5bb..704d9ff90 100644 --- a/source/Lib/EncoderLib/VLCWriter.cpp +++ b/source/Lib/EncoderLib/VLCWriter.cpp @@ -2728,7 +2728,9 @@ void HLSWriter::codeConstraintInfo ( const ConstraintInfo* cinfo ) #else WRITE_FLAG(cinfo->getOneSubpicPerPicConstraintFlag(), "one_subpic_per_pic_constraint_flag"); #endif - +#if JVET_S0058_GCI + WRITE_FLAG(cinfo->getNoMttConstraintFlag() ? 1 : 0, "gci_no_mtt_constraint_flag"); +#endif WRITE_FLAG(cinfo->getNoQtbttDualTreeIntraConstraintFlag() ? 1 : 0, "no_qtbtt_dual_tree_intra_constraint_flag"); #if JVET_S0066_GCI WRITE_CODE(3-(cinfo->getMaxLog2CtuSizeConstraintIdc()-5), 2, "gci_three_minus_max_log2_ctu_size_constraint_idc" ); @@ -2741,6 +2743,9 @@ void HLSWriter::codeConstraintInfo ( const ConstraintInfo* cinfo ) WRITE_FLAG(cinfo->getNoMrlConstraintFlag() ? 1 : 0, "no_mrl_constraint_flag"); WRITE_FLAG(cinfo->getNoIspConstraintFlag() ? 1 : 0, "no_isp_constraint_flag"); WRITE_FLAG(cinfo->getNoMipConstraintFlag() ? 1 : 0, "no_mip_constraint_flag"); +#if JVET_S0058_GCI + WRITE_FLAG(cinfo->getNoWeightedPredictionConstraintFlag() ? 1 : 0, "gci_no_weighted_prediction_constraint_flag"); +#endif WRITE_FLAG(cinfo->getNoRefWraparoundConstraintFlag() ? 1 : 0, "no_ref_wraparound_constraint_flag"); WRITE_FLAG(cinfo->getNoTemporalMvpConstraintFlag() ? 1 : 0, "no_temporal_mvp_constraint_flag"); WRITE_FLAG(cinfo->getNoSbtmvpConstraintFlag() ? 1 : 0, "no_sbtmvp_constraint_flag"); -- GitLab