[x265] [PATCH] Stress test case for pixel_add_ps and pixel_sub_ps

Murugan Vairavel murugan at multicorewareinc.com
Tue Jan 28 11:03:03 CET 2014


# HG changeset patch
# User Murugan Vairavel <murugan at multicorewareinc.com>
# Date 1390903129 -19800
#      Tue Jan 28 15:28:49 2014 +0530
# Node ID ad69e508afdd44244a1289cd2d785a7fe0946144
# Parent  3568c1b19947f8641504c69bca6ab859ed11825e
Stress test case for pixel_add_ps and pixel_sub_ps

diff -r 3568c1b19947 -r ad69e508afdd source/test/pixelharness.cpp
--- a/source/test/pixelharness.cpp Tue Jan 28 01:49:03 2014 -0600
+++ b/source/test/pixelharness.cpp Tue Jan 28 15:28:49 2014 +0530
@@ -45,12 +45,17 @@
     pbuf2 = (pixel*)X265_MALLOC(pixel, bufsize);
     pbuf3 = (pixel*)X265_MALLOC(pixel, bufsize);
     pbuf4 = (pixel*)X265_MALLOC(pixel, bufsize);
+    pixel_buff_min = (pixel*)X265_MALLOC(pixel, bufsize);
+    pixel_buff_max = (pixel*)X265_MALLOC(pixel, bufsize);
+

     ibuf1 = (int*)X265_MALLOC(int, bufsize);

     sbuf1 = (int16_t*)X265_MALLOC(int16_t, bufsize);
     sbuf2 = (int16_t*)X265_MALLOC(int16_t, bufsize);
     sbuf3 = (int16_t*)X265_MALLOC(int16_t, bufsize);
+    sbuff_min = (int16_t*)X265_MALLOC(int16_t, bufsize);
+    sbuff_max = (int16_t*)X265_MALLOC(int16_t, bufsize);

     if (!pbuf1 || !pbuf2 || !pbuf3 || !pbuf4 || !sbuf1 || !sbuf2 || !sbuf3
|| !ibuf1)
     {
@@ -58,6 +63,7 @@
         exit(1);
     }

+#define SMAX (1 << 12)
     for (int i = 0; i < bufsize; i++)
     {
         pbuf1[i] = rand() & PIXEL_MAX;
@@ -65,13 +71,17 @@
         pbuf3[i] = rand() & PIXEL_MAX;
         pbuf4[i] = rand() & PIXEL_MAX;

-#define SMAX (1 << 12)
         sbuf1[i] = (rand() % (2 * SMAX + 1)) - SMAX - 1; //max(SHORT_MIN,
min(rand(), SMAX));
         sbuf2[i] = (rand() % (2 * SMAX + 1)) - SMAX - 1; //max(SHORT_MIN,
min(rand(), SMAX));
         ibuf1[i] = (rand() % (2 * SMAX + 1)) - SMAX - 1;

         sbuf3[i] = rand() % PIXEL_MAX; // for blockcopy only
     }
+
+    memset(pixel_buff_min, PIXEL_MIN, bufsize);
+    memset(pixel_buff_max, PIXEL_MAX, bufsize);
+    memset(sbuff_min, SHORT_MIN, bufsize);
+    memset(sbuff_max, SMAX - 1, bufsize);
 }

 PixelHarness::~PixelHarness()
@@ -83,6 +93,10 @@
     X265_FREE(sbuf1);
     X265_FREE(sbuf2);
     X265_FREE(sbuf3);
+    X265_FREE(sbuff_min);
+    X265_FREE(sbuff_max);
+    X265_FREE(pixel_buff_min);
+    X265_FREE(pixel_buff_max);
 }

 bool PixelHarness::check_pixelcmp(pixelcmp_t ref, pixelcmp_t opt)
@@ -604,6 +618,46 @@
         j += INCR;
     }

+//Stress Test for (Minimum, Maximum)
+        opt(opt_dest, 64, pixel_buff_min, pixel_buff_max, STRIDE, STRIDE);
+        ref(ref_dest, 64, pixel_buff_min,pixel_buff_max, STRIDE, STRIDE);
+
+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(int16_t)))
+        {
+            printf("pixel_sub_ps stress test(Minimum, Maximum) failed\n");
+            return false;
+        }
+
+//Stress Test for (Maximum, Minimum)
+        opt(opt_dest, 64, pixel_buff_max, pixel_buff_min, STRIDE, STRIDE);
+        ref(ref_dest, 64, pixel_buff_max, pixel_buff_min, STRIDE, STRIDE);
+
+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(int16_t)))
+        {
+            printf("pixel_sub_ps stress test(Maximum, Minimum) failed\n");
+            return false;
+        }
+
+//Stress Test for (Maximum, Maximum)
+        opt(opt_dest, 64, pixel_buff_max, pixel_buff_max, STRIDE, STRIDE);
+        ref(ref_dest, 64, pixel_buff_max, pixel_buff_max, STRIDE, STRIDE);
+
+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(int16_t)))
+        {
+            printf("pixel_sub_ps stress test(Maximum, Maximum) failed\n");
+            return false;
+        }
+
+//Stress Test for (Minimum, Minimum)
+        opt(opt_dest, 64, pixel_buff_min, pixel_buff_min, STRIDE, STRIDE);
+        ref(ref_dest, 64, pixel_buff_min, pixel_buff_min, STRIDE, STRIDE);
+
+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(int16_t)))
+        {
+            printf("pixel_sub_ps stress test(Minimum, Minimum) failed\n");
+            return false;
+        }
+
     return true;
 }

@@ -682,6 +736,62 @@
         j += INCR;
     }

+//Stress Test for (Minimum, Maximum)
+#if HIGH_BIT_DEPTH
+    int old_depth = X265_DEPTH;
+    X265_DEPTH = 10;
+#endif
+        opt(opt_dest, 64, pixel_buff_min, sbuff_max, STRIDE, STRIDE);
+        ref(ref_dest, 64, pixel_buff_min, sbuff_max, STRIDE, STRIDE);
+
+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)))
+        {
+            printf("pixel_add_ps stress test(Minimum, Maximum) failed\n");
+#if HIGH_BIT_DEPTH
+            X265_DEPTH = old_depth;
+#endif
+            return false;
+        }
+
+//Stress Test for (Maximum, Minimum)
+        opt(opt_dest, 64, pixel_buff_max, sbuff_min, STRIDE, STRIDE);
+        ref(ref_dest, 64, pixel_buff_max, sbuff_min, STRIDE, STRIDE);
+
+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)))
+        {
+            printf("pixel_add_ps stress test(Maximum, Minimum) failed\n");
+#if HIGH_BIT_DEPTH
+            X265_DEPTH = old_depth;
+#endif
+            return false;
+        }
+
+//Stress Test for (Maximum, Maximum)
+        opt(opt_dest, 64, pixel_buff_max, sbuff_max, STRIDE, STRIDE);
+        ref(ref_dest, 64, pixel_buff_max, sbuff_max, STRIDE, STRIDE);
+
+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)))
+        {
+            printf("pixel_add_ps stress test(Maximum, Maximum) failed\n");
+#if HIGH_BIT_DEPTH
+            X265_DEPTH = old_depth;
+#endif
+            return false;
+        }
+
+//Stress Test for (Minimum, Minimum)
+        opt(opt_dest, 64, pixel_buff_min, sbuff_min, STRIDE, STRIDE);
+        ref(ref_dest, 64, pixel_buff_min, sbuff_min, STRIDE, STRIDE);
+
+        if (memcmp(ref_dest, opt_dest, 64 * 64 * sizeof(pixel)))
+        {
+            printf("pixel_add_ps stress test(Minimum, Minimum) failed\n");
+#if HIGH_BIT_DEPTH
+            X265_DEPTH = old_depth;
+#endif
+            return false;
+        }
+
 #if HIGH_BIT_DEPTH
     X265_DEPTH = old_depth;
 #endif
@@ -1297,17 +1407,6 @@
             HEADER("[%s]  add_ps[%s]", x265_source_csp_names[i],
chromaPartStr[part]);
             REPORT_SPEEDUP(opt.chroma[i].add_ps[part],
ref.chroma[i].add_ps[part], pbuf1, FENC_STRIDE, pbuf2, sbuf1, STRIDE,
STRIDE);
         }
-        if (opt.chroma[i].addAvg[part])
-        {
-            HEADER("[%s]  add_ps[%s]", x265_source_csp_names[i],
chromaPartStr[part]);
-            REPORT_SPEEDUP(opt.chroma[i].addAvg[part],
ref.chroma[i].addAvg[part], pbuf1, STRIDE, sbuf1, STRIDE, sbuf2, STRIDE);
-        }
-    }
-
-    if (opt.luma_addAvg[part])
-    {
-        printf("luma_addAvg[%s]", lumaPartStr[part]);
-        REPORT_SPEEDUP(opt.luma_addAvg[part], ref.luma_addAvg[part],
pbuf1, STRIDE, sbuf1, STRIDE, sbuf2, STRIDE);
     }

 #undef HEADER
diff -r 3568c1b19947 -r ad69e508afdd source/test/pixelharness.h
--- a/source/test/pixelharness.h Tue Jan 28 01:49:03 2014 -0600
+++ b/source/test/pixelharness.h Tue Jan 28 15:28:49 2014 +0530
@@ -31,11 +31,12 @@
 {
 protected:

-    pixel *pbuf1, *pbuf2, *pbuf3, *pbuf4;
+    pixel *pbuf1, *pbuf2, *pbuf3, *pbuf4, *pixel_buff_min, *pixel_buff_max;

     int *ibuf1;

-    int16_t *sbuf1, *sbuf2, *sbuf3;
+    int16_t *sbuf1, *sbuf2, *sbuf3,*sbuff_min, *sbuff_max;
+

     bool check_pixelcmp(pixelcmp_t ref, pixelcmp_t opt);
     bool check_pixelcmp_sp(pixelcmp_sp_t ref, pixelcmp_sp_t opt);
diff -r 3568c1b19947 -r ad69e508afdd source/test/testharness.h
--- a/source/test/testharness.h Tue Jan 28 01:49:03 2014 -0600
+++ b/source/test/testharness.h Tue Jan 28 15:28:49 2014 +0530
@@ -36,6 +36,7 @@
 #define BIT_DEPTH 8
 #endif
 #define PIXEL_MAX ((1 << BIT_DEPTH) - 1)
+#define PIXEL_MIN 0
 #define SHORT_MAX  32767
 #define SHORT_MIN -32767
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20140128/0e76bbf7/attachment-0001.html>


More information about the x265-devel mailing list