<div dir="ltr"><div><div>This patch cannot be accepted. <br><br></div>1. For generic 8bpp I420 optimizations, we can avoid the extra call to partitionFromSizes in chroma by passing in part, instead of partsize. This will remove the downshift and then upscale by 2 (!!)<br>
</div><div><br></div><div>2. We will need to handle multiple color spaces separately as luma and chroma tables are now aligned only for I420.<br></div><div><div><div><div id="__tbSetup"></div></div></div></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Wed, Nov 13, 2013 at 12:31 PM,  <span dir="ltr"><<a href="mailto:murugan@multicorewareinc.com" target="_blank">murugan@multicorewareinc.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
# HG changeset patch<br>
# User Murugan Vairavel <<a href="mailto:murugan@multicorewareinc.com">murugan@multicorewareinc.com</a>><br>
# Date 1384326072 -19800<br>
#      Wed Nov 13 12:31:12 2013 +0530<br>
# Node ID 69d4c1cfc8bed7c63bfdaa1073196e0874d14ebe<br>
# Parent  c4ca80d19105ccf1ba2ec14dd65915f2820a660d<br>
TShortYUV.cpp, added code to use new pixelsub_ps asm primitives<br>
<br>
diff -r c4ca80d19105 -r 69d4c1cfc8be source/common/TShortYUV.cpp<br>
--- a/source/common/TShortYUV.cpp       Tue Nov 12 19:10:23 2013 +0530<br>
+++ b/source/common/TShortYUV.cpp       Wed Nov 13 12:31:12 2013 +0530<br>
@@ -95,7 +95,8 @@<br>
     int src1Stride = srcYuv1->getStride();<br>
     int dstStride  = m_width;<br>
<br>
-    primitives.pixelsub_ps(x, y, dst, dstStride, src0, src1, src0Stride, src1Stride);<br>
+    int part = partitionFromSizes(x, y);<br>
+    primitives.luma_sub_ps[part](dst, dstStride, src0, src1, src0Stride, src1Stride);<br>
 }<br>
<br>
 void TShortYUV::subtractChroma(TComYuv* srcYuv0, TComYuv* srcYuv1, unsigned int trUnitIdx, unsigned int partSize)<br>
@@ -113,8 +114,9 @@<br>
     int src1Stride = srcYuv1->getCStride();<br>
     int dstStride  = m_cwidth;<br>
<br>
-    primitives.pixelsub_ps(x, y, dstU, dstStride, srcU0, srcU1, src0Stride, src1Stride);<br>
-    primitives.pixelsub_ps(x, y, dstV, dstStride, srcV0, srcV1, src0Stride, src1Stride);<br>
+    int part = partitionFromSizes(2 * x, 2 * y);<br>
+    primitives.chroma_sub_ps[part](dstU, dstStride, srcU0, srcU1, src0Stride, src1Stride);<br>
+    primitives.chroma_sub_ps[part](dstV, dstStride, srcV0, srcV1, src0Stride, src1Stride);<br>
 }<br>
<br>
 void TShortYUV::addClip(TShortYUV* srcYuv0, TShortYUV* srcYuv1, unsigned int trUnitIdx, unsigned int partSize)<br>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</blockquote></div><br></div>