[x265] [PATCH] TComYuv::copyToPartYuv, now using asm code for blockcopy_pp

praveen at multicorewareinc.com praveen at multicorewareinc.com
Wed Nov 13 14:54:49 CET 2013


# HG changeset patch
# User Praveen Tiwari
# Date 1384350882 -19800
# Node ID db6eaffb8754fcc033d1493afba3a4ee1d03e25f
# Parent  3d802ec2fbcc83eb7f65010d135a62a608d74142
TComYuv::copyToPartYuv, now using asm code for blockcopy_pp

diff -r 3d802ec2fbcc -r db6eaffb8754 source/Lib/TLibCommon/TComYuv.cpp
--- a/source/Lib/TLibCommon/TComYuv.cpp	Wed Nov 13 19:04:27 2013 +0530
+++ b/source/Lib/TLibCommon/TComYuv.cpp	Wed Nov 13 19:24:42 2013 +0530
@@ -178,11 +178,13 @@
 
 void TComYuv::copyToPartYuv(TComYuv* dstPicYuv, uint32_t uiDstPartIdx)
 {
-    copyToPartLuma(dstPicYuv, uiDstPartIdx);
-    copyToPartChroma(dstPicYuv, uiDstPartIdx);
+    int part = partitionFromSizes(m_width, m_height);
+
+    copyToPartLuma(dstPicYuv, uiDstPartIdx, part);
+    copyToPartChroma(dstPicYuv, uiDstPartIdx, part);
 }
 
-void TComYuv::copyToPartLuma(TComYuv* dstPicYuv, uint32_t uiDstPartIdx)
+void TComYuv::copyToPartLuma(TComYuv* dstPicYuv, uint32_t uiDstPartIdx, uint32_t part)
 {
     Pel* src = m_bufY;
     Pel* dst = dstPicYuv->getLumaAddr(uiDstPartIdx);
@@ -190,11 +192,10 @@
     uint32_t srcstride = getStride();
     uint32_t dststride = dstPicYuv->getStride();
 
-    int part = partitionFromSizes(m_width, m_height);
     primitives.luma_copy_pp[part](dst, dststride, src, srcstride);
 }
 
-void TComYuv::copyToPartChroma(TComYuv* dstPicYuv, uint32_t uiDstPartIdx)
+void TComYuv::copyToPartChroma(TComYuv* dstPicYuv, uint32_t uiDstPartIdx, uint32_t part)
 {
     Pel* srcU = m_bufU;
     Pel* srcV = m_bufV;
@@ -204,8 +205,8 @@
     uint32_t srcstride = getCStride();
     uint32_t dststride = dstPicYuv->getCStride();
 
-    primitives.blockcpy_pp(m_cwidth, m_cheight, dstU, dststride, srcU, srcstride);
-    primitives.blockcpy_pp(m_cwidth, m_cheight, dstV, dststride, srcV, srcstride);
+    primitives.chroma_copy_pp[part](dstU, dststride, srcU, srcstride);
+    primitives.chroma_copy_pp[part](dstV, dststride, srcV, srcstride);
 }
 
 void TComYuv::copyPartToYuv(TComYuv* dstPicYuv, uint32_t partIdx)
diff -r 3d802ec2fbcc -r db6eaffb8754 source/Lib/TLibCommon/TComYuv.h
--- a/source/Lib/TLibCommon/TComYuv.h	Wed Nov 13 19:04:27 2013 +0530
+++ b/source/Lib/TLibCommon/TComYuv.h	Wed Nov 13 19:24:42 2013 +0530
@@ -125,8 +125,8 @@
 
     //  Copy Small YUV buffer to the part of other Big YUV buffer
     void    copyToPartYuv(TComYuv* dstPicYuv, uint32_t uiDstPartIdx);
-    void    copyToPartLuma(TComYuv* dstPicYuv, uint32_t uiDstPartIdx);
-    void    copyToPartChroma(TComYuv* dstPicYuv, uint32_t uiDstPartIdx);
+    void    copyToPartLuma(TComYuv* dstPicYuv, uint32_t uiDstPartIdx, uint32_t part);
+    void    copyToPartChroma(TComYuv* dstPicYuv, uint32_t uiDstPartIdx, uint32_t part);
 
     //  Copy the part of Big YUV buffer to other Small YUV buffer
     void    copyPartToYuv(TComYuv* dstPicYuv, uint32_t srcPartIdx);


More information about the x265-devel mailing list