[x265-commits] [x265] vbv: bug fixes in --no-cutree flow. Ignore intracosts in ...
Aarthi at videolan.org
Aarthi at videolan.org
Mon Mar 3 23:44:26 CET 2014
details: http://hg.videolan.org/x265/rev/527d03c56d68
branches: stable
changeset: 6355:527d03c56d68
user: Aarthi Thirumalai
date: Tue Mar 04 03:13:00 2014 +0530
description:
vbv: bug fixes in --no-cutree flow. Ignore intracosts in calculating satdcost per cu.
Subject: [x265] test bench : fix for test bench failure, caused by redundant malloc.
details: http://hg.videolan.org/x265/rev/6662df480e39
branches:
changeset: 6356:6662df480e39
user: Nabajit Deka
date: Mon Mar 03 11:28:22 2014 +0530
description:
test bench : fix for test bench failure, caused by redundant malloc.
Subject: [x265] asm : remove chroma_p2s_i444, can be replaced by luma_p2s
details: http://hg.videolan.org/x265/rev/e686e589f3ca
branches:
changeset: 6357:e686e589f3ca
user: Nabajit Deka
date: Mon Mar 03 17:44:56 2014 +0530
description:
asm : remove chroma_p2s_i444, can be replaced by luma_p2s
Subject: [x265] test bench : Modify chroma_p2s test function to handle csp.
details: http://hg.videolan.org/x265/rev/eb7eb10568fb
branches:
changeset: 6358:eb7eb10568fb
user: Nabajit Deka
date: Mon Mar 03 17:27:42 2014 +0530
description:
test bench : Modify chroma_p2s test function to handle csp.
Subject: [x265] residual coding unit is always square
details: http://hg.videolan.org/x265/rev/684781cad358
branches:
changeset: 6359:684781cad358
user: Satoshi Nakagawa <nakagawa424 at oki.com>
date: Mon Mar 03 11:46:33 2014 +0900
description:
residual coding unit is always square
Subject: [x265] TEncEntropy: fix gcc warnings
details: http://hg.videolan.org/x265/rev/e34503ff6627
branches:
changeset: 6360:e34503ff6627
user: Steve Borho <steve at borho.org>
date: Mon Mar 03 14:59:21 2014 -0600
description:
TEncEntropy: fix gcc warnings
Subject: [x265] tencsao: remove unused calcSaoStatsBlock
details: http://hg.videolan.org/x265/rev/2de527d2826d
branches:
changeset: 6361:2de527d2826d
user: Gopu Govindaswamy
date: Mon Mar 03 13:48:26 2014 +0530
description:
tencsao: remove unused calcSaoStatsBlock
Subject: [x265] tencsao: new and delete replaced with X265_MALLOC and X265_FREE
details: http://hg.videolan.org/x265/rev/02f953896795
branches:
changeset: 6362:02f953896795
user: Gopu Govindaswamy
date: Mon Mar 03 14:21:25 2014 +0530
description:
tencsao: new and delete replaced with X265_MALLOC and X265_FREE
Subject: [x265] tencsao: Pel replaced with pixel type
details: http://hg.videolan.org/x265/rev/0a2fcf8690b8
branches:
changeset: 6363:0a2fcf8690b8
user: Gopu Govindaswamy
date: Mon Mar 03 14:27:21 2014 +0530
description:
tencsao: Pel replaced with pixel type
Subject: [x265] tcomsaq: remove unused get and set saolcuboundary methods
details: http://hg.videolan.org/x265/rev/776983eda6ba
branches:
changeset: 6364:776983eda6ba
user: Gopu Govindaswamy
date: Mon Mar 03 14:43:21 2014 +0530
description:
tcomsaq: remove unused get and set saolcuboundary methods
Subject: [x265] tcomsao: use X265_MALLOC and X265_FREE in create() and Pel replaced with pixel
details: http://hg.videolan.org/x265/rev/459b108299e0
branches:
changeset: 6365:459b108299e0
user: Gopu Govindaswamy
date: Mon Mar 03 15:07:34 2014 +0530
description:
tcomsao: use X265_MALLOC and X265_FREE in create() and Pel replaced with pixel
Subject: [x265] tcomsao: replaced All Pel type into pixel type
details: http://hg.videolan.org/x265/rev/f3125b431ee5
branches:
changeset: 6366:f3125b431ee5
user: Gopu Govindaswamy
date: Mon Mar 03 15:29:22 2014 +0530
description:
tcomsao: replaced All Pel type into pixel type
Subject: [x265] tcomsao: only get method is unused, set lcuboundary is required
details: http://hg.videolan.org/x265/rev/62fe3f905981
branches:
changeset: 6367:62fe3f905981
user: Gopu Govindaswamy
date: Mon Mar 03 15:43:54 2014 +0530
description:
tcomsao: only get method is unused, set lcuboundary is required
references 742641e0f796
Subject: [x265] Merge with stable
details: http://hg.videolan.org/x265/rev/7fbecd22a0cd
branches:
changeset: 6368:7fbecd22a0cd
user: Steve Borho <steve at borho.org>
date: Mon Mar 03 16:34:48 2014 -0600
description:
Merge with stable
Subject: [x265] cmake: detect strtok_r, use workaround when not present
details: http://hg.videolan.org/x265/rev/3cbde0b893e3
branches:
changeset: 6369:3cbde0b893e3
user: Steve Borho <steve at borho.org>
date: Mon Mar 03 13:37:35 2014 -0600
description:
cmake: detect strtok_r, use workaround when not present
diffstat:
source/CMakeLists.txt | 1 +
source/Lib/TLibCommon/CommonDef.h | 3 +-
source/Lib/TLibCommon/TComDataCU.cpp | 49 +-
source/Lib/TLibCommon/TComDataCU.h | 2 +-
source/Lib/TLibCommon/TComPattern.cpp | 276 +++---
source/Lib/TLibCommon/TComPattern.h | 19 +-
source/Lib/TLibCommon/TComPicYuv.h | 2 +-
source/Lib/TLibCommon/TComPrediction.cpp | 8 +-
source/Lib/TLibCommon/TComPrediction.h | 10 +-
source/Lib/TLibCommon/TComRom.cpp | 106 +-
source/Lib/TLibCommon/TComRom.h | 2 +-
source/Lib/TLibCommon/TComSampleAdaptiveOffset.cpp | 204 ++--
source/Lib/TLibCommon/TComSampleAdaptiveOffset.h | 32 +-
source/Lib/TLibCommon/TComTrQuant.cpp | 206 ++--
source/Lib/TLibCommon/TComTrQuant.h | 20 +-
source/Lib/TLibCommon/TComWeightPrediction.cpp | 8 +-
source/Lib/TLibCommon/TComWeightPrediction.h | 8 +-
source/Lib/TLibCommon/TComYuv.cpp | 151 +-
source/Lib/TLibCommon/TComYuv.h | 47 +-
source/Lib/TLibCommon/TypeDef.h | 18 +-
source/Lib/TLibEncoder/TEncCu.cpp | 67 +-
source/Lib/TLibEncoder/TEncCu.h | 10 +-
source/Lib/TLibEncoder/TEncEntropy.cpp | 26 +-
source/Lib/TLibEncoder/TEncEntropy.h | 6 +-
source/Lib/TLibEncoder/TEncSampleAdaptiveOffset.cpp | 366 +-------
source/Lib/TLibEncoder/TEncSampleAdaptiveOffset.h | 1 -
source/Lib/TLibEncoder/TEncSbac.cpp | 119 +-
source/Lib/TLibEncoder/TEncSbac.h | 10 +-
source/Lib/TLibEncoder/TEncSearch.cpp | 136 +-
source/Lib/TLibEncoder/TEncSearch.h | 32 +-
source/common/CMakeLists.txt | 14 +-
source/common/TShortYUV.cpp | 320 -------
source/common/TShortYUV.h | 120 --
source/common/bitstream.h | 70 +
source/common/common.h | 3 -
source/common/loopfilter.cpp | 52 +
source/common/param.cpp | 141 ++-
source/common/param.h | 2 +
source/common/primitives.cpp | 40 +-
source/common/primitives.h | 5 +-
source/common/shortyuv.cpp | 282 ++++++
source/common/shortyuv.h | 112 ++
source/common/x86/asm-primitives.cpp | 73 +-
source/common/x86/intrapred8.asm | 862 ++++++++-----------
source/common/x86/ipfilter16.asm | 513 +++++++++++
source/common/x86/ipfilter8.asm | 58 -
source/common/x86/ipfilter8.h | 2 +-
source/common/x86/loopfilter.asm | 85 +
source/common/x86/loopfilter.h | 29 +
source/encoder/compress.cpp | 14 +-
source/encoder/cturow.cpp | 15 +-
source/encoder/cturow.h | 2 +-
source/encoder/encoder.cpp | 16 +-
source/encoder/frameencoder.cpp | 15 +-
source/encoder/frameencoder.h | 2 +-
source/encoder/framefilter.cpp | 4 -
source/encoder/slicetype.cpp | 4 +-
source/encoder/slicetype.h | 1 +
source/encoder/weightPrediction.cpp | 566 +++++++-----
source/test/intrapredharness.cpp | 36 +-
source/test/ipfilterharness.cpp | 53 +-
source/test/ipfilterharness.h | 2 +-
source/test/mbdstharness.cpp | 57 +-
source/test/pixelharness.cpp | 102 +-
source/test/pixelharness.h | 3 +-
source/test/testbench.cpp | 47 +-
source/x265.cpp | 27 +-
source/x265.h | 4 +-
68 files changed, 3077 insertions(+), 2621 deletions(-)
diffs (truncated from 9600 to 300 lines):
diff -r f6d079ad85bc -r 3cbde0b893e3 source/CMakeLists.txt
--- a/source/CMakeLists.txt Fri Feb 28 13:00:01 2014 -0800
+++ b/source/CMakeLists.txt Mon Mar 03 13:37:35 2014 -0600
@@ -14,6 +14,7 @@ project (x265)
cmake_minimum_required (VERSION 2.8.8) # OBJECT libraries require 2.8.8
include(CheckIncludeFiles)
include(CheckFunctionExists)
+include(CheckSymbolExists)
include(CheckCXXCompilerFlag)
# X265_BUILD must be incremented each time the public API is changed
diff -r f6d079ad85bc -r 3cbde0b893e3 source/Lib/TLibCommon/CommonDef.h
--- a/source/Lib/TLibCommon/CommonDef.h Fri Feb 28 13:00:01 2014 -0800
+++ b/source/Lib/TLibCommon/CommonDef.h Mon Mar 03 13:37:35 2014 -0600
@@ -88,8 +88,7 @@
#define MLS_GRP_NUM 64 ///< G644 : Max number of coefficient groups, max(16, 64)
#define MLS_CG_SIZE 4 ///< G644 : Coefficient group size of 4x4
-#define MLS_CG_LOG2_WIDTH 2
-#define MLS_CG_LOG2_HEIGHT 2
+#define MLS_CG_LOG2_SIZE 2
#define ARL_C_PRECISION 7 ///< G382: 7-bit arithmetic precision
#define LEVEL_RANGE 30 ///< G382: max coefficient level in statistics collection
diff -r f6d079ad85bc -r 3cbde0b893e3 source/Lib/TLibCommon/TComDataCU.cpp
--- a/source/Lib/TLibCommon/TComDataCU.cpp Fri Feb 28 13:00:01 2014 -0800
+++ b/source/Lib/TLibCommon/TComDataCU.cpp Mon Mar 03 13:37:35 2014 -0600
@@ -2833,7 +2833,7 @@ void TComDataCU::xDeriveCenterIdx(uint32
+ (partWidth / m_pic->getMinCUWidth()) / 2];
}
-uint32_t TComDataCU::getCoefScanIdx(uint32_t absPartIdx, uint32_t width, uint32_t height, bool bIsLuma, bool bIsIntra)
+uint32_t TComDataCU::getCoefScanIdx(uint32_t absPartIdx, uint32_t log2TrSize, bool bIsLuma, bool bIsIntra)
{
uint32_t scanIdx;
uint32_t dirMode;
@@ -2846,57 +2846,28 @@ uint32_t TComDataCU::getCoefScanIdx(uint
if (bIsLuma)
{
- const uint32_t maximumWidth = MDCS_MAXIMUM_WIDTH;
- const uint32_t maximumHeight = MDCS_MAXIMUM_HEIGHT;
-
- if ((width > maximumWidth) || (height > maximumHeight)) return SCAN_DIAG;
+ if (log2TrSize > MDCS_LOG2_MAX_SIZE) return SCAN_DIAG;
dirMode = getLumaIntraDir(absPartIdx);
}
else
{
- const uint32_t maximumWidth = MDCS_MAXIMUM_WIDTH >> m_hChromaShift;
- const uint32_t maximumHeight = MDCS_MAXIMUM_HEIGHT >> m_vChromaShift;
-
- if ((width > maximumWidth) || (height > maximumHeight)) return SCAN_DIAG;
+ if (log2TrSize > (MDCS_LOG2_MAX_SIZE - m_hChromaShift)) return SCAN_DIAG;
dirMode = getChromaIntraDir(absPartIdx);
if (dirMode == DM_CHROMA_IDX)
{
dirMode = getLumaIntraDir(absPartIdx);
}
+ // TODO: 4:2:2
}
- switch (MDCS_MODE)
- {
- case MDCS_BOTH_DIRECTIONS:
- if (abs((int)dirMode - VER_IDX) <= MDCS_ANGLE_LIMIT)
- scanIdx = SCAN_HOR;
- else if (abs((int)dirMode - HOR_IDX) <= MDCS_ANGLE_LIMIT)
- scanIdx = SCAN_VER;
- else
- scanIdx = SCAN_DIAG;
- break;
-
- case MDCS_VERTICAL_ONLY:
- if (abs((int)dirMode - HOR_IDX) <= MDCS_ANGLE_LIMIT)
- scanIdx = SCAN_VER;
- break;
-
- case MDCS_HORIZONTAL_ONLY:
- if (abs((int)dirMode - VER_IDX) <= MDCS_ANGLE_LIMIT)
- scanIdx = SCAN_HOR;
- break;
-
- case MDCS_DISABLED:
- scanIdx = 0;
- break;
-
- default:
- assert(false);
- x265_log(NULL, X265_LOG_ERROR, "Unrecognised MDCS mode\n");
- break;
- }
+ if (abs((int)dirMode - VER_IDX) <= MDCS_ANGLE_LIMIT)
+ scanIdx = SCAN_HOR;
+ else if (abs((int)dirMode - HOR_IDX) <= MDCS_ANGLE_LIMIT)
+ scanIdx = SCAN_VER;
+ else
+ scanIdx = SCAN_DIAG;
return scanIdx;
}
diff -r f6d079ad85bc -r 3cbde0b893e3 source/Lib/TLibCommon/TComDataCU.h
--- a/source/Lib/TLibCommon/TComDataCU.h Fri Feb 28 13:00:01 2014 -0800
+++ b/source/Lib/TLibCommon/TComDataCU.h Mon Mar 03 13:37:35 2014 -0600
@@ -472,7 +472,7 @@ public:
uint32_t& getTotalNumPart() { return m_numPartitions; }
- uint32_t getCoefScanIdx(uint32_t absPartIdx, uint32_t width, uint32_t height, bool bIsLuma, bool bIsIntra);
+ uint32_t getCoefScanIdx(uint32_t absPartIdx, uint32_t log2TrSize, bool bIsLuma, bool bIsIntra);
// -------------------------------------------------------------------------------------------------------------------
// member functions to support multiple color space formats
diff -r f6d079ad85bc -r 3cbde0b893e3 source/Lib/TLibCommon/TComPattern.cpp
--- a/source/Lib/TLibCommon/TComPattern.cpp Fri Feb 28 13:00:01 2014 -0800
+++ b/source/Lib/TLibCommon/TComPattern.cpp Mon Mar 03 13:37:35 2014 -0600
@@ -48,11 +48,11 @@ using namespace x265;
// Public member functions (TComPattern)
// ====================================================================================================================
-void TComPattern::initAdiPattern(TComDataCU* cu, uint32_t zOrderIdxInPart, uint32_t partDepth, Pel* adiBuf,
+void TComPattern::initAdiPattern(TComDataCU* cu, uint32_t zOrderIdxInPart, uint32_t partDepth, pixel* adiBuf,
int strideOrig, int heightOrig)
{
- Pel* roiOrigin;
- Pel* adiTemp;
+ pixel* roiOrigin;
+ pixel* adiTemp;
uint32_t cuWidth = cu->getWidth(0) >> partDepth;
uint32_t cuHeight = cu->getHeight(0) >> partDepth;
uint32_t cuWidth2 = cuWidth << 1;
@@ -100,10 +100,10 @@ void TComPattern::initAdiPattern(TComDat
int bufSize = cuHeight2 + cuWidth2 + 1;
uint32_t wh = ADI_BUF_STRIDE * height; // number of elements in one buffer
- Pel* filteredBuf1 = adiBuf + wh; // 1. filter buffer
- Pel* filteredBuf2 = filteredBuf1 + wh; // 2. filter buffer
- Pel* filterBuf = filteredBuf2 + wh; // buffer for 2. filtering (sequential)
- Pel* filterBufN = filterBuf + bufSize; // buffer for 1. filtering (sequential)
+ pixel* filteredBuf1 = adiBuf + wh; // 1. filter buffer
+ pixel* filteredBuf2 = filteredBuf1 + wh; // 2. filter buffer
+ pixel* filterBuf = filteredBuf2 + wh; // buffer for 2. filtering (sequential)
+ pixel* filterBufN = filterBuf + bufSize; // buffer for 1. filtering (sequential)
int l = 0;
// left border from bottom to top
@@ -179,8 +179,8 @@ void TComPattern::initAdiPattern(TComDat
}
// Overloaded initialization of ADI buffers to support buffered references for xpredIntraAngBufRef
-void TComPattern::initAdiPattern(TComDataCU* cu, uint32_t zOrderIdxInPart, uint32_t partDepth, Pel* adiBuf, int strideOrig, int heightOrig,
- Pel* refAbove, Pel* refLeft, Pel* refAboveFlt, Pel* refLeftFlt)
+void TComPattern::initAdiPattern(TComDataCU* cu, uint32_t zOrderIdxInPart, uint32_t partDepth, pixel* adiBuf, int strideOrig, int heightOrig,
+ pixel* refAbove, pixel* refLeft, pixel* refAboveFlt, pixel* refLeftFlt)
{
initAdiPattern(cu, zOrderIdxInPart, partDepth, adiBuf, strideOrig, heightOrig);
uint32_t cuWidth = cu->getWidth(0) >> partDepth;
@@ -194,8 +194,8 @@ void TComPattern::initAdiPattern(TComDat
refLeftFlt += cuWidth - 1;
// ADI_BUF_STRIDE * (2 * height + 1);
- memcpy(refAbove, adiBuf, (cuWidth2 + 1) * sizeof(Pel));
- memcpy(refAboveFlt, adiBuf + ADI_BUF_STRIDE * (2 * cuHeight + 1), (cuWidth2 + 1) * sizeof(Pel));
+ memcpy(refAbove, adiBuf, (cuWidth2 + 1) * sizeof(pixel));
+ memcpy(refAboveFlt, adiBuf + ADI_BUF_STRIDE * (2 * cuHeight + 1), (cuWidth2 + 1) * sizeof(pixel));
for (int k = 0; k < cuHeight2 + 1; k++)
{
@@ -204,10 +204,10 @@ void TComPattern::initAdiPattern(TComDat
}
}
-void TComPattern::initAdiPatternChroma(TComDataCU* cu, uint32_t zOrderIdxInPart, uint32_t partDepth, Pel* adiBuf, int strideOrig, int heightOrig, int chromaId)
+void TComPattern::initAdiPatternChroma(TComDataCU* cu, uint32_t zOrderIdxInPart, uint32_t partDepth, pixel* adiBuf, int strideOrig, int heightOrig, int chromaId)
{
- Pel* roiOrigin;
- Pel* adiTemp;
+ pixel* roiOrigin;
+ pixel* adiTemp;
uint32_t cuWidth = cu->getWidth(0) >> partDepth;
uint32_t cuHeight = cu->getHeight(0) >> partDepth;
uint32_t width;
@@ -252,163 +252,163 @@ void TComPattern::initAdiPatternChroma(T
cuWidth, cuHeight, width, height, picStride);
}
-void TComPattern::fillReferenceSamples(Pel* roiOrigin, Pel* adiTemp, bool* bNeighborFlags, int numIntraNeighbor, int unitSize, int numUnitsInCU, int totalUnits, uint32_t cuWidth, uint32_t cuHeight, uint32_t width, uint32_t height, int picStride)
+void TComPattern::fillReferenceSamples(pixel* roiOrigin, pixel* adiTemp, bool* bNeighborFlags, int numIntraNeighbor, int unitSize, int numUnitsInCU, int totalUnits, uint32_t cuWidth, uint32_t cuHeight, uint32_t width, uint32_t height, int picStride)
{
- Pel* piRoiTemp;
- int i, j;
- int iDCValue = 1 << (X265_DEPTH - 1);
+ pixel* roiTemp;
+ int i, j;
+ int dcValue = 1 << (X265_DEPTH - 1);
if (numIntraNeighbor == 0)
{
// Fill border with DC value
for (i = 0; i < width; i++)
{
- adiTemp[i] = iDCValue;
+ adiTemp[i] = dcValue;
}
for (i = 1; i < height; i++)
{
- adiTemp[i * ADI_BUF_STRIDE] = iDCValue;
+ adiTemp[i * ADI_BUF_STRIDE] = dcValue;
}
}
else if (numIntraNeighbor == totalUnits)
{
// Fill top-left border with rec. samples
- piRoiTemp = roiOrigin - picStride - 1;
- adiTemp[0] = piRoiTemp[0];
+ roiTemp = roiOrigin - picStride - 1;
+ adiTemp[0] = roiTemp[0];
// Fill left border with rec. samples
// Fill below left border with rec. samples
- piRoiTemp = roiOrigin - 1;
+ roiTemp = roiOrigin - 1;
for (i = 0; i < 2 * cuHeight; i++)
{
- adiTemp[(1 + i) * ADI_BUF_STRIDE] = piRoiTemp[0];
- piRoiTemp += picStride;
+ adiTemp[(1 + i) * ADI_BUF_STRIDE] = roiTemp[0];
+ roiTemp += picStride;
}
// Fill top border with rec. samples
// Fill top right border with rec. samples
- piRoiTemp = roiOrigin - picStride;
- memcpy(&adiTemp[1], piRoiTemp, 2 * cuWidth * sizeof(*adiTemp));
+ roiTemp = roiOrigin - picStride;
+ memcpy(&adiTemp[1], roiTemp, 2 * cuWidth * sizeof(*adiTemp));
}
else // reference samples are partially available
{
- int iNumUnits2 = numUnitsInCU << 1;
- int iTotalSamples = totalUnits * unitSize;
- Pel piAdiLine[5 * MAX_CU_SIZE];
- Pel *piAdiLineTemp;
- bool *pbNeighborFlags;
- int iNext, iCurr;
- Pel piRef = 0;
+ int numUnits2 = numUnitsInCU << 1;
+ int totalSamples = totalUnits * unitSize;
+ pixel adiLine[5 * MAX_CU_SIZE];
+ pixel* adiLineTemp;
+ bool* neighborFlagPtr;
+ int next, curr;
+ pixel iRef = 0;
// Initialize
- for (i = 0; i < iTotalSamples; i++)
+ for (i = 0; i < totalSamples; i++)
{
- piAdiLine[i] = iDCValue;
+ adiLine[i] = dcValue;
}
// Fill top-left sample
- piRoiTemp = roiOrigin - picStride - 1;
- piAdiLineTemp = piAdiLine + (iNumUnits2 * unitSize);
- pbNeighborFlags = bNeighborFlags + iNumUnits2;
- if (*pbNeighborFlags)
+ roiTemp = roiOrigin - picStride - 1;
+ adiLineTemp = adiLine + (numUnits2 * unitSize);
+ neighborFlagPtr = bNeighborFlags + numUnits2;
+ if (*neighborFlagPtr)
{
- piAdiLineTemp[0] = piRoiTemp[0];
+ adiLineTemp[0] = roiTemp[0];
for (i = 1; i < unitSize; i++)
{
- piAdiLineTemp[i] = piAdiLineTemp[0];
+ adiLineTemp[i] = adiLineTemp[0];
}
}
// Fill left & below-left samples
- piRoiTemp += picStride;
- piAdiLineTemp--;
- pbNeighborFlags--;
- for (j = 0; j < iNumUnits2; j++)
+ roiTemp += picStride;
+ adiLineTemp--;
+ neighborFlagPtr--;
+ for (j = 0; j < numUnits2; j++)
{
- if (*pbNeighborFlags)
+ if (*neighborFlagPtr)
{
for (i = 0; i < unitSize; i++)
{
More information about the x265-commits
mailing list