<div dir="ltr"><div><div># HG changeset patch</div><div># User Murugan Vairavel <<a href="mailto:murugan@multicorewareinc.com">murugan@multicorewareinc.com</a>></div><div># Date 1390903129 -19800</div><div>#      Tue Jan 28 15:28:49 2014 +0530</div>
<div># Node ID ad69e508afdd44244a1289cd2d785a7fe0946144</div><div># Parent  3568c1b19947f8641504c69bca6ab859ed11825e</div><div>Stress test case for pixel_add_ps and pixel_sub_ps</div><div><br></div><div>diff -r 3568c1b19947 -r ad69e508afdd source/test/pixelharness.cpp</div>
<div>--- a/source/test/pixelharness.cpp<span class="" style="white-space:pre">  </span>Tue Jan 28 01:49:03 2014 -0600</div><div>+++ b/source/test/pixelharness.cpp<span class="" style="white-space:pre">   </span>Tue Jan 28 15:28:49 2014 +0530</div>
<div>@@ -45,12 +45,17 @@</div><div>     pbuf2 = (pixel*)X265_MALLOC(pixel, bufsize);</div><div>     pbuf3 = (pixel*)X265_MALLOC(pixel, bufsize);</div><div>     pbuf4 = (pixel*)X265_MALLOC(pixel, bufsize);</div><div>+    pixel_buff_min = (pixel*)X265_MALLOC(pixel, bufsize);</div>
<div>+    pixel_buff_max = (pixel*)X265_MALLOC(pixel, bufsize);</div><div>+</div><div> </div><div>     ibuf1 = (int*)X265_MALLOC(int, bufsize);</div><div> </div><div>     sbuf1 = (int16_t*)X265_MALLOC(int16_t, bufsize);</div>
<div>     sbuf2 = (int16_t*)X265_MALLOC(int16_t, bufsize);</div><div>     sbuf3 = (int16_t*)X265_MALLOC(int16_t, bufsize);</div><div>+    sbuff_min = (int16_t*)X265_MALLOC(int16_t, bufsize);</div><div>+    sbuff_max = (int16_t*)X265_MALLOC(int16_t, bufsize);</div>
<div> </div><div>     if (!pbuf1 || !pbuf2 || !pbuf3 || !pbuf4 || !sbuf1 || !sbuf2 || !sbuf3 || !ibuf1)</div><div>     {</div><div>@@ -58,6 +63,7 @@</div><div>         exit(1);</div><div>     }</div><div> </div><div>+#define SMAX (1 << 12)</div>
<div>     for (int i = 0; i < bufsize; i++)</div><div>     {</div><div>         pbuf1[i] = rand() & PIXEL_MAX;</div><div>@@ -65,13 +71,17 @@</div><div>         pbuf3[i] = rand() & PIXEL_MAX;</div><div>         pbuf4[i] = rand() & PIXEL_MAX;</div>
<div> </div><div>-#define SMAX (1 << 12)</div><div>         sbuf1[i] = (rand() % (2 * SMAX + 1)) - SMAX - 1; //max(SHORT_MIN, min(rand(), SMAX));</div><div>         sbuf2[i] = (rand() % (2 * SMAX + 1)) - SMAX - 1; //max(SHORT_MIN, min(rand(), SMAX));</div>
<div>         ibuf1[i] = (rand() % (2 * SMAX + 1)) - SMAX - 1;</div><div> </div><div>         sbuf3[i] = rand() % PIXEL_MAX; // for blockcopy only</div><div>     }</div><div>+</div><div>+    memset(pixel_buff_min, PIXEL_MIN, bufsize);</div>
<div>+    memset(pixel_buff_max, PIXEL_MAX, bufsize);</div><div>+    memset(sbuff_min, SHORT_MIN, bufsize);</div><div>+    memset(sbuff_max, SMAX - 1, bufsize);</div><div> }</div><div> </div><div> PixelHarness::~PixelHarness()</div>
<div>@@ -83,6 +93,10 @@</div><div>     X265_FREE(sbuf1);</div><div>     X265_FREE(sbuf2);</div><div>     X265_FREE(sbuf3);</div><div>+    X265_FREE(sbuff_min);</div><div>+    X265_FREE(sbuff_max);</div><div>+    X265_FREE(pixel_buff_min);</div>
<div>+    X265_FREE(pixel_buff_max);</div><div> }</div><div> </div><div> bool PixelHarness::check_pixelcmp(pixelcmp_t ref, pixelcmp_t opt)</div><div>@@ -604,6 +618,46 @@</div><div>         j += INCR;</div><div>     }</div>
<div> </div><div>+//Stress Test for (Minimum, Maximum)</div><div>+        opt(opt_dest, 64, pixel_buff_min, pixel_buff_max, STRIDE, STRIDE);</div><div>+        ref(ref_dest, 64, pixel_buff_min,pixel_buff_max, STRIDE, STRIDE);</div>
<div>+</div><div>+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(int16_t)))</div><div>+        {</div><div>+            printf("pixel_sub_ps stress test(Minimum, Maximum) failed\n");</div><div>+            return false;</div>
<div>+        }</div><div>+</div><div>+//Stress Test for (Maximum, Minimum)</div><div>+        opt(opt_dest, 64, pixel_buff_max, pixel_buff_min, STRIDE, STRIDE);</div><div>+        ref(ref_dest, 64, pixel_buff_max, pixel_buff_min, STRIDE, STRIDE);</div>
<div>+</div><div>+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(int16_t)))</div><div>+        {</div><div>+            printf("pixel_sub_ps stress test(Maximum, Minimum) failed\n");</div><div>+            return false;</div>
<div>+        }</div><div>+</div><div>+//Stress Test for (Maximum, Maximum)</div><div>+        opt(opt_dest, 64, pixel_buff_max, pixel_buff_max, STRIDE, STRIDE);</div><div>+        ref(ref_dest, 64, pixel_buff_max, pixel_buff_max, STRIDE, STRIDE);</div>
<div>+</div><div>+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(int16_t)))</div><div>+        {</div><div>+            printf("pixel_sub_ps stress test(Maximum, Maximum) failed\n");</div><div>+            return false;</div>
<div>+        }</div><div>+</div><div>+//Stress Test for (Minimum, Minimum)</div><div>+        opt(opt_dest, 64, pixel_buff_min, pixel_buff_min, STRIDE, STRIDE);</div><div>+        ref(ref_dest, 64, pixel_buff_min, pixel_buff_min, STRIDE, STRIDE);</div>
<div>+</div><div>+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(int16_t)))</div><div>+        {</div><div>+            printf("pixel_sub_ps stress test(Minimum, Minimum) failed\n");</div><div>+            return false;</div>
<div>+        }</div><div>+</div><div>     return true;</div><div> }</div><div> </div><div>@@ -682,6 +736,62 @@</div><div>         j += INCR;</div><div>     }</div><div> </div><div>+//Stress Test for (Minimum, Maximum)</div>
<div>+#if HIGH_BIT_DEPTH</div><div>+    int old_depth = X265_DEPTH;</div><div>+    X265_DEPTH = 10;</div><div>+#endif</div><div>+        opt(opt_dest, 64, pixel_buff_min, sbuff_max, STRIDE, STRIDE);</div><div>+        ref(ref_dest, 64, pixel_buff_min, sbuff_max, STRIDE, STRIDE);</div>
<div>+</div><div>+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)))</div><div>+        {</div><div>+            printf("pixel_add_ps stress test(Minimum, Maximum) failed\n");</div><div>+#if HIGH_BIT_DEPTH</div>
<div>+            X265_DEPTH = old_depth;</div><div>+#endif</div><div>+            return false;</div><div>+        }</div><div>+</div><div>+//Stress Test for (Maximum, Minimum)</div><div>+        opt(opt_dest, 64, pixel_buff_max, sbuff_min, STRIDE, STRIDE);</div>
<div>+        ref(ref_dest, 64, pixel_buff_max, sbuff_min, STRIDE, STRIDE);</div><div>+</div><div>+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)))</div><div>+        {</div><div>+            printf("pixel_add_ps stress test(Maximum, Minimum) failed\n");</div>
<div>+#if HIGH_BIT_DEPTH</div><div>+            X265_DEPTH = old_depth;</div><div>+#endif</div><div>+            return false;</div><div>+        }</div><div>+</div><div>+//Stress Test for (Maximum, Maximum)</div><div>+        opt(opt_dest, 64, pixel_buff_max, sbuff_max, STRIDE, STRIDE);</div>
<div>+        ref(ref_dest, 64, pixel_buff_max, sbuff_max, STRIDE, STRIDE);</div><div>+</div><div>+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)))</div><div>+        {</div><div>+            printf("pixel_add_ps stress test(Maximum, Maximum) failed\n");</div>
<div>+#if HIGH_BIT_DEPTH</div><div>+            X265_DEPTH = old_depth;</div><div>+#endif</div><div>+            return false;</div><div>+        }</div><div>+</div><div>+//Stress Test for (Minimum, Minimum)</div><div>+        opt(opt_dest, 64, pixel_buff_min, sbuff_min, STRIDE, STRIDE);</div>
<div>+        ref(ref_dest, 64, pixel_buff_min, sbuff_min, STRIDE, STRIDE);</div><div>+</div><div>+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)))</div><div>+        {</div><div>+            printf("pixel_add_ps stress test(Minimum, Minimum) failed\n");</div>
<div>+#if HIGH_BIT_DEPTH</div><div>+            X265_DEPTH = old_depth;</div><div>+#endif</div><div>+            return false;</div><div>+        }</div><div>+</div><div> #if HIGH_BIT_DEPTH</div><div>     X265_DEPTH = old_depth;</div>
<div> #endif</div><div>@@ -1297,17 +1407,6 @@</div><div>             HEADER("[%s]  add_ps[%s]", x265_source_csp_names[i], chromaPartStr[part]);</div><div>             REPORT_SPEEDUP(opt.chroma[i].add_ps[part], ref.chroma[i].add_ps[part], pbuf1, FENC_STRIDE, pbuf2, sbuf1, STRIDE, STRIDE);</div>
<div>         }</div><div>-        if (opt.chroma[i].addAvg[part])</div><div>-        {</div><div>-            HEADER("[%s]  add_ps[%s]", x265_source_csp_names[i], chromaPartStr[part]);</div><div>-            REPORT_SPEEDUP(opt.chroma[i].addAvg[part], ref.chroma[i].addAvg[part], pbuf1, STRIDE, sbuf1, STRIDE, sbuf2, STRIDE);</div>
<div>-        }</div><div>-    }</div><div>-</div><div>-    if (opt.luma_addAvg[part])</div><div>-    {</div><div>-        printf("luma_addAvg[%s]", lumaPartStr[part]);</div><div>-        REPORT_SPEEDUP(opt.luma_addAvg[part], ref.luma_addAvg[part], pbuf1, STRIDE, sbuf1, STRIDE, sbuf2, STRIDE);</div>
<div>     }</div><div> </div><div> #undef HEADER</div><div>diff -r 3568c1b19947 -r ad69e508afdd source/test/pixelharness.h</div><div>--- a/source/test/pixelharness.h<span class="" style="white-space:pre">    </span>Tue Jan 28 01:49:03 2014 -0600</div>
<div>+++ b/source/test/pixelharness.h<span class="" style="white-space:pre">    </span>Tue Jan 28 15:28:49 2014 +0530</div><div>@@ -31,11 +31,12 @@</div><div> {</div><div> protected:</div><div> </div><div>-    pixel *pbuf1, *pbuf2, *pbuf3, *pbuf4;</div>
<div>+    pixel *pbuf1, *pbuf2, *pbuf3, *pbuf4, *pixel_buff_min, *pixel_buff_max;</div><div> </div><div>     int *ibuf1;</div><div> </div><div>-    int16_t *sbuf1, *sbuf2, *sbuf3;</div><div>+    int16_t *sbuf1, *sbuf2, *sbuf3,*sbuff_min, *sbuff_max;</div>
<div>+</div><div> </div><div>     bool check_pixelcmp(pixelcmp_t ref, pixelcmp_t opt);</div><div>     bool check_pixelcmp_sp(pixelcmp_sp_t ref, pixelcmp_sp_t opt);</div><div>diff -r 3568c1b19947 -r ad69e508afdd source/test/testharness.h</div>
<div>--- a/source/test/testharness.h<span class="" style="white-space:pre">     </span>Tue Jan 28 01:49:03 2014 -0600</div><div>+++ b/source/test/testharness.h<span class="" style="white-space:pre">      </span>Tue Jan 28 15:28:49 2014 +0530</div>
<div>@@ -36,6 +36,7 @@</div><div> #define BIT_DEPTH 8</div><div> #endif</div><div> #define PIXEL_MAX ((1 << BIT_DEPTH) - 1)</div><div>+#define PIXEL_MIN 0</div><div> #define SHORT_MAX  32767</div><div> #define SHORT_MIN -32767</div>
</div><br>
</div>