[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