<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Oct 11, 2013 at 5:40 AM, Aarthi Thirumalai <span dir="ltr"><<a href="mailto:aarthi@multicorewareinc.com" target="_blank">aarthi@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 Aarthi Thirumalai<br>
# Date 1381488011 -19800<br>
#      Fri Oct 11 16:10:11 2013 +0530<br>
# Node ID 9b9c6766967dc99cab93c3e09514346606125b3e<br>
# Parent  c6d89dc62e191f56f63dbcb1781a6494da50a70d<br>
primitves: add c primitives for the following :<br>
<br>
compute AC energy for each block<br>
copy pixels of chroma plane<br>
<br>
diff -r c6d89dc62e19 -r 9b9c6766967d source/common/pixel.cpp<br>
--- a/source/common/pixel.cpp   Fri Oct 11 01:47:53 2013 -0500<br>
+++ b/source/common/pixel.cpp   Fri Oct 11 16:10:11 2013 +0530<br>
@@ -688,6 +688,33 @@<br>
     }<br>
     return ssim;<br>
 }<br>
+<br>
+template<int w, int h><br>
+uint64_t pixel_var(pixel *pix, intptr_t i_stride)<br>
+{<br>
+    uint32_t sum = 0, sqr = 0;<br>
+    for (int y = 0; y < h; y++)<br>
+    {<br>
+        for (int x = 0; x < w; x++)<br>
+        {<br>
+            sum += pix[x];<br>
+            sqr += pix[x] * pix[x];<br>
+        }<br>
+        pix += i_stride;<br>
+    }<br>
+    return sum + ((uint64_t)sqr << 32);<br>
+}<br>
+<br></blockquote><div><br></div><div>we should to add a _c suffix to the C primitives, I know we haven't been consistent with that but we should try to catch up</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

+void plane_copy_deinterleave_chroma(pixel *dstu, intptr_t dstuStride, pixel *dstv, intptr_t dstvStride,<br>
+                                    pixel *src,  intptr_t srcStride, int w, int h)<br>
+{<br>
+    for (int y = 0; y < h; y++, dstu += dstuStride, dstv += dstvStride, src += srcStride)<br>
+        for (int x = 0; x < w; x++)<br>
+        {<br>
+            dstu[x] = src[2 * x];<br>
+            dstv[x] = src[2 * x + 1];<br>
+        }<br>
+}<br>
 }  // end anonymous namespace<br>
<br>
 namespace x265 {<br>
@@ -905,5 +932,9 @@<br>
     p.frame_init_lowres_core = frame_init_lowres_core;<br>
     p.ssim_4x4x2_core = ssim_4x4x2_core;<br>
     p.ssim_end_4 = ssim_end_4;<br>
+<br>
+    p.var[PARTITION_16x16] = pixel_var<16,16>;<br>
+    p.var[PARTITION_8x8] = pixel_var<8,8>;<br>
+    p.plane_copy_deinterleave_c = plane_copy_deinterleave_chroma;<br>
 }<br>
 }<br>
diff -r c6d89dc62e19 -r 9b9c6766967d source/common/primitives.h<br>
--- a/source/common/primitives.h        Fri Oct 11 01:47:53 2013 -0500<br>
+++ b/source/common/primitives.h        Fri Oct 11 16:10:11 2013 +0530<br>
@@ -202,6 +202,8 @@<br>
 typedef void (*extendCURowBorder_t)(pixel* txt, intptr_t stride, int width, int height, int marginX);<br>
 typedef void (*ssim_4x4x2_core_t)(const pixel *pix1, intptr_t stride1, const pixel *pix2, intptr_t stride2, ssim_t sums[2][4]);<br>
 typedef float (*ssim_end4_t)(ssim_t sum0[5][4], ssim_t sum1[5][4], int width);<br>
+typedef uint64_t (*var_t)(pixel *pix, intptr_t stride);<br>
+typedef void (*plane_copy_deinterleave_t)(pixel *dstu, intptr_t dstuStride, pixel *dstv, intptr_t dstvStride, pixel *src,  intptr_t srcStride, int w, int h);<br>
<br>
 /* Define a structure containing function pointers to optimized encoder<br>
  * primitives.  Each pointer can reference either an assembly routine,<br>
@@ -261,6 +263,8 @@<br>
     downscale_t     frame_init_lowres_core;<br>
     ssim_4x4x2_core_t ssim_4x4x2_core;<br>
     ssim_end4_t       ssim_end_4;<br>
+    var_t             var[NUM_PARTITIONS];<br>
+    plane_copy_deinterleave_t plane_copy_deinterleave_c;<br></blockquote><div><br></div><div>does the _c at the end here imply chroma?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

 };<br>
<br>
 /* This copy of the table is what gets used by the encoder.<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>