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() )