diff --git a/doc/software-manual.tex b/doc/software-manual.tex
index 201e81b072d37cb86cdb6fffbc1840027295bbbb..37126222c1c8a383cbc04bd007b473860d604f8b 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 cf0eb83ba4f1265f7181e78133d637ea776830bf..0586c6cbd612407c52cf9bf40056eeab0a49befe 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 409d471561f0bff72bf74a70eb2f634b0ae84c43..a20f4d4522d2af9220a23cf2180245dc6f81ef49 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 02b0a7f72caa27126fdb8fd87f86218d7a97f333..75b8aa99f4319f9f47de7974f84598219abdb791 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 b4e2a32a4334b9f83f722824231debe2d2de0a8d..744889ac7205577700c6552b091b0b899ae0619a 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 fbcf0c9ccea4e0874dcc506efe1f3b7bc4fefdd0..4d3b18fe1d0f90a93ae012b207811ea01a3953b8 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 e02b0a0fb7364d83126fe80568dec2bc5bb9b4f4..4b9af31596c7401e1c35f7f24408ea2c5c7df472 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 51a4b9c7bb678614376fe26b4d677ebda3c6bda5..baca3225fa9de7c5ce73bffc6959c65d526d7a56 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 8389ceb97bbfd410d2e76ccbec478f09f1d4dc07..ea4fbf65365bf710391a9ea1912b9b54d6804712 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 d0ea83db6a16aabebe42a013fe35cd0c147fe511..e206643d209bbf9830163c779c65cd5c688f82aa 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 ae770c25d9cc33b2f2f3c1d225eea760f8071f1b..08e579d53ab75e2751ed6d976ad294f4a62258f5 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 edda6d5bb43f2dbdb9346a02b6bc03eed34074b5..704d9ff9074cdb54d97073f6bed48527563f7249 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");