From 75f45a18ce514cf07ade0c8bc1721a9cdea13536 Mon Sep 17 00:00:00 2001
From: Shih-Ta Hsiang <shih-ta.hsiang@mediatek.com>
Date: Mon, 2 Sep 2019 18:23:23 +0800
Subject: [PATCH] Fix VTM ticket #474 for signaling the PPS syntax element
 log2_transform_skip_max_size_minus2

---
 source/Lib/DecoderLib/VLCReader.cpp |  8 +++++++-
 source/Lib/EncoderLib/VLCWriter.cpp | 14 ++++++++------
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index 91c9ec163..6a18e8014 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -448,7 +448,13 @@ void HLSyntaxReader::parsePPS( PPS* pcPPS, ParameterSetManager *parameterSetMana
 
   READ_SVLC(iCode, "init_qp_minus26" );                            pcPPS->setPicInitQPMinus26(iCode);
   READ_FLAG( uiCode, "constrained_intra_pred_flag" );              pcPPS->setConstrainedIntraPred( uiCode ? true : false );
-#if !JVET_O1136_TS_BDPCM_SIGNALLING
+#if JVET_O1136_TS_BDPCM_SIGNALLING
+  if (parameterSetManager->getSPS(pcPPS->getSPSId())->getTransformSkipEnabledFlag())
+  {
+    READ_UVLC(uiCode, "log2_max_transform_skip_block_size_minus2");
+    pcPPS->getPpsRangeExtension().setLog2MaxTransformSkipBlockSize(uiCode + 2);
+  }
+#else
   READ_FLAG( uiCode, "transform_skip_enabled_flag" );
   pcPPS->setUseTransformSkip ( uiCode ? true : false );
 #endif
diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp
index 58338f9c5..7184526df 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -274,7 +274,12 @@ void HLSWriter::codePPS( const PPS* pcPPS )
 
   WRITE_SVLC( pcPPS->getPicInitQPMinus26(),                  "init_qp_minus26");
   WRITE_FLAG( pcPPS->getConstrainedIntraPred() ? 1 : 0,      "constrained_intra_pred_flag" );
-#if !JVET_O1136_TS_BDPCM_SIGNALLING
+#if JVET_O1136_TS_BDPCM_SIGNALLING
+  if (pcSPS->getTransformSkipEnabledFlag())
+  {
+    WRITE_UVLC(pcPPS->getPpsRangeExtension().getLog2MaxTransformSkipBlockSize() - 2, "log2_max_transform_skip_block_size_minus2");
+  }
+#else
   WRITE_FLAG( pcPPS->getUseTransformSkip() ? 1 : 0,  "transform_skip_enabled_flag" );
 #endif
   WRITE_FLAG( pcPPS->getUseDQP() ? 1 : 0, "cu_qp_delta_enabled_flag" );
@@ -442,11 +447,8 @@ void HLSWriter::codePPS( const PPS* pcPPS )
   bool pps_extension_present_flag=false;
   bool pps_extension_flags[NUM_PPS_EXTENSION_FLAGS]={false};
 
-#if JVET_O1136_TS_BDPCM_SIGNALLING
-  pps_extension_flags[PPS_EXT__REXT] = pcPPS->getPpsRangeExtension().settingsDifferFromDefaults(pcSPS->getTransformSkipEnabledFlag());
-#else
+#if !JVET_O1136_TS_BDPCM_SIGNALLING
   pps_extension_flags[PPS_EXT__REXT] = pcPPS->getPpsRangeExtension().settingsDifferFromDefaults(pcPPS->getUseTransformSkip());
-#endif
 
   // Other PPS extension flags checked here.
 
@@ -454,7 +456,7 @@ void HLSWriter::codePPS( const PPS* pcPPS )
   {
     pps_extension_present_flag|=pps_extension_flags[i];
   }
-
+#endif
   WRITE_FLAG( (pps_extension_present_flag?1:0), "pps_extension_present_flag" );
 
   if (pps_extension_present_flag)
-- 
GitLab