[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