<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Oct 21, 2013 at 8:17 AM,  <span dir="ltr"><<a href="mailto:praveen@multicorewareinc.com" target="_blank">praveen@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 Praveen Tiwari<br>
# Date 1382361413 -19800<br>
# Node ID b1b531241d70d96d09436fecad4c55879048c126<br>
# Parent  5fbedc9da1c7201e1cac1c76fdbc5334e349a29d<br>
added C code for chroma filter_vpp function<br>
<br>
diff -r 5fbedc9da1c7 -r b1b531241d70 source/common/ipfilter.cpp<br>
--- a/source/common/ipfilter.cpp        Mon Oct 21 18:27:13 2013 +0530<br>
+++ b/source/common/ipfilter.cpp        Mon Oct 21 18:46:53 2013 +0530<br>
@@ -491,6 +491,80 @@<br>
         dst += dstStride;<br>
     }<br>
 }<br>
+<br>
+template<int N, int width, int height><br>
+void interp_vert_pp_c(pixel *src, intptr_t srcStride, pixel *dst, intptr_t dstStride, int coeffIdx)<br>
+{<br>
+    short c[8];<br>
+    int16_t const * coeff = (N == 4) ? g_chromaFilter[coeffIdx] : g_lumaFilter[coeffIdx];<br></blockquote><div><br></div><div>I know you're copying this code from the other primitive, but this code below is just odd.</div>
<div><br></div><div>Why is it making a copy from an int16_t pointer to a short array?  this is entirely pointless.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

+<br>
+    c[0] = coeff[0];<br>
+    c[1] = coeff[1];<br>
+    if (N >= 4)<br>
+    {<br>
+        c[2] = coeff[2];<br>
+        c[3] = coeff[3];<br>
+    }<br>
+    if (N >= 6)<br>
+    {<br>
+        c[4] = coeff[4];<br>
+        c[5] = coeff[5];<br>
+    }<br>
+    if (N == 8)<br>
+    {<br>
+        c[6] = coeff[6];<br>
+        c[7] = coeff[7];<br>
+    }<br>
+<br>
+    src -= (N / 2 - 1) * srcStride;<br>
+<br>
+    int offset;<br>
+    short maxVal;<br>
+    //int headRoom = IF_INTERNAL_PREC - X265_DEPTH;<br>
+    int shift = IF_FILTER_PREC;<br>
+<br>
+    //shift += headRoom;<br>
+    offset = 1 << (shift - 1);<br>
+    //offset += IF_INTERNAL_OFFS << IF_FILTER_PREC;<br>
+    maxVal = (1 << X265_DEPTH) - 1;<br></blockquote><div><br></div><div>and all these commented lines are also just clutter.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

+<br>
+    int row, col;<br>
+<br>
+    for (row = 0; row < height; row++)<br>
+    {<br>
+        for (col = 0; col < width; col++)<br>
+        {<br>
+            int sum;<br>
+<br>
+            sum  = src[col + 0 * srcStride] * c[0];<br>
+            sum += src[col + 1 * srcStride] * c[1];<br>
+            if (N >= 4)<br>
+            {<br>
+                sum += src[col + 2 * srcStride] * c[2];<br>
+                sum += src[col + 3 * srcStride] * c[3];<br>
+            }<br>
+            if (N >= 6)<br>
+            {<br>
+                sum += src[col + 4 * srcStride] * c[4];<br>
+                sum += src[col + 5 * srcStride] * c[5];<br>
+            }<br></blockquote><div><br></div><div>N is always 4 or 8; why are there three checks?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+            if (N == 8)<br>
+            {<br>
+                sum += src[col + 6 * srcStride] * c[6];<br>
+                sum += src[col + 7 * srcStride] * c[7];<br>
+            }<br>
+<br>
+            short val = (short)((sum + offset) >> shift);<br>
+            val = (val < 0) ? 0 : val;<br>
+            val = (val > maxVal) ? maxVal : val;<br></blockquote><div><br></div><div>we have Clip functions; but they evaluate to the same logic so I guess this is ok for a C primitive.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

+<br>
+            dst[col] = (pixel)val;<br>
+        }<br>
+<br>
+        src += srcStride;<br>
+        dst += dstStride;<br>
+    }<br>
+}<br>
 }<br></blockquote><div><br></div><div>Queueing after cleaning all this up</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
 namespace x265 {<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><br clear="all"><div><br></div>-- <br>Steve Borho
</div></div>