[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