[x265-commits] [x265] ipfilter: remove unused weighted interpolation primitives

Steve Borho steve at borho.org
Mon Oct 7 20:05:08 CEST 2013


details:   http://hg.videolan.org/x265/rev/15c6e2451b34
branches:  
changeset: 4250:15c6e2451b34
user:      Steve Borho <steve at borho.org>
date:      Sun Oct 06 22:30:10 2013 -0500
description:
ipfilter: remove unused weighted interpolation primitives
Subject: [x265] ipfilterharness: remove test harnesses for removed primitives

details:   http://hg.videolan.org/x265/rev/6fdea23da2b9
branches:  
changeset: 4251:6fdea23da2b9
user:      Steve Borho <steve at borho.org>
date:      Mon Oct 07 12:38:56 2013 -0500
description:
ipfilterharness: remove test harnesses for removed primitives
Subject: [x265] ipfilter: remove unused filterRow primitives

details:   http://hg.videolan.org/x265/rev/808210e75c21
branches:  
changeset: 4252:808210e75c21
user:      Steve Borho <steve at borho.org>
date:      Sun Oct 06 22:32:55 2013 -0500
description:
ipfilter: remove unused filterRow primitives
Subject: [x265] primitives: remove obsolete FilterConf enum

details:   http://hg.videolan.org/x265/rev/69d2774132c4
branches:  
changeset: 4253:69d2774132c4
user:      Steve Borho <steve at borho.org>
date:      Sun Oct 06 22:40:06 2013 -0500
description:
primitives: remove obsolete FilterConf enum
Subject: [x265] primitives: remove unused function decl

details:   http://hg.videolan.org/x265/rev/c433691041a2
branches:  
changeset: 4254:c433691041a2
user:      Steve Borho <steve at borho.org>
date:      Sun Oct 06 22:41:32 2013 -0500
description:
primitives: remove unused function decl
Subject: [x265] primitives: rename blockfil_s to blockfill_s_c

details:   http://hg.videolan.org/x265/rev/bed5c2765dc8
branches:  
changeset: 4255:bed5c2765dc8
user:      Steve Borho <steve at borho.org>
date:      Sun Oct 06 22:44:52 2013 -0500
description:
primitives: rename blockfil_s to blockfill_s_c
Subject: [x265] pixel: simplify sad_24 to make easier to maintain

details:   http://hg.videolan.org/x265/rev/2556af7a5c0d
branches:  
changeset: 4256:2556af7a5c0d
user:      Dnyaneshwar Gorade <dnyaneshwar at multicorewareinc.com>
date:      Mon Oct 07 13:54:50 2013 +0530
description:
pixel: simplify sad_24 to make easier to maintain
Subject: [x265] pixel: simplify sad_32 to make it easier to maintain

details:   http://hg.videolan.org/x265/rev/b52b52cd0f77
branches:  
changeset: 4257:b52b52cd0f77
user:      Dnyaneshwar Gorade <dnyaneshwar at multicorewareinc.com>
date:      Mon Oct 07 14:05:40 2013 +0530
description:
pixel: simplify sad_32 to make it easier to maintain
Subject: [x265] pixel: simplify sad_x3_12 to make it easier to maintain

details:   http://hg.videolan.org/x265/rev/afcfd17e395f
branches:  
changeset: 4258:afcfd17e395f
user:      Dnyaneshwar Gorade <dnyaneshwar at multicorewareinc.com>
date:      Mon Oct 07 15:23:21 2013 +0530
description:
pixel: simplify sad_x3_12 to make it easier to maintain
Subject: [x265] pixel: simplify sad_12 to make easier to maintain

details:   http://hg.videolan.org/x265/rev/b8756aa16d1a
branches:  
changeset: 4259:b8756aa16d1a
user:      Dnyaneshwar Gorade <dnyaneshwar at multicorewareinc.com>
date:      Mon Oct 07 13:19:38 2013 +0530
description:
pixel: simplify sad_12 to make easier to maintain
Subject: [x265] pixel: simplify sad_x3_24 to make it easier to maintain

details:   http://hg.videolan.org/x265/rev/908f617c8847
branches:  
changeset: 4260:908f617c8847
user:      Dnyaneshwar Gorade <dnyaneshwar at multicorewareinc.com>
date:      Mon Oct 07 15:39:31 2013 +0530
description:
pixel: simplify sad_x3_24 to make it easier to maintain
Subject: [x265] pixel: simplify sad_x3_32 to make it easier to maintain

details:   http://hg.videolan.org/x265/rev/91df941f46bc
branches:  
changeset: 4261:91df941f46bc
user:      Dnyaneshwar Gorade <dnyaneshwar at multicorewareinc.com>
date:      Mon Oct 07 15:49:25 2013 +0530
description:
pixel: simplify sad_x3_32 to make it easier to maintain
Subject: [x265] pixel: simplify sad_x4_12 to make it easier to maintain

details:   http://hg.videolan.org/x265/rev/d6dc18f9cead
branches:  
changeset: 4262:d6dc18f9cead
user:      Dnyaneshwar Gorade <dnyaneshwar at multicorewareinc.com>
date:      Mon Oct 07 16:19:38 2013 +0530
description:
pixel: simplify sad_x4_12 to make it easier to maintain
Subject: [x265] pixel: simplify sad_x4_24 to make it easier to maintain

details:   http://hg.videolan.org/x265/rev/9facd6b0a9f8
branches:  
changeset: 4263:9facd6b0a9f8
user:      Dnyaneshwar Gorade <dnyaneshwar at multicorewareinc.com>
date:      Mon Oct 07 16:29:42 2013 +0530
description:
pixel: simplify sad_x4_24 to make it easier to maintain
Subject: [x265] pixel: simplify sad_x4_32 to make it easier to maintain

details:   http://hg.videolan.org/x265/rev/b6f29369879c
branches:  
changeset: 4264:b6f29369879c
user:      Dnyaneshwar Gorade <dnyaneshwar at multicorewareinc.com>
date:      Mon Oct 07 16:36:05 2013 +0530
description:
pixel: simplify sad_x4_32 to make it easier to maintain
Subject: [x265] pixel: replace Residual4 vector class with intrinsic

details:   http://hg.videolan.org/x265/rev/5a0c772fd165
branches:  
changeset: 4265:5a0c772fd165
user:      Yuvaraj Venkatesh <yuvaraj at multicorewareinc.com>
date:      Mon Oct 07 19:14:25 2013 +0530
description:
pixel: replace Residual4 vector class with intrinsic
Subject: [x265] pixel: replace getResidual8 vector class with intrinsic

details:   http://hg.videolan.org/x265/rev/5be3fea0721a
branches:  
changeset: 4266:5be3fea0721a
user:      Yuvaraj Venkatesh <yuvaraj at multicorewareinc.com>
date:      Mon Oct 07 19:36:49 2013 +0530
description:
pixel: replace getResidual8 vector class with intrinsic
Subject: [x265] pixel: move intrinsic getResidual4 and getResidual8 to pixel-sse3.cpp

details:   http://hg.videolan.org/x265/rev/baf9d1d30a9c
branches:  
changeset: 4267:baf9d1d30a9c
user:      Steve Borho <steve at borho.org>
date:      Mon Oct 07 12:50:24 2013 -0500
description:
pixel: move intrinsic getResidual4 and getResidual8 to pixel-sse3.cpp
Subject: [x265] pixel: fix spelling of blockfill functions, add calcresidual functions

details:   http://hg.videolan.org/x265/rev/c8b2682f8ee3
branches:  
changeset: 4268:c8b2682f8ee3
user:      Steve Borho <steve at borho.org>
date:      Mon Oct 07 12:51:25 2013 -0500
description:
pixel: fix spelling of blockfill functions, add calcresidual functions
Subject: [x265] pixel: wrap primitives in anononymous namespace (file static)

details:   http://hg.videolan.org/x265/rev/e1be6debf9a7
branches:  
changeset: 4269:e1be6debf9a7
user:      Steve Borho <steve at borho.org>
date:      Mon Oct 07 12:51:54 2013 -0500
description:
pixel: wrap primitives in anononymous namespace (file static)

diffstat:

 source/Lib/TLibCommon/TComTrQuant.cpp |     2 +-
 source/Lib/TLibEncoder/TEncSearch.cpp |    10 +-
 source/common/ipfilter.cpp            |   241 --
 source/common/pixel.cpp               |    10 +-
 source/common/primitives.h            |    48 +-
 source/common/vec/ipfilter-sse41.cpp  |   717 --------
 source/common/vec/pixel-sse3.cpp      |   114 +-
 source/common/vec/pixel-sse41.cpp     |  2693 ++++++++------------------------
 source/common/vec/pixel8.inc          |    34 -
 source/test/ipfilterharness.cpp       |   170 --
 source/test/ipfilterharness.h         |     2 -
 11 files changed, 821 insertions(+), 3220 deletions(-)

diffs (truncated from 4387 to 300 lines):

diff -r c010342f7605 -r e1be6debf9a7 source/Lib/TLibCommon/TComTrQuant.cpp
--- a/source/Lib/TLibCommon/TComTrQuant.cpp	Sun Oct 06 02:09:00 2013 -0500
+++ b/source/Lib/TLibCommon/TComTrQuant.cpp	Mon Oct 07 12:51:54 2013 -0500
@@ -484,7 +484,7 @@ void TComTrQuant::invtransformNxN( bool 
         if (lastPos == 0 && !((width == 4) && (mode != REG_DCT)))
         {
             int dc_val = (((m_tmpCoeff[0] * 64 + 64) >> 7) * 64 + 2048) >> 12;
-            primitives.blockfil_s[log2BlockSize](residual, stride, dc_val);
+            primitives.blockfill_s[log2BlockSize](residual, stride, dc_val);
 
             return;
         }
diff -r c010342f7605 -r e1be6debf9a7 source/Lib/TLibEncoder/TEncSearch.cpp
--- a/source/Lib/TLibEncoder/TEncSearch.cpp	Sun Oct 06 02:09:00 2013 -0500
+++ b/source/Lib/TLibEncoder/TEncSearch.cpp	Mon Oct 07 12:51:54 2013 -0500
@@ -517,7 +517,7 @@ void TEncSearch::xIntraCodingLumaBlk(TCo
     {
         short* resiTmp = residual;
         memset(coeff, 0, sizeof(TCoeff) * width * height);
-        primitives.blockfil_s[size](resiTmp, stride, 0);
+        primitives.blockfill_s[size](resiTmp, stride, 0);
     }
 
     //===== reconstruction =====
@@ -650,7 +650,7 @@ void TEncSearch::xIntraCodingChromaBlk(T
         {
             short* resiTmp = residual;
             memset(coeff, 0, sizeof(TCoeff) * width * height);
-            primitives.blockfil_s[size](resiTmp, stride, 0);
+            primitives.blockfill_s[size](resiTmp, stride, 0);
         }
     }
 
@@ -3217,7 +3217,7 @@ void TEncSearch::xEstimateResidualQT(TCo
             const UInt stride = m_qtTempTComYuv[qtlayer].m_width;
 
             assert(trWidth == trHeight);
-            primitives.blockfil_s[(int)g_convertToBit[trWidth]](ptr, stride, 0);
+            primitives.blockfill_s[(int)g_convertToBit[trWidth]](ptr, stride, 0);
         }
 
         UInt distU = 0;
@@ -3291,7 +3291,7 @@ void TEncSearch::xEstimateResidualQT(TCo
                 const UInt stride = m_qtTempTComYuv[qtlayer].m_cwidth;
 
                 assert(trWidthC == trHeightC);
-                primitives.blockfil_s[(int)g_convertToBit[trWidthC]](ptr, stride, 0);
+                primitives.blockfill_s[(int)g_convertToBit[trWidthC]](ptr, stride, 0);
             }
 
             distV = m_rdCost->scaleChromaDistCr(primitives.sse_sp[partSizeC](resiYuv->getCrAddr(absTUPartIdxC), resiYuv->m_cwidth, m_tempPel, trWidthC));
@@ -3357,7 +3357,7 @@ void TEncSearch::xEstimateResidualQT(TCo
                 const UInt stride = m_qtTempTComYuv[qtlayer].m_cwidth;
 
                 assert(trWidthC == trHeightC);
-                primitives.blockfil_s[(int)g_convertToBit[trWidthC]](ptr, stride, 0);
+                primitives.blockfill_s[(int)g_convertToBit[trWidthC]](ptr, stride, 0);
             }
         }
         cu->setCbfSubParts(absSumY ? setCbf : 0, TEXT_LUMA, absPartIdx, depth);
diff -r c010342f7605 -r e1be6debf9a7 source/common/ipfilter.cpp
--- a/source/common/ipfilter.cpp	Sun Oct 06 02:09:00 2013 -0500
+++ b/source/common/ipfilter.cpp	Mon Oct 07 12:51:54 2013 -0500
@@ -493,240 +493,6 @@ void weightUnidir(short *src, pixel *dst
         dst  += dstStride;
     }
 }
-
-// filterHorizontal, Multiplane, Weighted
-void filterHorizontalWeighted(pixel *src, intptr_t srcStride, short *midF, short* midA, short* midB, short* midC, intptr_t midStride,
-                              pixel *dstF, pixel *dstA, pixel *dstB, pixel *dstC, intptr_t dstStride, int block_width, int block_height,
-                              int marginX, int marginY, int scale, int round, int shift, int offset)
-{
-    filterConvertPelToShort(src, srcStride, midF, midStride, block_width, block_height);
-    filterHorizontal_p_s<8>(src, srcStride, midB, midStride, block_width, block_height, g_lumaFilter[2]);
-    filterHorizontal_p_s<8>(src, srcStride, midA, midStride, block_width, block_height, g_lumaFilter[1]);
-    filterHorizontal_p_s<8>(src, srcStride, midC, midStride, block_width, block_height, g_lumaFilter[3]);
-
-    weightUnidir(midF, dstF, midStride, dstStride, block_width, block_height, scale, round, shift, offset);
-    weightUnidir(midA, dstA, midStride, dstStride, block_width, block_height, scale, round, shift, offset);
-    weightUnidir(midB, dstB, midStride, dstStride, block_width, block_height, scale, round, shift, offset);
-    weightUnidir(midC, dstC, midStride, dstStride, block_width, block_height, scale, round, shift, offset);
-
-    extendPicCompBorder(dstF, dstStride, block_width, block_height, marginX, marginY);
-    extendPicCompBorder(dstA, dstStride, block_width, block_height, marginX, marginY);
-    extendPicCompBorder(dstB, dstStride, block_width, block_height, marginX, marginY);
-    extendPicCompBorder(dstC, dstStride, block_width, block_height, marginX, marginY);
-}
-
-// filterVertical, Multiplane, Weighted
-void filterVerticalWeighted(short *src, intptr_t srcStride, pixel *dstE, pixel *dstI, pixel *dstP,
-                            intptr_t dstStride, int block_width, int block_height, int marginX, int marginY,
-                            int scale, int round, int shift, int offset)
-{
-    short* intI, *intE, *intP;    
-    int intStride = block_width;
-
-    intI = (short*)X265_MALLOC(short, block_height * block_width);
-    intE = (short*)X265_MALLOC(short, block_height * block_width);
-    intP = (short*)X265_MALLOC(short, block_height * block_width);
-
-    filterVertical_s_s<8>(src, srcStride, intI, intStride, block_width, block_height, g_lumaFilter[2]);
-    filterVertical_s_s<8>(src, srcStride, intE, intStride, block_width, block_height, g_lumaFilter[1]);
-    filterVertical_s_s<8>(src, srcStride, intP, intStride, block_width, block_height, g_lumaFilter[3]);
-
-    weightUnidir(intI, dstI, intStride, dstStride,block_width, block_height, scale, round, shift, offset);
-    weightUnidir(intE, dstE, intStride, dstStride,block_width, block_height, scale, round, shift, offset);
-    weightUnidir(intP, dstP, intStride, dstStride,block_width, block_height, scale, round, shift, offset);
-
-    extendPicCompBorder(dstE, dstStride, block_width, block_height, marginX, marginY);
-    extendPicCompBorder(dstI, dstStride, block_width, block_height, marginX, marginY);
-    extendPicCompBorder(dstP, dstStride, block_width, block_height, marginX, marginY);
-
-    X265_FREE(intI);
-    X265_FREE(intE);
-    X265_FREE(intP);
-}
-}
-
-void filterRowH(pixel *src, intptr_t srcStride, short* midA, short* midB, short* midC, intptr_t midStride, pixel *dstA, pixel *dstB, pixel *dstC, int width, int height, int marginX, int marginY, int row, int isLastRow)
-{
-    // Extend FullPel Left and Right
-    extendCURowColBorder(src, srcStride, width, height, marginX);
-
-    // Extend FullPel Top
-    if (row == 0)
-    {
-        for(int y = 0; y < marginY; y++)
-        {
-            ::memcpy(src - marginX - (y + 1) * srcStride, src - marginX, sizeof(pixel) * (width + (marginX << 1)));
-        }
-    }
-
-    // Extend FullPel Bottom
-    if (isLastRow)
-    {
-        for(int y = 0; y < marginY; y++)
-        {
-            ::memcpy(src - marginX + (height + y) * srcStride, src - marginX + (height - 1) * srcStride, sizeof(pixel) * (width + (marginX << 1)));
-        }
-    }
-
-    filterHorizontal_p_s<8>(src - 4, srcStride, midA - 4, midStride, width + 7, height, g_lumaFilter[1]);
-    filterHorizontal_p_s<8>(src - 4, srcStride, midB - 4, midStride, width + 7, height, g_lumaFilter[2]);
-    filterHorizontal_p_s<8>(src - 4, srcStride, midC - 4, midStride, width + 7, height, g_lumaFilter[3]);
-    filterConvertShortToPel(midA - 4, midStride, dstA - 4, srcStride, width + 7, height);
-    filterConvertShortToPel(midB - 4, midStride, dstB - 4, srcStride, width + 7, height);
-    filterConvertShortToPel(midC - 4, midStride, dstC - 4, srcStride, width + 7, height);
-
-    // Extend SubPel Left and Right
-    for(int y = 0; y < height; y++)
-    {
-        for(int x = 0; x < marginX; x++)
-        {
-            // Left
-            if (x < marginX - 4)
-            {
-                dstA[y * srcStride - marginX + x] = dstA[y * srcStride - 4];
-                dstB[y * srcStride - marginX + x] = dstB[y * srcStride - 4];
-                dstC[y * srcStride - marginX + x] = dstC[y * srcStride - 4];
-            }
-
-            // Right
-            if (x > 2)
-            {
-                dstA[y * srcStride + width + x] = dstA[y * srcStride + width + 2];
-                dstB[y * srcStride + width + x] = dstB[y * srcStride + width + 2];
-                dstC[y * srcStride + width + x] = dstC[y * srcStride + width + 2];
-            }
-        }
-    }
-
-    if (row == 0)
-    {
-        // Extend SubPel Top
-        for(int y = 0; y < marginY; y++)
-        {
-            ::memcpy(dstA - marginX - (y + 1) * srcStride, dstA - marginX, sizeof(pixel) * srcStride);
-            ::memcpy(dstB - marginX - (y + 1) * srcStride, dstB - marginX, sizeof(pixel) * srcStride);
-            ::memcpy(dstC - marginX - (y + 1) * srcStride, dstC - marginX, sizeof(pixel) * srcStride);
-        }
-
-        // Extend midPel Top(7 rows)
-        for(int y = 0; y < 7; y++)
-        {
-            ::memcpy(midA - 4 - (y + 1) * midStride, midA - 4, midStride * sizeof(short));
-            ::memcpy(midB - 4 - (y + 1) * midStride, midB - 4, midStride * sizeof(short));
-            ::memcpy(midC - 4 - (y + 1) * midStride, midC - 4, midStride * sizeof(short));
-        }
-    }
-
-    if (isLastRow)
-    {
-        // Extend SubPel Bottom
-        for(int y = 0; y < marginY; y++)
-        {
-            ::memcpy(dstA - marginX + (height + y) * srcStride, dstA - marginX + (height - 1) * srcStride, sizeof(pixel) * srcStride);
-            ::memcpy(dstB - marginX + (height + y) * srcStride, dstB - marginX + (height - 1) * srcStride, sizeof(pixel) * srcStride);
-            ::memcpy(dstC - marginX + (height + y) * srcStride, dstC - marginX + (height - 1) * srcStride, sizeof(pixel) * srcStride);
-        }
-
-        // Extend midPel Bottom(7 rows)
-        for(int y = 0; y < 7; y++)
-        {
-            ::memcpy(midA - 4 + (height + y) * midStride, midA - 4 + (height - 1) * midStride, midStride * sizeof(short));
-            ::memcpy(midB - 4 + (height + y) * midStride, midB - 4 + (height - 1) * midStride, midStride * sizeof(short));
-            ::memcpy(midC - 4 + (height + y) * midStride, midC - 4 + (height - 1) * midStride, midStride * sizeof(short));
-        }
-    }
-}
-
-void filterRowV_0(pixel *src, intptr_t srcStride, pixel *dstA, pixel *dstB, pixel *dstC, int width, int height, int marginX, int marginY, int row, int isLastRow)
-{
-    int row_first = (row == 0 ? 4 : 0);
-    int row_last = (isLastRow ? 3 : 0);
-
-    filterVertical_p_p<8>(src - row_first * srcStride, srcStride, dstA - row_first * srcStride, srcStride, width, height + row_first + row_last, g_lumaFilter[1]);
-    filterVertical_p_p<8>(src - row_first * srcStride, srcStride, dstB - row_first * srcStride, srcStride, width, height + row_first + row_last, g_lumaFilter[2]);
-    filterVertical_p_p<8>(src - row_first * srcStride, srcStride, dstC - row_first * srcStride, srcStride, width, height + row_first + row_last, g_lumaFilter[3]);
-
-    // Extend SubPel Left and Right
-    extendCURowColBorder(dstA - row_first * srcStride, srcStride, width, height + row_first + row_last, marginX);
-    extendCURowColBorder(dstB - row_first * srcStride, srcStride, width, height + row_first + row_last, marginX);
-    extendCURowColBorder(dstC - row_first * srcStride, srcStride, width, height + row_first + row_last, marginX);
-
-    if (row == 0)
-    {
-        // Extend SubPel Top
-        for(int y = row_first; y < marginY; y++)
-        {
-            ::memcpy(dstA - marginX - (y + 1) * srcStride, dstA - marginX - row_first * srcStride, sizeof(pixel) * srcStride);
-            ::memcpy(dstB - marginX - (y + 1) * srcStride, dstB - marginX - row_first * srcStride, sizeof(pixel) * srcStride);
-            ::memcpy(dstC - marginX - (y + 1) * srcStride, dstC - marginX - row_first * srcStride, sizeof(pixel) * srcStride);
-        }
-    }
-
-    if (isLastRow)
-    {
-        // Extend SubPel Bottom
-        for(int y = row_last; y < marginY; y++)
-        {
-            ::memcpy(dstA - marginX + (height + y) * srcStride, dstA - marginX + (height - 1 + row_last) * srcStride, sizeof(pixel) * srcStride);
-            ::memcpy(dstB - marginX + (height + y) * srcStride, dstB - marginX + (height - 1 + row_last) * srcStride, sizeof(pixel) * srcStride);
-            ::memcpy(dstC - marginX + (height + y) * srcStride, dstC - marginX + (height - 1 + row_last) * srcStride, sizeof(pixel) * srcStride);
-        }
-    }
-}
-
-void filterRowV_N(short *midA, intptr_t midStride, pixel *dstA, pixel *dstB, pixel *dstC, intptr_t dstStride, int width, int height, int marginX, int marginY, int row, int isLastRow)
-{
-    int row_first = (row == 0 ? 4 : 0);
-    int row_last = (isLastRow ? 3 : 0);
-
-    filterVertical_s_p<8>(midA - 4 - row_first * midStride, midStride, dstA - 4 - row_first * dstStride, dstStride, width + 7, height + row_first + row_last, g_lumaFilter[1]);
-    filterVertical_s_p<8>(midA - 4 - row_first * midStride, midStride, dstB - 4 - row_first * dstStride, dstStride, width + 7, height + row_first + row_last, g_lumaFilter[2]);
-    filterVertical_s_p<8>(midA - 4 - row_first * midStride, midStride, dstC - 4 - row_first * dstStride, dstStride, width + 7, height + row_first + row_last, g_lumaFilter[3]);
-
-    // Extend SubPel Left and Right
-    for(int y = 0; y < height + row_first + row_last; y++)
-    {
-        for(int x = 0; x < marginX; x++)
-        {
-            // Left
-            if (x < marginX - 4)
-            {
-                dstA[(y - row_first) * dstStride - marginX + x] = dstA[(y - row_first) * dstStride - 4];
-                dstB[(y - row_first) * dstStride - marginX + x] = dstB[(y - row_first) * dstStride - 4];
-                dstC[(y - row_first) * dstStride - marginX + x] = dstC[(y - row_first) * dstStride - 4];
-            }
-
-            // Right
-            if (x > 2)
-            {
-                dstA[(y - row_first) * dstStride + width + x] = dstA[(y - row_first) * dstStride + width + 2];
-                dstB[(y - row_first) * dstStride + width + x] = dstB[(y - row_first) * dstStride + width + 2];
-                dstC[(y - row_first) * dstStride + width + x] = dstC[(y - row_first) * dstStride + width + 2];
-            }
-        }
-    }
-
-    if (row == 0)
-    {
-        // Extend SubPel Top
-        for(int y = row_first; y < marginY; y++)
-        {
-            ::memcpy(dstA - marginX - (y + 1) * dstStride, dstA - marginX - row_first * dstStride, sizeof(pixel) * dstStride);
-            ::memcpy(dstB - marginX - (y + 1) * dstStride, dstB - marginX - row_first * dstStride, sizeof(pixel) * dstStride);
-            ::memcpy(dstC - marginX - (y + 1) * dstStride, dstC - marginX - row_first * dstStride, sizeof(pixel) * dstStride);
-        }
-    }
-
-    if (isLastRow)
-    {
-        // Extend SubPel Bottom
-        for(int y = row_last; y < marginY; y++)
-        {
-            ::memcpy(dstA - marginX + (height + y) * dstStride, dstA - marginX + (height - 1 + row_last) * dstStride, sizeof(pixel) * dstStride);
-            ::memcpy(dstB - marginX + (height + y) * dstStride, dstB - marginX + (height - 1 + row_last) * dstStride, sizeof(pixel) * dstStride);
-            ::memcpy(dstC - marginX + (height + y) * dstStride, dstC - marginX + (height - 1 + row_last) * dstStride, sizeof(pixel) * dstStride);
-        }


More information about the x265-commits mailing list