[x265] [PATCH] lowres: cache the lowres maxNumBlocks and reuse this in other places
gopu at multicorewareinc.com
gopu at multicorewareinc.com
Fri May 15 06:46:11 CEST 2015
# HG changeset patch
# User Gopu Govindaswamy <gopu at multicorewareinc.com>
# Date 1431665162 -19800
# Fri May 15 10:16:02 2015 +0530
# Node ID 484f7cac98c52cac5655b2e3de45a86e0f551269
# Parent 8592bf81d0848279fa79cd1487406cb516dffe99
lowres: cache the lowres maxNumBlocks and reuse this in other places
diff -r 8592bf81d084 -r 484f7cac98c5 source/common/lowres.cpp
--- a/source/common/lowres.cpp Thu May 14 17:12:14 2015 +0530
+++ b/source/common/lowres.cpp Fri May 15 10:16:02 2015 +0530
@@ -36,13 +36,13 @@
lumaStride = width + 2 * origPic->m_lumaMarginX;
if (lumaStride & 31)
lumaStride += 32 - (lumaStride & 31);
- int cuWidth = (width + X265_LOWRES_CU_SIZE - 1) >> X265_LOWRES_CU_BITS;
- int cuHeight = (lines + X265_LOWRES_CU_SIZE - 1) >> X265_LOWRES_CU_BITS;
- int cuCount = cuWidth * cuHeight;
+ maxBlocksInRow = (width + X265_LOWRES_CU_SIZE - 1) >> X265_LOWRES_CU_BITS;
+ maxBlocksInCol = (lines + X265_LOWRES_CU_SIZE - 1) >> X265_LOWRES_CU_BITS;
+ int cuCount = maxBlocksInRow * maxBlocksInCol;
/* rounding the width to multiple of lowres CU size */
- width = cuWidth * X265_LOWRES_CU_SIZE;
- lines = cuHeight * X265_LOWRES_CU_SIZE;
+ width = maxBlocksInRow * X265_LOWRES_CU_SIZE;
+ lines = maxBlocksInCol * X265_LOWRES_CU_SIZE;
size_t planesize = lumaStride * (lines + 2 * origPic->m_lumaMarginY);
size_t padoffset = lumaStride * origPic->m_lumaMarginY + origPic->m_lumaMarginX;
@@ -74,7 +74,7 @@
{
for (int j = 0; j < bframes + 2; j++)
{
- CHECKED_MALLOC(rowSatds[i][j], int32_t, cuHeight);
+ CHECKED_MALLOC(rowSatds[i][j], int32_t, maxBlocksInCol);
CHECKED_MALLOC(lowresCosts[i][j], uint16_t, cuCount);
}
}
diff -r 8592bf81d084 -r 484f7cac98c5 source/common/lowres.h
--- a/source/common/lowres.h Thu May 14 17:12:14 2015 +0530
+++ b/source/common/lowres.h Fri May 15 10:16:02 2015 +0530
@@ -130,6 +130,8 @@
uint16_t(*lowresCosts[X265_BFRAME_MAX + 2][X265_BFRAME_MAX + 2]);
int32_t* lowresMvCosts[2][X265_BFRAME_MAX + 1];
MV* lowresMvs[2][X265_BFRAME_MAX + 1];
+ uint32_t maxBlocksInRow;
+ uint32_t maxBlocksInCol;
/* used for vbvLookahead */
int plannedType[X265_LOOKAHEAD_MAX + 1];
diff -r 8592bf81d084 -r 484f7cac98c5 source/encoder/slicetype.cpp
--- a/source/encoder/slicetype.cpp Thu May 14 17:12:14 2015 +0530
+++ b/source/encoder/slicetype.cpp Fri May 15 10:16:02 2015 +0530
@@ -94,9 +94,7 @@
/* Actual adaptive quantization */
int maxCol = curFrame->m_fencPic->m_picWidth;
int maxRow = curFrame->m_fencPic->m_picHeight;
- int blockWidth = ((param->sourceWidth / 2) + X265_LOWRES_CU_SIZE - 1) >> X265_LOWRES_CU_BITS;
- int blockHeight = ((param->sourceHeight / 2) + X265_LOWRES_CU_SIZE - 1) >> X265_LOWRES_CU_BITS;
- int blockCount = blockWidth * blockHeight;
+ int blockCount = curFrame->m_lowres.maxBlocksInRow * curFrame->m_lowres.maxBlocksInCol;
for (int y = 0; y < 3; y++)
{
More information about the x265-devel
mailing list