[x265] [PATCH] TshortYUV: Added Primitive Functions for BlockCopy and AddClip for both luma and chroma
gopu at multicorewareinc.com
gopu at multicorewareinc.com
Wed Jul 24 12:55:36 CEST 2013
# HG changeset patch
# User ggopu
# Date 1374663321 -19800
# Node ID 113fcd8b89a607c1d5bad5ae7c943bbf18ad3524
# Parent ad24a3cc9e6db968fdfb1c9fa2c1f8421c674dfb
TshortYUV: Added Primitive Functions for BlockCopy and AddClip for both luma and chroma
diff -r ad24a3cc9e6d -r 113fcd8b89a6 source/common/TShortYUV.cpp
--- a/source/common/TShortYUV.cpp Wed Jul 24 15:21:34 2013 +0530
+++ b/source/common/TShortYUV.cpp Wed Jul 24 16:25:21 2013 +0530
@@ -124,32 +124,19 @@
void TShortYUV::addClipLuma(TShortYUV* srcYuv0, TShortYUV* srcYuv1, unsigned int trUnitIdx, unsigned int partSize)
{
- int x, y;
+ short* Src0 = srcYuv0->getLumaAddr(trUnitIdx, partSize);
+ short* Src1 = srcYuv1->getLumaAddr(trUnitIdx, partSize);
+ short* Dst = getLumaAddr(trUnitIdx, partSize);
- short* pSrc0 = srcYuv0->getLumaAddr(trUnitIdx, partSize);
- short* pSrc1 = srcYuv1->getLumaAddr(trUnitIdx, partSize);
- short* pDst = getLumaAddr(trUnitIdx, partSize);
+ unsigned int Src0Stride = srcYuv0->m_width;
+ unsigned int Src1Stride = srcYuv1->m_width;
+ unsigned int DstStride = m_width;
- unsigned int iSrc0Stride = srcYuv0->m_width;
- unsigned int iSrc1Stride = srcYuv1->m_width;
- unsigned int iDstStride = m_width;
-
- for (y = partSize - 1; y >= 0; y--)
- {
- for (x = partSize - 1; x >= 0; x--)
- {
- pDst[x] = ClipY(pSrc0[x] + pSrc1[x]);
- }
-
- pSrc0 += iSrc0Stride;
- pSrc1 += iSrc1Stride;
- pDst += iDstStride;
- }
+ primitives.pixeladd_ss(partSize, partSize, Dst, DstStride, Src0, Src1, Src0Stride, Src1Stride);
}
void TShortYUV::addClipChroma(TShortYUV* srcYuv0, TShortYUV* srcYuv1, unsigned int trUnitIdx, unsigned int partSize)
{
- int x, y;
short* srcU0 = srcYuv0->getCbAddr(trUnitIdx, partSize);
short* srcU1 = srcYuv1->getCbAddr(trUnitIdx, partSize);
@@ -162,21 +149,8 @@
unsigned int src1Stride = srcYuv1->m_cwidth;
unsigned int dstStride = m_cwidth;
- for (y = partSize - 1; y >= 0; y--)
- {
- for (x = partSize - 1; x >= 0; x--)
- {
- dstU[x] = ClipC(srcU0[x] + srcU1[x]);
- dstV[x] = ClipC(srcV0[x] + srcV1[x]);
- }
-
- srcU0 += src0Stride;
- srcU1 += src1Stride;
- srcV0 += src0Stride;
- srcV1 += src1Stride;
- dstU += dstStride;
- dstV += dstStride;
- }
+ primitives.pixeladd_ss(partSize, partSize, dstU, dstStride, srcU0, srcU1, src0Stride, src1Stride);
+ primitives.pixeladd_ss(partSize, partSize, dstV, dstStride, srcV0, srcV1, src0Stride, src1Stride);
}
#if _MSC_VER
@@ -219,16 +193,7 @@
unsigned int srcStride = m_width;
unsigned int dstStride = dstPicYuv->getStride();
- for (unsigned int y = height; y != 0; y--)
- {
- for (unsigned int x = 0; x < width; x++)
- {
- dst[x] = (Pel)(src[x]);
- }
-
- src += srcStride;
- dst += dstStride;
- }
+ primitives.blockcpy_ps(width, height, dst, dstStride, src, srcStride);
}
Void TShortYUV::copyPartToPartChroma(TShortYUV* dstPicYuv, unsigned int partIdx, unsigned int width, unsigned int height)
@@ -262,19 +227,8 @@
unsigned int srcStride = m_cwidth;
unsigned int dstStride = dstPicYuv->getCStride();
- for (unsigned int y = height; y != 0; y--)
- {
- for (unsigned int x = 0; x < width; x++)
- {
- dstU[x] = (Pel)(srcU[x]);
- dstV[x] = (Pel)(srcV[x]);
- }
-
- srcU += srcStride;
- srcV += srcStride;
- dstU += dstStride;
- dstV += dstStride;
- }
+ primitives.blockcpy_ps(width, height, dstU, dstStride, srcU, srcStride);
+ primitives.blockcpy_ps(width, height, dstV, dstStride, srcV, srcStride);
}
Void TShortYUV::copyPartToPartChroma(TShortYUV* dstPicYuv, unsigned int partIdx, unsigned int width, unsigned int height, unsigned int chromaId)
@@ -339,16 +293,7 @@
Pel* dstU = dstPicYuv->getCbAddr(partIdx);
unsigned int srcStride = m_cwidth;
unsigned int dstStride = dstPicYuv->getCStride();
- for (unsigned int y = height; y != 0; y--)
- {
- for (unsigned int x = 0; x < width; x++)
- {
- dstU[x] = (Pel)(srcU[x]);
- }
-
- srcU += srcStride;
- dstU += dstStride;
- }
+ primitives.blockcpy_ps(width, height, dstU, dstStride, srcU, srcStride);
}
else if (chromaId == 1)
{
@@ -356,16 +301,7 @@
Pel* dstV = dstPicYuv->getCrAddr(partIdx);
unsigned int srcStride = m_cwidth;
unsigned int dstStride = dstPicYuv->getCStride();
- for (unsigned int y = height; y != 0; y--)
- {
- for (unsigned int x = 0; x < width; x++)
- {
- dstV[x] = (Pel)(srcV[x]);
- }
-
- srcV += srcStride;
- dstV += dstStride;
- }
+ primitives.blockcpy_ps(width, height, dstV, dstStride, srcV, srcStride);
}
else
{
@@ -376,18 +312,7 @@
unsigned int srcStride = m_cwidth;
unsigned int dstStride = dstPicYuv->getCStride();
- for (unsigned int y = height; y != 0; y--)
- {
- for (unsigned int x = 0; x < width; x++)
- {
- dstU[x] = (Pel)(srcU[x]);
- dstV[x] = (Pel)(srcV[x]);
- }
-
- srcU += srcStride;
- srcV += srcStride;
- dstU += dstStride;
- dstV += dstStride;
- }
+ primitives.blockcpy_ps(width, height, dstU, dstStride, srcU, srcStride);
+ primitives.blockcpy_ps(width, height, dstV, dstStride, srcV, srcStride);
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: x265.patch
Type: text/x-patch
Size: 5712 bytes
Desc: not available
URL: <http://mailman.videolan.org/private/x265-devel/attachments/20130724/d958cd82/attachment.bin>
More information about the x265-devel
mailing list