diff --git a/source/Lib/CommonLib/Slice.h b/source/Lib/CommonLib/Slice.h
index 2f43e0c0c74696bd4ff9702bbe67cf0e2ecbaffe..13d88d7961d534e421534b6509cffd85e46acaa9 100644
--- a/source/Lib/CommonLib/Slice.h
+++ b/source/Lib/CommonLib/Slice.h
@@ -1434,8 +1434,10 @@ private:
   bool              m_bTemporalIdNestingFlag; // temporal_id_nesting_flag
 
   bool              m_scalingListEnabledFlag;
+#if DQ_SDH_SIGNALLING
   bool              m_depQuantEnabledFlag;            //!< dependent quantization enabled flag
   bool              m_signDataHidingEnabledFlag;      //!< sign data hiding enabled flag
+#endif
 #if JVET_Q0246_VIRTUAL_BOUNDARY_ENABLE_FLAG 
   bool              m_virtualBoundariesEnabledFlag;   //!< Enable virtual boundaries tool
   bool              m_virtualBoundariesPresentFlag;   //!< disable loop filtering across virtual boundaries
@@ -1788,10 +1790,12 @@ void                    setCCALFEnabledFlag( bool b )
 
   bool                    getScalingListFlag() const                                                      { return m_scalingListEnabledFlag;                                     }
   void                    setScalingListFlag( bool b )                                                    { m_scalingListEnabledFlag  = b;                                       }
+#if DQ_SDH_SIGNALLING
   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; }
+#endif
 #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/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h
index 9bb5a7431770e68b2bada8721b2afcf5ceb2ebec..3897957d5c3f58b24a273c202d4b82512a7dea0b 100644
--- a/source/Lib/CommonLib/TypeDef.h
+++ b/source/Lib/CommonLib/TypeDef.h
@@ -50,6 +50,8 @@
 #include <assert.h>
 #include <cassert>
 
+#define DQ_SDH_SIGNALLING                                 1 // Merge request !1506: add DQ and SDH signalling in SPS to align with spec.
+
 #define JVET_Q0237_STSA_TID_ZERO_DEPLAYER                 1 // JVET-Q0237: STSA picture with TemporalId equal to 0 in a dependent layer
 
 #define JVET_Q0798_SPS_NUMBER_MERGE_CANDIDATE             1 // JVET-Q0798: signal the number of merge candidates in SPS
diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index 581710d17e383f8a9ea264b784a9ee51243d5ed3..c5a320431658344035a7b56148e2273a3da3e639 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -2367,13 +2367,13 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
 #else
   READ_FLAG( uiCode, "sps_scaling_list_enabled_flag" );                 pcSPS->setScalingListFlag ( uiCode );
 #endif
-
+#if DQ_SDH_SIGNALLING
   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);
   }
-
+#endif
 #if JVET_Q0246_VIRTUAL_BOUNDARY_ENABLE_FLAG 
   READ_FLAG( uiCode, "sps_virtual_boundaries_enabled_flag" ); pcSPS->setVirtualBoundariesEnabledFlag( uiCode != 0 );
   if( pcSPS->getVirtualBoundariesEnabledFlag() )
@@ -3959,22 +3959,37 @@ void HLSyntaxReader::parsePictureHeader( PicHeader* picHeader, ParameterSetManag
 #endif
 
   // dependent quantization
-#if !JVET_Q0482_REMOVE_CONSTANT_PARAMS
-  if (!pps->getPPSDepQuantEnabledIdc())
+#if DQ_SDH_SIGNALLING
+  if (sps->getDepQuantEnabledFlag())
   {
+#endif
+#if !JVET_Q0482_REMOVE_CONSTANT_PARAMS
+    if (!pps->getPPSDepQuantEnabledIdc())
+    {
+      READ_FLAG(uiCode, "ph_dep_quant_enabled_flag");
+    }
+    else
+    {
+      uiCode = pps->getPPSDepQuantEnabledIdc() - 1;
+    }
+#else
     READ_FLAG(uiCode, "ph_dep_quant_enabled_flag");
+#endif
+    picHeader->setDepQuantEnabledFlag(uiCode != 0);
+#if DQ_SDH_SIGNALLING
   }
   else
   {
-    uiCode = pps->getPPSDepQuantEnabledIdc() - 1;
+    picHeader->setDepQuantEnabledFlag(false);
   }
-#else
-  READ_FLAG(uiCode, "ph_dep_quant_enabled_flag");
 #endif
-  picHeader->setDepQuantEnabledFlag( uiCode != 0 );
 
   // sign data hiding
+#if DQ_SDH_SIGNALLING
+  if (sps->getSignDataHidingEnabledFlag() && !picHeader->getDepQuantEnabledFlag())
+#else
   if( !picHeader->getDepQuantEnabledFlag() )
+#endif
   {
     READ_FLAG( uiCode, "pic_sign_data_hiding_enabled_flag" );
     picHeader->setSignDataHidingEnabledFlag( uiCode != 0 );
diff --git a/source/Lib/EncoderLib/EncLib.cpp b/source/Lib/EncoderLib/EncLib.cpp
index e8faa443d0741578f70942ba420b7995c2d32990..73e074cf3b29b576b5d5c487aab211877a53e369 100644
--- a/source/Lib/EncoderLib/EncLib.cpp
+++ b/source/Lib/EncoderLib/EncLib.cpp
@@ -1583,13 +1583,13 @@ void EncLib::xInitSPS( SPS& sps, VPS& vps )
     }
   }
 #endif
-
+#if DQ_SDH_SIGNALLING
   sps.setDepQuantEnabledFlag( m_DepQuantEnabledFlag );
   if (!sps.getDepQuantEnabledFlag())
   {
     sps.setSignDataHidingEnabledFlag( m_SignDataHidingEnabledFlag );
   }
-
+#endif
 #if JVET_Q0246_VIRTUAL_BOUNDARY_ENABLE_FLAG 
   sps.setVirtualBoundariesEnabledFlag( m_virtualBoundariesEnabledFlag );
   if( sps.getVirtualBoundariesEnabledFlag() )
@@ -2046,8 +2046,13 @@ void EncLib::xInitPicHeader(PicHeader &picHeader, const SPS &sps, const PPS &pps
   picHeader.setMaxTTSizes( sps.getMaxTTSizes() );
 
   // quantization
+#if DQ_SDH_SIGNALLING
   picHeader.setDepQuantEnabledFlag( sps.getDepQuantEnabledFlag() );
   picHeader.setSignDataHidingEnabledFlag( sps.getSignDataHidingEnabledFlag() );
+#else
+  picHeader.setDepQuantEnabledFlag( getDepQuantEnabledFlag() );
+  picHeader.setSignDataHidingEnabledFlag( getSignDataHidingEnabledFlag() );
+#endif
   
   bool bUseDQP = (getCuQpDeltaSubdiv() > 0)? true : false;
 
diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp
index a77da8c7f44ab03df27503272e79e2195dad7891..303455d5301bd26fbe5a25bbf62ef2baec9e6b72 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -1552,13 +1552,13 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
 
   // KJS: remove scaling lists?
   WRITE_FLAG( pcSPS->getScalingListFlag() ? 1 : 0,                                   "sps_scaling_list_enabled_flag" );
-
+#if DQ_SDH_SIGNALLING
   WRITE_FLAG(pcSPS->getDepQuantEnabledFlag(), "sps_dep_quant_enabled_flag");
   if (!pcSPS->getDepQuantEnabledFlag())
   {
     WRITE_FLAG(pcSPS->getSignDataHidingEnabledFlag(), "sps_sign_data_hiding_enabled_flag");
   }
-
+#endif
 #if JVET_Q0246_VIRTUAL_BOUNDARY_ENABLE_FLAG 
   WRITE_FLAG( pcSPS->getVirtualBoundariesEnabledFlag(), "sps_virtual_boundaries_enabled_flag" );
   if( pcSPS->getVirtualBoundariesEnabledFlag() )
@@ -2762,20 +2762,35 @@ void HLSWriter::codePictureHeader( PicHeader* picHeader )
 #endif
 
   // dependent quantization
-#if !JVET_Q0482_REMOVE_CONSTANT_PARAMS
-  if (!pps->getPPSDepQuantEnabledIdc())
+#if DQ_SDH_SIGNALLING
+  if (sps->getDepQuantEnabledFlag())
   {
+#endif
+#if !JVET_Q0482_REMOVE_CONSTANT_PARAMS
+    if (!pps->getPPSDepQuantEnabledIdc())
+    {
+      WRITE_FLAG(picHeader->getDepQuantEnabledFlag(), "ph_dep_quant_enabled_flag");
+    }
+    else
+    {
+      picHeader->setDepQuantEnabledFlag(pps->getPPSDepQuantEnabledIdc() - 1);
+    }
+#else
     WRITE_FLAG(picHeader->getDepQuantEnabledFlag(), "ph_dep_quant_enabled_flag");
+#endif
+#if DQ_SDH_SIGNALLING
   }
   else
   {
-    picHeader->setDepQuantEnabledFlag( pps->getPPSDepQuantEnabledIdc() - 1 );
+    picHeader->setDepQuantEnabledFlag(false);
   }
-#else
-  WRITE_FLAG(picHeader->getDepQuantEnabledFlag(), "ph_dep_quant_enabled_flag");
 #endif
   // sign data hiding
+#if DQ_SDH_SIGNALLING
+  if (sps->getSignDataHidingEnabledFlag() && !picHeader->getDepQuantEnabledFlag())
+#else
   if( !picHeader->getDepQuantEnabledFlag() )
+#endif
   {
     WRITE_FLAG( picHeader->getSignDataHidingEnabledFlag(), "pic_sign_data_hiding_enabled_flag" );
   }