[x265] [PATCH] simplify rdoQuant() logic on ctxSet

Min Chen chenm003 at 163.com
Mon Apr 13 12:39:45 CEST 2015


# HG changeset patch
# User Min Chen <chenm003 at 163.com>
# Date 1428921578 -28800
# Node ID aef6e05df317dc217d6339992d729a177ed9e4ec
# Parent  4cccf22b00ee188a72c8dc3896d7dc1613d855ad
simplify rdoQuant() logic on ctxSet
---
 source/common/quant.cpp |   15 ++++++---------
 1 files changed, 6 insertions(+), 9 deletions(-)

diff -r 4cccf22b00ee -r aef6e05df317 source/common/quant.cpp
--- a/source/common/quant.cpp	Fri Apr 10 18:15:38 2015 -0500
+++ b/source/common/quant.cpp	Mon Apr 13 18:39:38 2015 +0800
@@ -558,7 +558,6 @@
     int64_t costCoeffGroupSig[MLS_GRP_NUM]; /* lambda * bits of group coding cost */
     uint64_t sigCoeffGroupFlag64 = 0;
 
-    uint32_t ctxSet      = 0;
     int cgLastScanPos    = -1;
     int lastScanPos      = -1;
     const uint32_t cgSize = (1 << MLS_CG_SIZE); /* 4x4 num coef = 16 */
@@ -582,10 +581,12 @@
 
     uint32_t scanPos;
     coeffGroupRDStats cgRdStats;
+    uint32_t c1 = 1;
 
     /* iterate over coding groups in reverse scan order */
     for (int cgScanPos = cgNum - 1; cgScanPos >= 0; cgScanPos--)
     {
+        uint32_t ctxSet = (cgScanPos && bIsLuma) ? 2 : 0;
         const uint32_t cgBlkPos = codeParams.scanCG[cgScanPos];
         const uint32_t cgPosY   = cgBlkPos >> codeParams.log2TrSizeCG;
         const uint32_t cgPosX   = cgBlkPos - (cgPosY << codeParams.log2TrSizeCG);
@@ -594,7 +595,10 @@
 
         const int patternSigCtx = calcPatternSigCtx(sigCoeffGroupFlag64, cgPosX, cgPosY, cgBlkPos, cgStride);
 
-        int    c1            = 1;
+        if (c1 == 0)
+            ctxSet++;
+        c1 = 1;
+
         int    c2            = 0;
         uint32_t goRiceParam = 0;
         uint32_t c1Idx       = 0;
@@ -815,13 +819,6 @@
             }
         } /* end for (scanPosinCG) */
 
-        /* context set update */
-        {
-            ctxSet = (cgScanPos == 1 || !bIsLuma) ? 0 : 2;
-            X265_CHECK(c1 >= 0, "c1 is negative\n");
-            ctxSet -= ((int32_t)(c1 - 1) >> 31);
-        }
-
         costCoeffGroupSig[cgScanPos] = 0;
 
         if (cgLastScanPos < 0)



More information about the x265-devel mailing list