[x265] square transform only
Satoshi Nakagawa
nakagawa424 at oki.com
Fri Feb 14 06:30:35 CET 2014
# HG changeset patch
# User Satoshi Nakagawa <nakagawa424 at oki.com>
# Date 1392355617 -32400
# Fri Feb 14 14:26:57 2014 +0900
# Node ID fe7afa6a2e1290817d3469505b856c55f8d46a1d
# Parent 757b127f8ede6a4b5b7f74186fa06be20df2a0ea
square transform only
diff -r 757b127f8ede -r fe7afa6a2e12 source/Lib/TLibCommon/TComTrQuant.cpp
--- a/source/Lib/TLibCommon/TComTrQuant.cpp Thu Feb 13 21:29:08 2014 -0600
+++ b/source/Lib/TLibCommon/TComTrQuant.cpp Fri Feb 14 14:26:57 2014 +0900
@@ -129,13 +129,13 @@
}
// To minimize the distortion only. No rate is considered.
-void TComTrQuant::signBitHidingHDQ(TCoeff* qCoef, TCoeff* coef, uint32_t const *scan, int32_t* deltaU, int width, int height)
+void TComTrQuant::signBitHidingHDQ(TCoeff* qCoef, TCoeff* coef, uint32_t const *scan, int32_t* deltaU, int trSize)
{
int lastCG = -1;
int absSum = 0;
int n;
- for (int subSet = (width * height - 1) >> LOG2_SCAN_SET_SIZE; subSet >= 0; subSet--)
+ for (int subSet = (trSize * trSize - 1) >> LOG2_SCAN_SET_SIZE; subSet >= 0; subSet--)
{
int subPos = subSet << LOG2_SCAN_SET_SIZE;
int firstNZPosInCG = SCAN_SET_SIZE, lastNZPosInCG = -1;
@@ -252,31 +252,29 @@
} // TU loop
}
-uint32_t TComTrQuant::xQuant(TComDataCU* cu, int32_t* coef, TCoeff* qCoef, int width, int height,
+uint32_t TComTrQuant::xQuant(TComDataCU* cu, int32_t* coef, TCoeff* qCoef, int trSize,
TextType ttype, uint32_t absPartIdx, int32_t *lastPos, bool curUseRDOQ)
{
uint32_t acSum = 0;
int add = 0;
bool useRDOQ = (cu->getTransformSkip(absPartIdx, ttype) ? m_useRDOQTS : m_useRDOQ) && curUseRDOQ;
- assert(width == height);
-
#if _MSC_VER
#pragma warning(disable: 4127) // conditional expression is constant
#endif
if (useRDOQ && (ttype == TEXT_LUMA || RDOQ_CHROMA))
{
- acSum = xRateDistOptQuant(cu, coef, qCoef, width, height, ttype, absPartIdx, lastPos);
+ acSum = xRateDistOptQuant(cu, coef, qCoef, trSize, ttype, absPartIdx, lastPos);
}
else
{
- const uint32_t log2BlockSize = g_convertToBit[width] + 2;
- uint32_t scanIdx = cu->getCoefScanIdx(absPartIdx, width, ttype == TEXT_LUMA, cu->isIntra(absPartIdx));
+ const uint32_t log2TrSize = g_convertToBit[trSize] + 2;
+ const uint32_t log2BlockSize = log2TrSize;
+ uint32_t scanIdx = cu->getCoefScanIdx(absPartIdx, trSize, ttype == TEXT_LUMA, cu->isIntra(absPartIdx));
const uint32_t *scan = g_sigLastScan[scanIdx][log2BlockSize - 1];
int deltaU[32 * 32];
- uint32_t log2TrSize = g_convertToBit[width] + 2;
int scalingListType = (cu->isIntra(absPartIdx) ? 0 : 3) + ttype;
assert(scalingListType < 6);
int32_t *quantCoeff = 0;
@@ -287,11 +285,11 @@
int qbits = QUANT_SHIFT + m_qpParam.m_per + transformShift;
add = (cu->getSlice()->getSliceType() == I_SLICE ? 171 : 85) << (qbits - 9);
- int numCoeff = width * height;
+ int numCoeff = trSize * trSize;
acSum += primitives.quant(coef, quantCoeff, deltaU, qCoef, qbits, add, numCoeff, lastPos);
if (cu->getSlice()->getPPS()->getSignHideFlag() && acSum >= 2)
- signBitHidingHDQ(qCoef, coef, scan, deltaU, width, height);
+ signBitHidingHDQ(qCoef, coef, scan, deltaU, trSize);
}
return acSum;
@@ -309,8 +307,7 @@
int16_t* residual,
uint32_t stride,
TCoeff* coeff,
- uint32_t width,
- uint32_t height,
+ uint32_t trSize,
TextType ttype,
uint32_t absPartIdx,
int32_t* lastPos,
@@ -320,11 +317,11 @@
if (cu->getCUTransquantBypass(absPartIdx))
{
uint32_t absSum = 0;
- for (uint32_t k = 0; k < height; k++)
+ for (uint32_t k = 0; k < trSize; k++)
{
- for (uint32_t j = 0; j < width; j++)
+ for (uint32_t j = 0; j < trSize; j++)
{
- coeff[k * width + j] = ((int16_t)residual[k * stride + j]);
+ coeff[k * trSize + j] = ((int16_t)residual[k * stride + j]);
absSum += abs(residual[k * stride + j]);
}
}
@@ -342,29 +339,29 @@
mode = REG_DCT;
}
- assert((cu->getSlice()->getSPS()->getMaxTrSize() >= width));
+ assert((cu->getSlice()->getSPS()->getMaxTrSize() >= trSize));
if (useTransformSkip)
{
- xTransformSkip(residual, stride, m_tmpCoeff, width, height);
+ xTransformSkip(residual, stride, m_tmpCoeff, trSize);
}
else
{
// TODO: this may need larger data types for X265_DEPTH > 8
- const uint32_t log2BlockSize = g_convertToBit[width];
- primitives.dct[DCT_4x4 + log2BlockSize - ((width == 4) && (mode != REG_DCT))](residual, m_tmpCoeff, stride);
+ const uint32_t log2BlockSize = g_convertToBit[trSize];
+ primitives.dct[DCT_4x4 + log2BlockSize - ((trSize == 4) && (mode != REG_DCT))](residual, m_tmpCoeff, stride);
}
- return xQuant(cu, m_tmpCoeff, coeff, width, height, ttype, absPartIdx, lastPos, curUseRDOQ);
+ return xQuant(cu, m_tmpCoeff, coeff, trSize, ttype, absPartIdx, lastPos, curUseRDOQ);
}
-void TComTrQuant::invtransformNxN(bool transQuantBypass, uint32_t mode, int16_t* residual, uint32_t stride, TCoeff* coeff, uint32_t width, uint32_t height, int scalingListType, bool useTransformSkip, int lastPos)
+void TComTrQuant::invtransformNxN(bool transQuantBypass, uint32_t mode, int16_t* residual, uint32_t stride, TCoeff* coeff, uint32_t trSize, int scalingListType, bool useTransformSkip, int lastPos)
{
if (transQuantBypass)
{
- for (uint32_t k = 0; k < height; k++)
+ for (uint32_t k = 0; k < trSize; k++)
{
- for (uint32_t j = 0; j < width; j++)
+ for (uint32_t j = 0; j < trSize; j++)
{
- residual[k * stride + j] = (int16_t)(coeff[k * width + j]);
+ residual[k * stride + j] = (int16_t)(coeff[k * trSize + j]);
}
}
@@ -375,7 +372,7 @@
int per = m_qpParam.m_per;
int rem = m_qpParam.m_rem;
bool useScalingList = getUseScalingList();
- uint32_t log2TrSize = g_convertToBit[width] + 2;
+ const uint32_t log2TrSize = g_convertToBit[trSize] + 2;
int transformShift = MAX_TR_DYNAMIC_RANGE - X265_DEPTH - log2TrSize;
int shift = QUANT_IQUANT_SHIFT - QUANT_SHIFT - transformShift;
int32_t *dequantCoef = getDequantCoeff(scalingListType, m_qpParam.m_rem, log2TrSize - 2);
@@ -384,30 +381,30 @@
{
static const int invQuantScales[6] = { 40, 45, 51, 57, 64, 72 };
int scale = invQuantScales[rem] << per;
- primitives.dequant_normal(coeff, m_tmpCoeff, width * height, scale, shift);
+ primitives.dequant_normal(coeff, m_tmpCoeff, trSize * trSize, scale, shift);
}
else
{
// CHECK_ME: the code is not verify since this is DEAD path
- primitives.dequant_scaling(coeff, dequantCoef, m_tmpCoeff, width * height, per, shift);
+ primitives.dequant_scaling(coeff, dequantCoef, m_tmpCoeff, trSize * trSize, per, shift);
}
if (useTransformSkip == true)
{
- xITransformSkip(m_tmpCoeff, residual, stride, width, height);
+ xITransformSkip(m_tmpCoeff, residual, stride, trSize);
}
else
{
// CHECK_ME: we can't here when no any coeff
assert(lastPos >= 0);
- const uint32_t log2BlockSize = g_convertToBit[width];
+ const uint32_t log2BlockSize = log2TrSize - 2;
#if HIGH_BIT_DEPTH
lastPos = !lastPos; // prevent warning
#else
// DC only
- if (lastPos == 0 && !((width == 4) && (mode != REG_DCT)))
+ if (lastPos == 0 && !((trSize == 4) && (mode != REG_DCT)))
{
int dc_val = (((m_tmpCoeff[0] * 64 + 64) >> 7) * 64 + 2048) >> 12;
primitives.blockfill_s[log2BlockSize](residual, stride, dc_val);
@@ -417,7 +414,7 @@
#endif
// TODO: this may need larger data types for X265_DEPTH > 8
- primitives.idct[IDCT_4x4 + log2BlockSize - ((width == 4) && (mode != REG_DCT))](m_tmpCoeff, residual, stride);
+ primitives.idct[IDCT_4x4 + log2BlockSize - ((trSize == 4) && (mode != REG_DCT))](m_tmpCoeff, residual, stride);
}
}
@@ -431,16 +428,15 @@
* \param stride stride of input residual data
* \param size transform size (size x size)
*/
-void TComTrQuant::xTransformSkip(int16_t* resiBlock, uint32_t stride, int32_t* coeff, int width, int height)
+void TComTrQuant::xTransformSkip(int16_t* resiBlock, uint32_t stride, int32_t* coeff, int trSize)
{
- assert(width == height);
- uint32_t log2TrSize = g_convertToBit[width] + 2;
+ uint32_t log2TrSize = g_convertToBit[trSize] + 2;
int shift = MAX_TR_DYNAMIC_RANGE - X265_DEPTH - log2TrSize;
uint32_t transformSkipShift;
int j, k;
if (shift >= 0)
{
- primitives.cvt16to32_shl(coeff, resiBlock, stride, shift, width);
+ primitives.cvt16to32_shl(coeff, resiBlock, stride, shift, trSize);
}
else
{
@@ -448,11 +444,11 @@
int offset;
transformSkipShift = -shift;
offset = (1 << (transformSkipShift - 1));
- for (j = 0; j < height; j++)
+ for (j = 0; j < trSize; j++)
{
- for (k = 0; k < width; k++)
+ for (k = 0; k < trSize; k++)
{
- coeff[j * height + k] = (resiBlock[j * stride + k] + offset) >> transformSkipShift;
+ coeff[j * trSize + k] = (resiBlock[j * stride + k] + offset) >> transformSkipShift;
}
}
}
@@ -464,26 +460,24 @@
* \param stride stride of input residual data
* \param size transform size (size x size)
*/
-void TComTrQuant::xITransformSkip(int32_t* coef, int16_t* residual, uint32_t stride, int width, int height)
+void TComTrQuant::xITransformSkip(int32_t* coef, int16_t* residual, uint32_t stride, int trSize)
{
- assert(width == height);
- uint32_t log2TrSize = g_convertToBit[width] + 2;
+ uint32_t log2TrSize = g_convertToBit[trSize] + 2;
int shift = MAX_TR_DYNAMIC_RANGE - X265_DEPTH - log2TrSize;
int j, k;
if (shift > 0)
{
- assert(width == height);
- primitives.cvt32to16_shr(residual, coef, stride, shift, width);
+ primitives.cvt32to16_shr(residual, coef, stride, shift, trSize);
}
else
{
//The case when X265_DEPTH >= 13
uint32_t transformSkipShift = -shift;
- for (j = 0; j < height; j++)
+ for (j = 0; j < trSize; j++)
{
- for (k = 0; k < width; k++)
+ for (k = 0; k < trSize; k++)
{
- residual[j * stride + k] = coef[j * width + k] << transformSkipShift;
+ residual[j * stride + k] = coef[j * trSize + k] << transformSkipShift;
}
}
}
@@ -502,15 +496,15 @@
* Rate distortion optimized quantization for entropy
* coding engines using probability models like CABAC
*/
-uint32_t TComTrQuant::xRateDistOptQuant(TComDataCU* cu, int32_t* srcCoeff, TCoeff* dstCoeff, uint32_t width, uint32_t height,
+uint32_t TComTrQuant::xRateDistOptQuant(TComDataCU* cu, int32_t* srcCoeff, TCoeff* dstCoeff, uint32_t trSize,
TextType ttype, uint32_t absPartIdx, int32_t *lastPos)
{
- uint32_t log2TrSize = g_convertToBit[width] + 2;
+ const uint32_t log2TrSize = g_convertToBit[trSize] + 2;
+ const uint32_t log2BlkSize = log2TrSize;
uint32_t absSum = 0;
int transformShift = MAX_TR_DYNAMIC_RANGE - X265_DEPTH - log2TrSize; // Represents scaling through forward transform
uint32_t goRiceParam = 0;
double blockUncodedCost = 0;
- const uint32_t log2BlkSize = g_convertToBit[width] + 2;
int scalingListType = (cu->isIntra(absPartIdx) ? 0 : 3) + ttype;
assert(scalingListType < 6);
@@ -520,7 +514,7 @@
int32_t *qCoefOrg = getQuantCoeff(scalingListType, m_qpParam.m_rem, log2TrSize - 2);
int32_t *qCoef = qCoefOrg;
double *errScale = errScaleOrg;
- uint32_t scanIdx = cu->getCoefScanIdx(absPartIdx, width, ttype == TEXT_LUMA, cu->isIntra(absPartIdx));
+ uint32_t scanIdx = cu->getCoefScanIdx(absPartIdx, trSize, ttype == TEXT_LUMA, cu->isIntra(absPartIdx));
double costCoeff[32 * 32];
double costSig[32 * 32];
@@ -545,7 +539,7 @@
double costCoeffGroupSig[MLS_GRP_NUM];
uint32_t sigCoeffGroupFlag[MLS_GRP_NUM];
- uint32_t numBlkSide = width / MLS_CG_SIZE;
+ uint32_t numBlkSide = trSize / MLS_CG_SIZE;
uint32_t ctxSet = 0;
int c1 = 1;
int c2 = 0;
@@ -560,7 +554,7 @@
::memset(sigCoeffGroupFlag, 0, sizeof(uint32_t) * MLS_GRP_NUM);
- uint32_t cgNum = width * height >> MLS_CG_SIZE;
+ uint32_t cgNum = trSize * trSize >> MLS_CG_SIZE;
int scanPos;
coeffGroupRDStats rdStats;
@@ -868,7 +862,7 @@
int tmpSum = 0;
int n;
- for (int subSet = (width * height - 1) >> LOG2_SCAN_SET_SIZE; subSet >= 0; subSet--)
+ for (int subSet = (trSize * trSize - 1) >> LOG2_SCAN_SET_SIZE; subSet >= 0; subSet--)
{
int subPos = subSet << LOG2_SCAN_SET_SIZE;
int firstNZPosInCG = SCAN_SET_SIZE, lastNZPosInCG = -1;
diff -r 757b127f8ede -r fe7afa6a2e12 source/Lib/TLibCommon/TComTrQuant.h
--- a/source/Lib/TLibCommon/TComTrQuant.h Thu Feb 13 21:29:08 2014 -0600
+++ b/source/Lib/TLibCommon/TComTrQuant.h Fri Feb 14 14:26:57 2014 +0900
@@ -127,10 +127,10 @@
void init(uint32_t maxTrSize, int useRDOQ, int useRDOQTS, int useTransformSkipFast);
// transform & inverse transform functions
- uint32_t transformNxN(TComDataCU* cu, int16_t* residual, uint32_t stride, TCoeff* coeff, uint32_t width, uint32_t height,
+ uint32_t transformNxN(TComDataCU* cu, int16_t* residual, uint32_t stride, TCoeff* coeff, uint32_t trSize,
TextType ttype, uint32_t absPartIdx, int32_t* lastPos, bool useTransformSkip = false, bool curUseRDOQ = true);
- void invtransformNxN(bool transQuantBypass, uint32_t mode, int16_t* residual, uint32_t stride, TCoeff* coeff, uint32_t width, uint32_t height, int scalingListType, bool useTransformSkip = false, int lastPos = MAX_INT);
+ void invtransformNxN(bool transQuantBypass, uint32_t mode, int16_t* residual, uint32_t stride, TCoeff* coeff, uint32_t trSize, int scalingListType, bool useTransformSkip = false, int lastPos = MAX_INT);
// Misc functions
void setQPforQuant(int qpy, TextType ttype, int qpBdOffset, int chromaQPOffset);
@@ -190,14 +190,14 @@
private:
- void xTransformSkip(int16_t* resiBlock, uint32_t stride, int32_t* coeff, int width, int height);
+ void xTransformSkip(int16_t* resiBlock, uint32_t stride, int32_t* coeff, int trSize);
- void signBitHidingHDQ(TCoeff* qcoeff, TCoeff* coeff, const uint32_t* scan, int32_t* deltaU, int width, int height);
+ void signBitHidingHDQ(TCoeff* qcoeff, TCoeff* coeff, const uint32_t* scan, int32_t* deltaU, int trSize);
- uint32_t xQuant(TComDataCU* cu, int32_t* src, TCoeff* dst, int width, int height, TextType ttype, uint32_t absPartIdx, int32_t *lastPos, bool curUseRDOQ = true);
+ uint32_t xQuant(TComDataCU* cu, int32_t* src, TCoeff* dst, int trSize, TextType ttype, uint32_t absPartIdx, int32_t *lastPos, bool curUseRDOQ = true);
// RDOQ functions
- uint32_t xRateDistOptQuant(TComDataCU* cu, int32_t* srcCoeff, TCoeff* dstCoeff, uint32_t width, uint32_t height, TextType ttype, uint32_t absPartIdx, int32_t *lastPos);
+ uint32_t xRateDistOptQuant(TComDataCU* cu, int32_t* srcCoeff, TCoeff* dstCoeff, uint32_t trSize, TextType ttype, uint32_t absPartIdx, int32_t *lastPos);
inline uint32_t xGetCodedLevel(double& codedCost, double& codedCost0, double& codedCostSig, int levelDouble,
uint32_t maxAbsLevel, uint16_t ctxNumSig, uint16_t ctxNumOne, uint16_t ctxNumAbs, uint16_t absGoRice,
@@ -217,7 +217,7 @@
inline uint32_t xGetIEPRate() const { return 32768; } ///< Get the cost of an equal probable bit
- void xITransformSkip(int32_t* coeff, int16_t* residual, uint32_t stride, int width, int height);
+ void xITransformSkip(int32_t* coeff, int16_t* residual, uint32_t stride, int trSize);
};
}
//! \}
diff -r 757b127f8ede -r fe7afa6a2e12 source/Lib/TLibEncoder/TEncSearch.cpp
--- a/source/Lib/TLibEncoder/TEncSearch.cpp Thu Feb 13 21:29:08 2014 -0600
+++ b/source/Lib/TLibEncoder/TEncSearch.cpp Fri Feb 14 14:26:57 2014 +0900
@@ -466,7 +466,7 @@
m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, cu->getSlice()->getSPS()->getQpBDOffsetY(), 0);
m_trQuant->selectLambda(TEXT_LUMA);
- absSum = m_trQuant->transformNxN(cu, residual, stride, coeff, width, height, TEXT_LUMA, absPartIdx, &lastPos, useTransformSkip);
+ absSum = m_trQuant->transformNxN(cu, residual, stride, coeff, width, TEXT_LUMA, absPartIdx, &lastPos, useTransformSkip);
//--- set coded block flag ---
cu->setCbfSubParts((absSum ? 1 : 0) << trDepth, TEXT_LUMA, absPartIdx, fullDepth);
@@ -477,7 +477,7 @@
{
int scalingListType = 0 + TEXT_LUMA;
assert(scalingListType < 6);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), cu->getLumaIntraDir(absPartIdx), residual, stride, coeff, width, height, scalingListType, useTransformSkip, lastPos);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), cu->getLumaIntraDir(absPartIdx), residual, stride, coeff, width, scalingListType, useTransformSkip, lastPos);
}
else
{
@@ -602,7 +602,7 @@
m_trQuant->selectLambda(TEXT_CHROMA);
- absSum = m_trQuant->transformNxN(cu, residual, stride, coeff, width, height, ttype, absPartIdx, &lastPos, useTransformSkipChroma);
+ absSum = m_trQuant->transformNxN(cu, residual, stride, coeff, width, ttype, absPartIdx, &lastPos, useTransformSkipChroma);
//--- set coded block flag ---
cu->setCbfSubParts((absSum ? 1 : 0) << origTrDepth, ttype, absPartIdx, cu->getDepth(0) + trDepth);
@@ -612,7 +612,7 @@
{
int scalingListType = 0 + ttype;
assert(scalingListType < 6);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, residual, stride, coeff, width, height, scalingListType, useTransformSkipChroma, lastPos);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, residual, stride, coeff, width, scalingListType, useTransformSkipChroma, lastPos);
}
else
{
@@ -1035,7 +1035,7 @@
m_trQuant->setQPforQuant(cu->getQP(0), TEXT_LUMA, cu->getSlice()->getSPS()->getQpBDOffsetY(), 0);
m_trQuant->selectLambda(TEXT_LUMA);
- absSum = m_trQuant->transformNxN(cu, residual, stride, coeff, width, height, TEXT_LUMA, absPartIdx, &lastPos, useTransformSkip);
+ absSum = m_trQuant->transformNxN(cu, residual, stride, coeff, width, TEXT_LUMA, absPartIdx, &lastPos, useTransformSkip);
//--- set coded block flag ---
cu->setCbfSubParts((absSum ? 1 : 0) << trDepth, TEXT_LUMA, absPartIdx, fullDepth);
@@ -1046,7 +1046,7 @@
{
int scalingListType = 0 + TEXT_LUMA;
assert(scalingListType < 6);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), cu->getLumaIntraDir(absPartIdx), residual, stride, coeff, width, height, scalingListType, useTransformSkip, lastPos);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), cu->getLumaIntraDir(absPartIdx), residual, stride, coeff, width, scalingListType, useTransformSkip, lastPos);
}
else
{
@@ -1664,7 +1664,7 @@
m_trQuant->selectLambda(TEXT_CHROMA);
- absSum = m_trQuant->transformNxN(cu, residual, stride, coeff, width, height, ttype, absPartIdx, &lastPos, useTransformSkipChroma);
+ absSum = m_trQuant->transformNxN(cu, residual, stride, coeff, width, ttype, absPartIdx, &lastPos, useTransformSkipChroma);
//--- set coded block flag ---
cu->setCbfSubParts((absSum ? 1 : 0) << trDepth, ttype, absPartIdx, cu->getDepth(0) + trDepth);
@@ -1674,7 +1674,7 @@
{
int scalingListType = 0 + ttype;
assert(scalingListType < 6);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, residual, stride, coeff, width, height, scalingListType, useTransformSkipChroma, lastPos);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, residual, stride, coeff, width, scalingListType, useTransformSkipChroma, lastPos);
}
else
{
@@ -3247,7 +3247,7 @@
m_trQuant->selectLambda(TEXT_LUMA);
absSumY = m_trQuant->transformNxN(cu, resiYuv->getLumaAddr(absTUPartIdx), resiYuv->m_width, coeffCurY,
- trWidth, trHeight, TEXT_LUMA, absPartIdx, &lastPosY, false, curuseRDOQ);
+ trWidth, TEXT_LUMA, absPartIdx, &lastPosY, false, curuseRDOQ);
cu->setCbfSubParts(absSumY ? setCbf : 0, TEXT_LUMA, absPartIdx, depth);
@@ -3259,12 +3259,12 @@
m_trQuant->selectLambda(TEXT_CHROMA);
absSumU = m_trQuant->transformNxN(cu, resiYuv->getCbAddr(absTUPartIdxC), resiYuv->m_cwidth, coeffCurU,
- trWidthC, trHeightC, TEXT_CHROMA_U, absPartIdx, &lastPosU, false, curuseRDOQ);
+ trWidthC, TEXT_CHROMA_U, absPartIdx, &lastPosU, false, curuseRDOQ);
curChromaQpOffset = cu->getSlice()->getPPS()->getChromaCrQpOffset() + cu->getSlice()->getSliceQpDeltaCr();
m_trQuant->setQPforQuant(cu->getQP(0), TEXT_CHROMA, cu->getSlice()->getSPS()->getQpBDOffsetC(), curChromaQpOffset);
absSumV = m_trQuant->transformNxN(cu, resiYuv->getCrAddr(absTUPartIdxC), resiYuv->m_cwidth, coeffCurV,
- trWidthC, trHeightC, TEXT_CHROMA_V, absPartIdx, &lastPosV, false, curuseRDOQ);
+ trWidthC, TEXT_CHROMA_V, absPartIdx, &lastPosV, false, curuseRDOQ);
cu->setCbfSubParts(absSumU ? setCbf : 0, TEXT_CHROMA_U, absPartIdx, cu->getDepth(0) + trModeC);
cu->setCbfSubParts(absSumV ? setCbf : 0, TEXT_CHROMA_V, absPartIdx, cu->getDepth(0) + trModeC);
@@ -3278,7 +3278,7 @@
int scalingListType = 3 + TEXT_LUMA;
assert(scalingListType < 6);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiY, resiYuv->m_width, coeffCurY, trWidth, trHeight, scalingListType, false, lastPosY); //this is for inter mode only
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiY, resiYuv->m_width, coeffCurY, trWidth, scalingListType, false, lastPosY); //this is for inter mode only
}
else
{
@@ -3298,7 +3298,7 @@
int scalingListType = 3 + TEXT_CHROMA_U;
assert(scalingListType < 6);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, pcResiCurrU, resiYuv->m_cwidth, coeffCurU, trWidthC, trHeightC, scalingListType, false, lastPosU);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, pcResiCurrU, resiYuv->m_cwidth, coeffCurU, trWidthC, scalingListType, false, lastPosU);
}
else
{
@@ -3314,7 +3314,7 @@
int scalingListType = 3 + TEXT_CHROMA_V;
assert(scalingListType < 6);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiV, resiYuv->m_cwidth, coeffCurV, trWidthC, trHeightC, scalingListType, false, lastPosV);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiV, resiYuv->m_cwidth, coeffCurV, trWidthC, scalingListType, false, lastPosV);
}
else
{
@@ -3456,7 +3456,7 @@
m_trQuant->selectLambda(TEXT_LUMA);
absSumY = m_trQuant->transformNxN(cu, resiYuv->getLumaAddr(absTUPartIdx), resiYuv->m_width, coeffCurY,
- trWidth, trHeight, TEXT_LUMA, absPartIdx, &lastPosY, false, curuseRDOQ);
+ trWidth, TEXT_LUMA, absPartIdx, &lastPosY, false, curuseRDOQ);
cu->setCbfSubParts(absSumY ? setCbf : 0, TEXT_LUMA, absPartIdx, depth);
@@ -3473,12 +3473,12 @@
m_trQuant->selectLambda(TEXT_CHROMA);
absSumU = m_trQuant->transformNxN(cu, resiYuv->getCbAddr(absTUPartIdxC), resiYuv->m_cwidth, coeffCurU,
- trWidthC, trHeightC, TEXT_CHROMA_U, absPartIdx, &lastPosU, false, curuseRDOQ);
+ trWidthC, TEXT_CHROMA_U, absPartIdx, &lastPosU, false, curuseRDOQ);
curChromaQpOffset = cu->getSlice()->getPPS()->getChromaCrQpOffset() + cu->getSlice()->getSliceQpDeltaCr();
m_trQuant->setQPforQuant(cu->getQP(0), TEXT_CHROMA, cu->getSlice()->getSPS()->getQpBDOffsetC(), curChromaQpOffset);
absSumV = m_trQuant->transformNxN(cu, resiYuv->getCrAddr(absTUPartIdxC), resiYuv->m_cwidth, coeffCurV,
- trWidthC, trHeightC, TEXT_CHROMA_V, absPartIdx, &lastPosV, false, curuseRDOQ);
+ trWidthC, TEXT_CHROMA_V, absPartIdx, &lastPosV, false, curuseRDOQ);
cu->setCbfSubParts(absSumU ? setCbf : 0, TEXT_CHROMA_U, absPartIdx, cu->getDepth(0) + trModeC);
cu->setCbfSubParts(absSumV ? setCbf : 0, TEXT_CHROMA_V, absPartIdx, cu->getDepth(0) + trModeC);
@@ -3523,7 +3523,7 @@
int scalingListType = 3 + TEXT_LUMA;
assert(scalingListType < 6);
assert(m_qtTempTComYuv[qtlayer].m_width == MAX_CU_SIZE);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiY, MAX_CU_SIZE, coeffCurY, trWidth, trHeight, scalingListType, false, lastPosY); //this is for inter mode only
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiY, MAX_CU_SIZE, coeffCurY, trWidth, scalingListType, false, lastPosY); //this is for inter mode only
const uint32_t nonZeroDistY = primitives.sse_ss[partSize](resiYuv->getLumaAddr(absTUPartIdx), resiYuv->m_width, m_qtTempTComYuv[qtlayer].getLumaAddr(absTUPartIdx), MAX_CU_SIZE);
if (cu->isLosslessCoded(0))
@@ -3595,7 +3595,7 @@
int scalingListType = 3 + TEXT_CHROMA_U;
assert(scalingListType < 6);
assert(m_qtTempTComYuv[qtlayer].m_cwidth == MAX_CU_SIZE / 2);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, pcResiCurrU, MAX_CU_SIZE / 2, coeffCurU, trWidthC, trHeightC, scalingListType, false, lastPosU);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, pcResiCurrU, MAX_CU_SIZE / 2, coeffCurU, trWidthC, scalingListType, false, lastPosU);
uint32_t dist = primitives.sse_ss[partSizeC](resiYuv->getCbAddr(absTUPartIdxC), resiYuv->m_cwidth,
m_qtTempTComYuv[qtlayer].getCbAddr(absTUPartIdxC),
@@ -3662,7 +3662,7 @@
int scalingListType = 3 + TEXT_CHROMA_V;
assert(scalingListType < 6);
assert(m_qtTempTComYuv[qtlayer].m_cwidth == MAX_CU_SIZE / 2);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiV, MAX_CU_SIZE / 2, coeffCurV, trWidthC, trHeightC, scalingListType, false, lastPosV);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiV, MAX_CU_SIZE / 2, coeffCurV, trWidthC, scalingListType, false, lastPosV);
uint32_t dist = primitives.sse_ss[partSizeC](resiYuv->getCrAddr(absTUPartIdxC), resiYuv->m_cwidth,
m_qtTempTComYuv[qtlayer].getCrAddr(absTUPartIdxC),
@@ -3753,7 +3753,7 @@
m_trQuant->selectLambda(TEXT_LUMA);
absSumTransformSkipY = m_trQuant->transformNxN(cu, resiYuv->getLumaAddr(absTUPartIdx), resiYuv->m_width, coeffCurY,
- trWidth, trHeight, TEXT_LUMA, absPartIdx, &lastPosTransformSkipY, true, curuseRDOQ);
+ trWidth, TEXT_LUMA, absPartIdx, &lastPosTransformSkipY, true, curuseRDOQ);
cu->setCbfSubParts(absSumTransformSkipY ? setCbf : 0, TEXT_LUMA, absPartIdx, depth);
if (absSumTransformSkipY != 0)
@@ -3769,7 +3769,7 @@
assert(scalingListType < 6);
assert(m_qtTempTComYuv[qtlayer].m_width == MAX_CU_SIZE);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiY, MAX_CU_SIZE, coeffCurY, trWidth, trHeight, scalingListType, true, lastPosTransformSkipY);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiY, MAX_CU_SIZE, coeffCurY, trWidth, scalingListType, true, lastPosTransformSkipY);
nonZeroDistY = primitives.sse_ss[partSize](resiYuv->getLumaAddr(absTUPartIdx), resiYuv->m_width,
m_qtTempTComYuv[qtlayer].getLumaAddr(absTUPartIdx),
@@ -3834,11 +3834,11 @@
m_trQuant->selectLambda(TEXT_CHROMA);
absSumTransformSkipU = m_trQuant->transformNxN(cu, resiYuv->getCbAddr(absTUPartIdxC), resiYuv->m_cwidth, coeffCurU,
- trWidthC, trHeightC, TEXT_CHROMA_U, absPartIdx, &lastPosTransformSkipU, true, curuseRDOQ);
+ trWidthC, TEXT_CHROMA_U, absPartIdx, &lastPosTransformSkipU, true, curuseRDOQ);
curChromaQpOffset = cu->getSlice()->getPPS()->getChromaCrQpOffset() + cu->getSlice()->getSliceQpDeltaCr();
m_trQuant->setQPforQuant(cu->getQP(0), TEXT_CHROMA, cu->getSlice()->getSPS()->getQpBDOffsetC(), curChromaQpOffset);
absSumTransformSkipV = m_trQuant->transformNxN(cu, resiYuv->getCrAddr(absTUPartIdxC), resiYuv->m_cwidth, coeffCurV,
- trWidthC, trHeightC, TEXT_CHROMA_V, absPartIdx, &lastPosTransformSkipV, true, curuseRDOQ);
+ trWidthC, TEXT_CHROMA_V, absPartIdx, &lastPosTransformSkipV, true, curuseRDOQ);
cu->setCbfSubParts(absSumTransformSkipU ? setCbf : 0, TEXT_CHROMA_U, absPartIdx, cu->getDepth(0) + trModeC);
cu->setCbfSubParts(absSumTransformSkipV ? setCbf : 0, TEXT_CHROMA_V, absPartIdx, cu->getDepth(0) + trModeC);
@@ -3859,7 +3859,7 @@
assert(scalingListType < 6);
assert(m_qtTempTComYuv[qtlayer].m_cwidth == MAX_CU_SIZE / 2);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiU, MAX_CU_SIZE / 2, coeffCurU, trWidthC, trHeightC, scalingListType, true, lastPosTransformSkipU);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiU, MAX_CU_SIZE / 2, coeffCurU, trWidthC, scalingListType, true, lastPosTransformSkipU);
uint32_t dist = primitives.sse_ss[partSizeC](resiYuv->getCbAddr(absTUPartIdxC), resiYuv->m_cwidth,
m_qtTempTComYuv[qtlayer].getCbAddr(absTUPartIdxC),
@@ -3898,7 +3898,7 @@
assert(scalingListType < 6);
assert(m_qtTempTComYuv[qtlayer].m_cwidth == MAX_CU_SIZE / 2);
- m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiV, MAX_CU_SIZE / 2, coeffCurV, trWidthC, trHeightC, scalingListType, true, lastPosTransformSkipV);
+ m_trQuant->invtransformNxN(cu->getCUTransquantBypass(absPartIdx), REG_DCT, curResiV, MAX_CU_SIZE / 2, coeffCurV, trWidthC, scalingListType, true, lastPosTransformSkipV);
uint32_t dist = primitives.sse_ss[partSizeC](resiYuv->getCrAddr(absTUPartIdxC), resiYuv->m_cwidth,
m_qtTempTComYuv[qtlayer].getCrAddr(absTUPartIdxC),
More information about the x265-devel
mailing list