[x265-commits] [x265] encodeResandCalcInterCU: cleanup, no logic change

Deepthi Nandakumar deepthi at multicorewareinc.com
Tue Mar 18 15:07:50 CET 2014


details:   http://hg.videolan.org/x265/rev/32c9e30aee7a
branches:  
changeset: 6534:32c9e30aee7a
user:      Deepthi Nandakumar <deepthi at multicorewareinc.com>
date:      Tue Mar 18 07:47:11 2014 +0530
description:
encodeResandCalcInterCU: cleanup, no logic change
Subject: [x265] encoder: fix for VERBOSE_RATE (leftover HM feature) (closes #42)

details:   http://hg.videolan.org/x265/rev/0ac7e8729d90
branches:  
changeset: 6535:0ac7e8729d90
user:      Steve Borho <steve at borho.org>
date:      Tue Mar 18 01:16:39 2014 -0500
description:
encoder: fix for VERBOSE_RATE (leftover HM feature) (closes #42)
Subject: [x265] frameencoder: clean up qp clipping

details:   http://hg.videolan.org/x265/rev/2952312a52e5
branches:  
changeset: 6536:2952312a52e5
user:      Deepthi Nandakumar <deepthi at multicorewareinc.com>
date:      Tue Mar 18 14:04:03 2014 +0530
description:
frameencoder: clean up qp clipping
Subject: [x265] sps: reuse encoder macro QP_BD_OFFSET

details:   http://hg.videolan.org/x265/rev/551956198184
branches:  
changeset: 6537:551956198184
user:      Deepthi Nandakumar <deepthi at multicorewareinc.com>
date:      Tue Mar 18 14:06:02 2014 +0530
description:
sps: reuse encoder macro QP_BD_OFFSET
Subject: [x265] encoder, sbac, quant: use only macro QP_BD_OFFSET, remove unnecessary get methods

details:   http://hg.videolan.org/x265/rev/4c8ea265d55e
branches:  
changeset: 6538:4c8ea265d55e
user:      Deepthi Nandakumar <deepthi at multicorewareinc.com>
date:      Tue Mar 18 14:09:21 2014 +0530
description:
encoder, sbac, quant: use only macro QP_BD_OFFSET, remove unnecessary get methods
Subject: [x265] api: declare x265_cli_csps as static const (closes #39)

details:   http://hg.videolan.org/x265/rev/dc700298419d
branches:  
changeset: 6539:dc700298419d
user:      Steve Borho <steve at borho.org>
date:      Tue Mar 18 08:46:15 2014 -0500
description:
api: declare x265_cli_csps as static const (closes #39)

Fixes link errors when x265.h is included by multiple C files.

diffstat:

 source/Lib/TLibEncoder/TEncSbac.cpp   |   2 +-
 source/Lib/TLibEncoder/TEncSearch.cpp |  27 ++++++++++-----------------
 source/encoder/encoder.cpp            |   8 ++++----
 source/encoder/frameencoder.cpp       |   2 +-
 source/x265.h                         |   2 +-
 5 files changed, 17 insertions(+), 24 deletions(-)

diffs (183 lines):

diff -r 7b86d42683be -r dc700298419d source/Lib/TLibEncoder/TEncSbac.cpp
--- a/source/Lib/TLibEncoder/TEncSbac.cpp	Sun Mar 16 23:37:56 2014 +0900
+++ b/source/Lib/TLibEncoder/TEncSbac.cpp	Tue Mar 18 08:46:15 2014 -0500
@@ -1791,7 +1791,7 @@ void TEncSbac::codeDeltaQP(TComDataCU* c
 {
     int dqp = cu->getQP(absPartIdx) - cu->getRefQP(absPartIdx);
 
-    int qpBdOffsetY = cu->getSlice()->getSPS()->getQpBDOffsetY();
+    int qpBdOffsetY = QP_BD_OFFSET;
 
     dqp = (dqp + 78 + qpBdOffsetY + (qpBdOffsetY / 2)) % (52 + qpBdOffsetY) - 26 - (qpBdOffsetY / 2);
 
diff -r 7b86d42683be -r dc700298419d source/Lib/TLibEncoder/TEncSearch.cpp
--- a/source/Lib/TLibEncoder/TEncSearch.cpp	Sun Mar 16 23:37:56 2014 +0900
+++ b/source/Lib/TLibEncoder/TEncSearch.cpp	Tue Mar 18 08:46:15 2014 -0500
@@ -440,7 +440,7 @@ void TEncSearch::xIntraCodingLumaBlk(TCo
     int lastPos = -1;
     cu->setTrIdxSubParts(trDepth, absPartIdx, fullDepth);
 
-    m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, cu->getSlice()->getSPS()->getQpBDOffsetY(), 0, chFmt);
+    m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, QP_BD_OFFSET, 0, chFmt);
     m_trQuant->selectLambda(TEXT_LUMA);
 
     absSum = m_trQuant->transformNxN(cu, residual, stride, coeff, width, TEXT_LUMA, absPartIdx, &lastPos, useTransformSkip);
@@ -893,7 +893,7 @@ void TEncSearch::residualTransformQuantI
         int lastPos = -1;
         cu->setTrIdxSubParts(trDepth, absPartIdx, fullDepth);
 
-        m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, cu->getSlice()->getSPS()->getQpBDOffsetY(), 0, chFmt);
+        m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, QP_BD_OFFSET, 0, chFmt);
         m_trQuant->selectLambda(TEXT_LUMA);
         absSum = m_trQuant->transformNxN(cu, residual, stride, coeff, width, TEXT_LUMA, absPartIdx, &lastPos, useTransformSkip);
 
@@ -2560,7 +2560,6 @@ void TEncSearch::encodeResAndCalcRdInter
         return;
     }
 
-    bool bHighPass = cu->getSlice()->getSliceType() == B_SLICE;
     uint32_t bits = 0, bestBits = 0;
     uint32_t distortion = 0, bdist = 0;
 
@@ -2607,11 +2606,8 @@ void TEncSearch::encodeResAndCalcRdInter
     }
 
     //  Residual coding.
-    int      qp, qpBest = 0;
     uint64_t cost, bcost = MAX_INT64;
-
-    qp = bHighPass ? Clip3(-cu->getSlice()->getSPS()->getQpBDOffsetY(), MAX_QP, (int)cu->getQP(0)) : cu->getQP(0);
-
+    
     outResiYuv->subtract(fencYuv, predYuv, width);
 
     cost = 0;
@@ -2669,7 +2665,6 @@ void TEncSearch::encodeResAndCalcRdInter
 
         bestBits = bits;
         bcost    = cost;
-        qpBest   = qp;
         m_rdGoOnSbacCoder->store(m_rdSbacCoders[cu->getDepth(0)][CI_TEMP_BEST]);
     }
 
@@ -2699,9 +2694,7 @@ void TEncSearch::encodeResAndCalcRdInter
     if (cu->isSkipped(0))
     {
         cu->setCbfSubParts(0, 0, 0, 0, cu->getDepth(0));
-    }
-
-    cu->setQPSubParts(qpBest, 0, cu->getDepth(0));
+    }    
 }
 
 void TEncSearch::generateCoeffRecon(TComDataCU* cu, TComYuv* fencYuv, TComYuv* predYuv, ShortYuv* resiYuv, TComYuv* reconYuv, bool skipRes)
@@ -2797,7 +2790,7 @@ void TEncSearch::residualTransformQuantI
             cu->setTransformSkipSubParts(0, TEXT_CHROMA_V, absPartIdx, cu->getDepth(0) + trModeC);
         }
 
-        m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, cu->getSlice()->getSPS()->getQpBDOffsetY(), 0, chFmt);
+        m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, QP_BD_OFFSET, 0, chFmt);
         m_trQuant->selectLambda(TEXT_LUMA);
 
         absSumY = m_trQuant->transformNxN(cu, resiYuv->getLumaAddr(absTUPartIdx), resiYuv->m_width, coeffCurY,
@@ -2828,7 +2821,7 @@ void TEncSearch::residualTransformQuantI
         {
             int16_t *curResiY = resiYuv->getLumaAddr(absTUPartIdx);
 
-            m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, cu->getSlice()->getSPS()->getQpBDOffsetY(), 0, chFmt);
+            m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, QP_BD_OFFSET, 0, chFmt);
 
             int scalingListType = 3 + TEXT_LUMA;
             assert(scalingListType < 6);
@@ -3006,7 +2999,7 @@ void TEncSearch::xEstimateResidualQT(TCo
             m_entropyCoder->estimateBit(m_trQuant->m_estBitsSbac, trWidth, TEXT_LUMA);
         }
 
-        m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, cu->getSlice()->getSPS()->getQpBDOffsetY(), 0, chFmt);
+        m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, QP_BD_OFFSET, 0, chFmt);
         m_trQuant->selectLambda(TEXT_LUMA);
 
         absSumY = m_trQuant->transformNxN(cu, resiYuv->getLumaAddr(absTUPartIdx), resiYuv->m_width, coeffCurY,
@@ -3072,7 +3065,7 @@ void TEncSearch::xEstimateResidualQT(TCo
         {
             int16_t *curResiY = m_qtTempShortYuv[qtlayer].getLumaAddr(absTUPartIdx);
 
-            m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, cu->getSlice()->getSPS()->getQpBDOffsetY(), 0, chFmt);
+            m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, QP_BD_OFFSET, 0, chFmt);
 
             int scalingListType = 3 + TEXT_LUMA;
             assert(scalingListType < 6);
@@ -3297,7 +3290,7 @@ void TEncSearch::xEstimateResidualQT(TCo
                 m_entropyCoder->estimateBit(m_trQuant->m_estBitsSbac, trWidth, TEXT_LUMA);
             }
 
-            m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, cu->getSlice()->getSPS()->getQpBDOffsetY(), 0, chFmt);
+            m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, QP_BD_OFFSET, 0, chFmt);
 
             m_trQuant->selectLambda(TEXT_LUMA);
             absSumTransformSkipY = m_trQuant->transformNxN(cu, resiYuv->getLumaAddr(absTUPartIdx), resiYuv->m_width, coeffCurY,
@@ -3311,7 +3304,7 @@ void TEncSearch::xEstimateResidualQT(TCo
                 m_entropyCoder->encodeCoeffNxN(cu, coeffCurY, absPartIdx, trWidth, trHeight, depth, TEXT_LUMA);
                 const uint32_t skipSingleBitsY = m_entropyCoder->getNumberOfWrittenBits();
 
-                m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, cu->getSlice()->getSPS()->getQpBDOffsetY(), 0, chFmt);
+                m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, QP_BD_OFFSET, 0, chFmt);
 
                 int scalingListType = 3 + TEXT_LUMA;
                 assert(scalingListType < 6);
diff -r 7b86d42683be -r dc700298419d source/encoder/encoder.cpp
--- a/source/encoder/encoder.cpp	Sun Mar 16 23:37:56 2014 +0900
+++ b/source/encoder/encoder.cpp	Tue Mar 18 08:46:15 2014 -0500
@@ -401,7 +401,7 @@ int Encoder::encode(bool flush, const x2
         {
             uint32_t numRBSPBytes_nal = nalunits[count]->m_packetSize;
 #if VERBOSE_RATE
-            printf("*** %6s numBytesInNALunit: %u\n", nalUnitTypeToString((*it)->m_nalUnitType), numRBSPBytes_nal);
+            printf("*** %6s numBytesInNALunit: %u\n", nalUnitTypeToString(nalunits[count]->m_nalUnitType), numRBSPBytes_nal);
 #endif
             if (nalunits[count]->m_nalUnitType != NAL_UNIT_PREFIX_SEI && nalunits[count]->m_nalUnitType != NAL_UNIT_SUFFIX_SEI)
             {
@@ -1024,8 +1024,8 @@ void Encoder::initSPS(TComSPS *sps)
     sps->setBitDepthY(X265_DEPTH);
     sps->setBitDepthC(X265_DEPTH);
 
-    sps->setQpBDOffsetY(6 * (X265_DEPTH - 8));
-    sps->setQpBDOffsetC(6 * (X265_DEPTH - 8));
+    sps->setQpBDOffsetY(QP_BD_OFFSET);
+    sps->setQpBDOffsetC(QP_BD_OFFSET);
 
     sps->setUseSAO(param->bEnableSAO);
 
@@ -1107,7 +1107,7 @@ void Encoder::initPPS(TComPPS *pps)
     /* TODO: This variable m_maxCuDQPDepth needs to be a CLI option to allow us to choose AQ granularity */
     bool bUseDQP = (m_maxCuDQPDepth > 0 || param->rc.aqMode || isVbv) ? true : false;
 
-    int lowestQP = -(6 * (X265_DEPTH - 8)); //m_cSPS.getQpBDOffsetY();
+    int lowestQP = -QP_BD_OFFSET; 
 
     if (m_useLossless)
     {
diff -r 7b86d42683be -r dc700298419d source/encoder/frameencoder.cpp
--- a/source/encoder/frameencoder.cpp	Sun Mar 16 23:37:56 2014 +0900
+++ b/source/encoder/frameencoder.cpp	Tue Mar 18 08:46:15 2014 -0500
@@ -1040,7 +1040,7 @@ void FrameEncoder::processRowEncoder(int
         {
             int qp = calcQpForCu(m_pic, cuAddr, qpBase);
             setLambda(qp, row);
-            qp = X265_MIN(qp, MAX_QP);
+            qp = Clip3(-QP_BD_OFFSET, MAX_QP, qp);
             cu->setQPSubParts(char(qp), 0, 0);
             cu->m_baseQp = qpBase;
             if (m_cfg->param->rc.aqMode)
diff -r 7b86d42683be -r dc700298419d source/x265.h
--- a/source/x265.h	Sun Mar 16 23:37:56 2014 +0900
+++ b/source/x265.h	Tue Mar 18 08:46:15 2014 -0500
@@ -244,7 +244,7 @@ typedef struct
     int height[3];
 } x265_cli_csp;
 
-const x265_cli_csp x265_cli_csps[] =
+static const x265_cli_csp x265_cli_csps[] =
 {
     { 1, { 0, 0, 0 }, { 0, 0, 0 } }, /* i400 */
     { 3, { 0, 1, 1 }, { 0, 1, 1 } }, /* i420 */


More information about the x265-commits mailing list