From 103a197601a759923fc3384dfa8e3247a40dee3f Mon Sep 17 00:00:00 2001
From: jamesxxiu <jamesxxiu@gmail.com>
Date: Tue, 28 Jan 2020 00:15:09 -0800
Subject: [PATCH] fix the interaction between JVET_Q0784_LFNST_COMBINATION and
 JVET_Q0820_ACT/JVET_Q0695_CHROMA_TS_JCCR

---
 source/Lib/EncoderLib/IntraSearch.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/source/Lib/EncoderLib/IntraSearch.cpp b/source/Lib/EncoderLib/IntraSearch.cpp
index 2bd485ccfe..5ee8d0ee19 100644
--- a/source/Lib/EncoderLib/IntraSearch.cpp
+++ b/source/Lib/EncoderLib/IntraSearch.cpp
@@ -4414,7 +4414,11 @@ bool IntraSearch::xRecurIntraCodingACTQT(CodingStructure &cs, Partitioner &parti
 #if JVET_Q0820_ACT 
       double  dSingleBestCostChroma = MAX_DOUBLE;
       int     bestModeId = -1;
+#if JVET_Q0784_LFNST_COMBINATION
+      bool    tsAllowed = TU::isTSAllowed(tu, compID) && (m_pcEncCfg->getUseChromaTS()) && !cu.lfnstIdx;
+#else
       bool    tsAllowed = TU::isTSAllowed(tu, compID) && (m_pcEncCfg->getUseChromaTS());
+#endif
       uint8_t numTransformCands = 1 + (tsAllowed ? 1 : 0);  // DCT + TS = 2 tests
       bool        cbfDCT2 = true;
 
@@ -5132,7 +5136,11 @@ ChromaCbfs IntraSearch::xRecurIntraChromaCodingQT( CodingStructure &cs, Partitio
 #if JVET_Q0695_CHROMA_TS_JCCR
         ComponentID codeCompId = ((currTU.jointCbCr >> 1) ? COMPONENT_Cb : COMPONENT_Cr);
         ComponentID otherCompId = ((codeCompId == COMPONENT_Cb) ? COMPONENT_Cr : COMPONENT_Cb);
+#if JVET_Q0784_LFNST_COMBINATION
+        bool        tsAllowed = TU::isTSAllowed(currTU, codeCompId) && (m_pcEncCfg->getUseChromaTS()) && !currTU.cu->lfnstIdx;
+#else
         bool        tsAllowed = TU::isTSAllowed(currTU, codeCompId) && (m_pcEncCfg->getUseChromaTS());
+#endif
         uint8_t     numTransformCands = 1 + (tsAllowed ? 1 : 0); // DCT + TS = 2 tests
         bool        cbfDCT2 = true;
 
-- 
GitLab