[x265] [PATCH] asm integration for TComYuv::copyPartToPartChroma, TComYuv::copyPartToPartChroma functions

praveen at multicorewareinc.com praveen at multicorewareinc.com
Wed Nov 13 16:17:53 CET 2013


# HG changeset patch
# User Praveen Tiwari
# Date 1384355865 -19800
# Node ID 889ebed2ab37d5cb9e5901ecf4407881fb554f7d
# Parent  db6eaffb8754fcc033d1493afba3a4ee1d03e25f
asm integration for TComYuv::copyPartToPartChroma, TComYuv::copyPartToPartChroma functions

diff -r db6eaffb8754 -r 889ebed2ab37 source/Lib/TLibCommon/TComYuv.cpp
--- a/source/Lib/TLibCommon/TComYuv.cpp	Wed Nov 13 19:24:42 2013 +0530
+++ b/source/Lib/TLibCommon/TComYuv.cpp	Wed Nov 13 20:47:45 2013 +0530
@@ -321,6 +321,8 @@
 
 void TComYuv::copyPartToPartChroma(TComYuv* dstPicYuv, uint32_t partIdx, uint32_t width, uint32_t height, uint32_t chromaId)
 {
+    int part = partitionFromSizes(width, height);
+
     if (chromaId == 0)
     {
         Pel* srcU = getCbAddr(partIdx);
@@ -328,7 +330,7 @@
         if (srcU == dstU) return;
         uint32_t srcstride = getCStride();
         uint32_t dststride = dstPicYuv->getCStride();
-        primitives.blockcpy_pp(width, height, dstU, dststride, srcU, srcstride);
+        primitives.chroma_copy_pp[part](dstU, dststride, srcU, srcstride);
     }
     else if (chromaId == 1)
     {
@@ -337,7 +339,7 @@
         if (srcV == dstV) return;
         uint32_t srcstride = getCStride();
         uint32_t dststride = dstPicYuv->getCStride();
-        primitives.blockcpy_pp(width, height, dstV, dststride, srcV, srcstride);
+        primitives.chroma_copy_pp[part](dstV, dststride, srcV, srcstride);
     }
     else
     {
@@ -348,13 +350,15 @@
         if (srcU == dstU && srcV == dstV) return;
         uint32_t srcstride = getCStride();
         uint32_t dststride = dstPicYuv->getCStride();
-        primitives.blockcpy_pp(width, height, dstU, dststride, srcU, srcstride);
-        primitives.blockcpy_pp(width, height, dstV, dststride, srcV, srcstride);
+        primitives.chroma_copy_pp[part](dstU, dststride, srcU, srcstride);
+        primitives.chroma_copy_pp[part](dstV, dststride, srcV, srcstride);
     }
 }
 
 void TComYuv::copyPartToPartChroma(TShortYUV* dstPicYuv, uint32_t partIdx, uint32_t width, uint32_t height, uint32_t chromaId)
 {
+    int part = partitionFromSizes(width, height);
+
     if (chromaId == 0)
     {
         Pel*   srcU = getCbAddr(partIdx);
@@ -363,7 +367,7 @@
         uint32_t srcstride = getCStride();
         uint32_t dststride = dstPicYuv->m_cwidth;
 
-        primitives.blockcpy_sp(width, height, dstU, dststride, srcU, srcstride);
+        primitives.chroma_copy_ps[part](dstU, dststride, srcU, srcstride);
     }
     else if (chromaId == 1)
     {
@@ -373,7 +377,7 @@
         uint32_t srcstride = getCStride();
         uint32_t dststride = dstPicYuv->m_cwidth;
 
-        primitives.blockcpy_sp(width, height, dstV, dststride, srcV, srcstride);
+        primitives.chroma_copy_ps[part](dstV, dststride, srcV, srcstride);
     }
     else
     {
@@ -385,8 +389,8 @@
         uint32_t srcstride = getCStride();
         uint32_t dststride = dstPicYuv->m_cwidth;
 
-        primitives.blockcpy_sp(width, height, dstU, dststride, srcU, srcstride);
-        primitives.blockcpy_sp(width, height, dstV, dststride, srcV, srcstride);
+        primitives.chroma_copy_ps[part](dstU, dststride, srcU, srcstride);
+        primitives.chroma_copy_ps[part](dstV, dststride, srcV, srcstride);
     }
 }
 


More information about the x265-devel mailing list