From dd2fe4acb5195425e1a7b8300667c16b0af98494 Mon Sep 17 00:00:00 2001
From: jamesxxiu <jamesxxiu@gmail.com>
Date: Tue, 11 Feb 2020 19:19:04 -0800
Subject: [PATCH] bugfix of sps_act_enabled_flag signaling

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

diff --git a/source/Lib/DecoderLib/VLCReader.cpp b/source/Lib/DecoderLib/VLCReader.cpp
index 1fcd20999..b4bea61b4 100644
--- a/source/Lib/DecoderLib/VLCReader.cpp
+++ b/source/Lib/DecoderLib/VLCReader.cpp
@@ -1833,25 +1833,20 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
       pcSPS->setProfControlPresentFlag( false );
     }
   }
+#if !JVET_Q0820_ACT
 #if JVET_Q0265
   if (chromaArrayType == CHROMA_444)
 #else
   if (pcSPS->getChromaFormatIdc() == CHROMA_444)
 #endif
   {
-#if JVET_Q0820_ACT
-    if (pcSPS->getLog2MaxTbSize() != 6)
-    {
-      READ_FLAG(uiCode, "sps_act_enabled_flag");                                pcSPS->setUseColorTrans(uiCode != 0);
-    }
-#else
     READ_FLAG(uiCode, "sps_act_enabled_flag");                                  pcSPS->setUseColorTrans(uiCode != 0);
-#endif
   }
   else
   {
     pcSPS->setUseColorTrans(false);
   }
+#endif
 #if JVET_Q0504_PLT_NON444
   READ_FLAG( uiCode,  "sps_palette_enabled_flag");                                pcSPS->setPLTMode                ( uiCode != 0 );
 #else
@@ -1864,6 +1859,20 @@ void HLSyntaxReader::parseSPS(SPS* pcSPS)
     pcSPS->setPLTMode(false);
   }
 #endif
+#if JVET_Q0820_ACT
+#if JVET_Q0265
+  if (chromaArrayType == CHROMA_444 && pcSPS->getLog2MaxTbSize() != 6)
+#else
+  if (pcSPS->getChromaFormatIdc() == CHROMA_444 && pcSPS->getLog2MaxTbSize() != 6)
+#endif
+  {
+    READ_FLAG(uiCode, "sps_act_enabled_flag");                                pcSPS->setUseColorTrans(uiCode != 0);
+  }
+  else
+  {
+    pcSPS->setUseColorTrans(false);
+  }
+#endif
 #if JVET_Q0183_SPS_TRANSFORM_SKIP_MODE_CONTROL
   if (pcSPS->getTransformSkipEnabledFlag() || pcSPS->getPLTMode())
   {
diff --git a/source/Lib/EncoderLib/VLCWriter.cpp b/source/Lib/EncoderLib/VLCWriter.cpp
index 60d8315ae..96f788c16 100644
--- a/source/Lib/EncoderLib/VLCWriter.cpp
+++ b/source/Lib/EncoderLib/VLCWriter.cpp
@@ -1229,17 +1229,12 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
       WRITE_FLAG(pcSPS->getProfControlPresentFlag() ? 1 : 0,                                   "sps_prof_pic_present_flag" );
     }
   }
+#if !JVET_Q0820_ACT
   if (pcSPS->getChromaFormatIdc() == CHROMA_444)
   {
-#if JVET_Q0820_ACT
-    if (pcSPS->getLog2MaxTbSize() != 6)
-    {
-      WRITE_FLAG(pcSPS->getUseColorTrans() ? 1 : 0, "sps_act_enabled_flag");
-    }
-#else
     WRITE_FLAG(pcSPS->getUseColorTrans() ? 1 : 0, "sps_act_enabled_flag");
-#endif
   }
+#endif
 #if JVET_Q0504_PLT_NON444
   WRITE_FLAG(pcSPS->getPLTMode() ? 1 : 0,                                                    "sps_palette_enabled_flag" );
 #else
@@ -1248,6 +1243,12 @@ void HLSWriter::codeSPS( const SPS* pcSPS )
     WRITE_FLAG(pcSPS->getPLTMode() ? 1 : 0,                                                    "sps_palette_enabled_flag" );
   }
 #endif
+#if JVET_Q0820_ACT
+  if (pcSPS->getChromaFormatIdc() == CHROMA_444 && pcSPS->getLog2MaxTbSize() != 6)
+  {
+    WRITE_FLAG(pcSPS->getUseColorTrans() ? 1 : 0, "sps_act_enabled_flag");
+  }
+#endif
 #if JVET_Q0183_SPS_TRANSFORM_SKIP_MODE_CONTROL
   if (pcSPS->getTransformSkipEnabledFlag() || pcSPS->getPLTMode())
   {
-- 
GitLab