diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h
index 2817a9dd2ce463da50c87f14c0a2ecdfd229af55..2f43e0c0c74696bd4ff9702bbe67cf0e2ecbaffe 100644
--- a/source/Lib/CommonLib/Slice.h
+++ b/source/Lib/CommonLib/Slice.h
@@ -1434,6 +1434,8 @@ private:
   bool              m_bTemporalIdNestingFlag; // temporal_id_nesting_flag
 
   bool              m_scalingListEnabledFlag;
+  bool              m_depQuantEnabledFlag;            //!< dependent quantization enabled flag
+  bool              m_signDataHidingEnabledFlag;      //!< sign data hiding enabled flag
 #if JVET_Q0246_VIRTUAL_BOUNDARY_ENABLE_FLAG 
   bool              m_virtualBoundariesEnabledFlag;   //!< Enable virtual boundaries tool
   bool              m_virtualBoundariesPresentFlag;   //!< disable loop filtering across virtual boundaries
@@ -1786,6 +1788,10 @@ void                    setCCALFEnabledFlag( bool b )
 
   bool                    getScalingListFlag() const                                                      { return m_scalingListEnabledFlag;                                     }
   void                    setScalingListFlag( bool b )                                                    { m_scalingListEnabledFlag  = b;                                       }
+  void                    setDepQuantEnabledFlag(bool b)                                                  { m_depQuantEnabledFlag = b; }
+  bool                    getDepQuantEnabledFlag() const                                                  { return m_depQuantEnabledFlag; }
+  void                    setSignDataHidingEnabledFlag(bool b)                                            { m_signDataHidingEnabledFlag = b; }
+  bool                    getSignDataHidingEnabledFlag() const                                            { return m_signDataHidingEnabledFlag; }
 #if JVET_Q0246_VIRTUAL_BOUNDARY_ENABLE_FLAG  
   void                    setVirtualBoundariesEnabledFlag( bool b )                                       { m_virtualBoundariesEnabledFlag = b;                                  }
   bool                    getVirtualBoundariesEnabledFlag() const                                         { return m_virtualBoundariesEnabledFlag;                               }
diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index 4db59237ebe447099b6a557f976fba82e95b6a82..581710d17e383f8a9ea264b784a9ee51243d5ed3 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -2368,6 +2368,12 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
   READ_FLAG( uiCode, "sps_scaling_list_enabled_flag" );                 pcSPS->setScalingListFlag ( uiCode );
 #endif
 
+  READ_FLAG(uiCode, "sps_dep_quant_enabled_flag"); pcSPS->setDepQuantEnabledFlag(uiCode);
+  if (!pcSPS->getDepQuantEnabledFlag())
+  {
+    READ_FLAG(uiCode, "sps_sign_data_hiding_enabled_flag"); pcSPS->setSignDataHidingEnabledFlag(uiCode);
+  }
+
 #if JVET_Q0246_VIRTUAL_BOUNDARY_ENABLE_FLAG 
   READ_FLAG( uiCode, "sps_virtual_boundaries_enabled_flag" ); pcSPS->setVirtualBoundariesEnabledFlag( uiCode != 0 );
   if( pcSPS->getVirtualBoundariesEnabledFlag() )
diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp
index 1c08f782fa99b9eb416a4b18e54492dcf3e8ad43..a48d8ef7e07d9a574236c0ec7774a66ff927170a 100644
--- a/source/Lib/EncoderLib/EncLib.cpp
+++ b/source/Lib/EncoderLib/EncLib.cpp
@@ -1584,6 +1584,12 @@ void EncLib::xInitSPS( SPS& sps, VPS& vps )
   }
 #endif
 
+  sps.setDepQuantEnabledFlag( m_DepQuantEnabledFlag );
+  if (!sps.getDepQuantEnabledFlag())
+  {
+    sps.setSignDataHidingEnabledFlag( m_SignDataHidingEnabledFlag );
+  }
+
 #if JVET_Q0246_VIRTUAL_BOUNDARY_ENABLE_FLAG 
   sps.setVirtualBoundariesEnabledFlag( m_virtualBoundariesEnabledFlag );
   if( sps.getVirtualBoundariesEnabledFlag() )
diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp
index 296bfedc79c0a70c417d5f23859738cefdd3b6aa..a77da8c7f44ab03df27503272e79e2195dad7891 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -1553,6 +1553,12 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
   // KJS: remove scaling lists?
   WRITE_FLAG( pcSPS->getScalingListFlag() ? 1 : 0,                                   "sps_scaling_list_enabled_flag" );
 
+  WRITE_FLAG(pcSPS->getDepQuantEnabledFlag(), "sps_dep_quant_enabled_flag");
+  if (!pcSPS->getDepQuantEnabledFlag())
+  {
+    WRITE_FLAG(pcSPS->getSignDataHidingEnabledFlag(), "sps_sign_data_hiding_enabled_flag");
+  }
+
 #if JVET_Q0246_VIRTUAL_BOUNDARY_ENABLE_FLAG 
   WRITE_FLAG( pcSPS->getVirtualBoundariesEnabledFlag(), "sps_virtual_boundaries_enabled_flag" );
   if( pcSPS->getVirtualBoundariesEnabledFlag() )