From 3fc33c6ccbd49d3c393da597626cc7144ee1cc16 Mon Sep 17 00:00:00 2001
From: Muhammed Coban <mcoban@qti.qualcomm.com>
Date: Wed, 24 Apr 2019 22:17:17 -0700
Subject: [PATCH 1/2] RDPCM RDOQ bug fix and variable name prefix cleanup.

---
 source/Lib/CommonLib/QuantRDOQ.cpp    |  4 ++--
 source/Lib/EncoderLib/IntraSearch.cpp | 10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/source/Lib/CommonLib/QuantRDOQ.cpp b/source/Lib/CommonLib/QuantRDOQ.cpp
index 86fb173e60..0718305991 100644
--- a/source/Lib/CommonLib/QuantRDOQ.cpp
+++ b/source/Lib/CommonLib/QuantRDOQ.cpp
@@ -1622,7 +1622,7 @@ void QuantRDOQ::forwardRDPCM( TransformUnit &tu, const ComponentID &compID, cons
       const BinFracBits fracBitsPar = fracBits.getFracBitsArray(cctx.parityCtxIdAbsTS());
 
       goRiceParam = cctx.templateAbsSumTS(scanPos, dstCoeff);
-      const BinFracBits fracBitsSign = fracBits.getFracBitsArray(Ctx::TsResidualSign(toChannelType(compID)));
+      const BinFracBits fracBitsSign = fracBits.getFracBitsArray(Ctx::TsResidualSign(1));
       const uint8_t     sign = srcCoeff[blkPos] - predCoeff < 0 ? 1 : 0;
 
       DTRACE_COND((maxAbsLevel != 0), g_trace_ctx, D_RDOQ_MORE, " uiCtxSig=%d", ctxIdSig);
@@ -1721,7 +1721,7 @@ void QuantRDOQ::forwardRDPCM( TransformUnit &tu, const ComponentID &compID, cons
   {
     int blkPos = cctx.blockPos(scanPos);
     TCoeff level = dstCoeff[blkPos];
-    absSum += level;
+    absSum += abs(level);
   }
 }
 
diff --git a/source/Lib/EncoderLib/IntraSearch.cpp b/source/Lib/EncoderLib/IntraSearch.cpp
index 5e0281f65e..77869ae070 100644
--- a/source/Lib/EncoderLib/IntraSearch.cpp
+++ b/source/Lib/EncoderLib/IntraSearch.cpp
@@ -1180,13 +1180,13 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner,
 
 #if JVET_N0217_MATRIX_INTRAPRED
 #if JVET_N0413_RDPCM
-    for (int uiMode = -2 * int(testBDPCM); uiMode < (int)uiRdModeList.size(); uiMode++)
+    for (int mode = -2 * int(testBDPCM); mode < (int)uiRdModeList.size(); mode++)
     {
       // set CU/PU to luma prediction mode
       ModeInfo uiOrgMode;
-      if (testBDPCM && uiMode < 0)
+      if (testBDPCM && mode < 0)
       {
-        cu.bdpcmMode = -uiMode;
+        cu.bdpcmMode = -mode;
 
         unsigned mpm_pred[NUM_MOST_PROBABLE_MODES];
         PU::getIntraMPMs(pu, mpm_pred);
@@ -1199,7 +1199,7 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner,
       else
       {
         cu.bdpcmMode = 0;
-        uiOrgMode = uiRdModeList[uiMode];
+        uiOrgMode = uiRdModeList[mode];
 #else
     for (uint32_t uiMode = 0; uiMode < uiRdModeList.size(); uiMode++)
     {
@@ -1360,7 +1360,7 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner,
       if( !cu.ispMode && !cu.bdpcmMode && csBest->cost < bestCostNonBDPCM )
       {
         bestCostNonBDPCM = csBest->cost;
-        bestNormalIntraModeIndex = uiMode;
+        bestNormalIntraModeIndex = mode;
       }
 #endif
       csTemp->releaseIntermediateData();
-- 
GitLab


From 4b421958dd7825e5521dfd31e201bca682d460b2 Mon Sep 17 00:00:00 2001
From: Muhammed Coban <mcoban@qti.qualcomm.com>
Date: Thu, 25 Apr 2019 16:45:22 -0700
Subject: [PATCH 2/2] RDPCM code cleanup.

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

diff --git a/source/Lib/EncoderLib/IntraSearch.cpp b/source/Lib/EncoderLib/IntraSearch.cpp
index 77869ae070..21c0ac5d25 100644
--- a/source/Lib/EncoderLib/IntraSearch.cpp
+++ b/source/Lib/EncoderLib/IntraSearch.cpp
@@ -1184,7 +1184,7 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner,
     {
       // set CU/PU to luma prediction mode
       ModeInfo uiOrgMode;
-      if (testBDPCM && mode < 0)
+      if ( mode < 0 )
       {
         cu.bdpcmMode = -mode;
 
@@ -1221,7 +1221,7 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner,
       CHECK(cu.ispMode && pu.multiRefIdx, "Error: combination of ISP and MRL not supported");
 #else
 #if JVET_N0413_RDPCM
-    for( int uiMode = -2 * testBDPCM; uiMode < numModesForFullRD; uiMode++ )
+    for( int mode = -2 * int(testBDPCM); mode < numModesForFullRD; mode++ )
 #else
     for (uint32_t uiMode = 0; uiMode < numModesForFullRD; uiMode++)
 #endif
@@ -1230,9 +1230,9 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner,
       int multiRefIdx = 0;
       uint32_t uiOrgMode;
 
-      if (testBDPCM && uiMode < 0)
+      if ( mode < 0 )
     {
-        cu.bdpcmMode = -uiMode;
+        cu.bdpcmMode = -mode;
         unsigned mpm_pred[NUM_MOST_PROBABLE_MODES];
         PU::getIntraMPMs(pu, mpm_pred);
         pu.intraDir[0] = mpm_pred[0];
@@ -1242,12 +1242,12 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner,
       else
       {
         cu.bdpcmMode = 0;
-        uiOrgMode = uiRdModeList[uiMode];
+        uiOrgMode = uiRdModeList[mode];
 #else
       // set luma prediction mode
       uint32_t uiOrgMode = uiRdModeList[uiMode];
 #endif
-      cu.ispMode = extendRefList[uiMode] > MRL_NUM_REF_LINES ? extendRefList[uiMode] - MRL_NUM_REF_LINES : NOT_INTRA_SUBPARTITIONS;
+      cu.ispMode = extendRefList[mode] > MRL_NUM_REF_LINES ? extendRefList[mode] - MRL_NUM_REF_LINES : NOT_INTRA_SUBPARTITIONS;
         pu.intraDir[0] = uiOrgMode;
 
 #if !JVET_N0413_RDPCM
@@ -1275,7 +1275,7 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner,
 #if !JVET_N0217_MATRIX_INTRAPRED
         else
         {
-          multiRefIdx = extendRefList[uiMode];
+          multiRefIdx = extendRefList[mode];
           pu.multiRefIdx = multiRefIdx;
 #if !JVET_N0185_UNIFIED_MPM
           CHECK( pu.multiRefIdx && ( pu.intraDir[0] == DC_IDX || pu.intraDir[0] == PLANAR_IDX ), "ERL" );
-- 
GitLab