[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