swscale-test: add CRC output
[ffmpeg.git] / libswscale / swscale-test.c
index 643c17b..51de670 100644 (file)
@@ -28,6 +28,7 @@
 #include "libavcore/imgutils.h"
 #include "libavutil/mem.h"
 #include "libavutil/avutil.h"
+#include "libavutil/crc.h"
 #include "libavutil/pixdesc.h"
 #include "libavutil/lfg.h"
 #include "swscale.h"
@@ -83,6 +84,7 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h,
     int i;
     uint64_t ssdY, ssdU=0, ssdV=0, ssdA=0;
     struct SwsContext *dstContext = NULL, *outContext = NULL;
+    uint32_t crc = 0;
     int res = 0;
 
     av_fill_image_linesizes(dstStride, dstFormat, dstW);
@@ -135,6 +137,10 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h,
     sws_scale(dstContext, src, srcStride, 0, srcH, dst, dstStride);
     sws_scale(outContext, dst, dstStride, 0, dstH, out, refStride);
 
+    for (i = 0; i < 4 && dstStride[i]; i++) {
+        crc = av_crc(av_crc_get_table(AV_CRC_32_IEEE), crc, dst[i], dstStride[i] * dstH);
+    }
+
     ssdY= getSSD(ref[0], out[0], refStride[0], refStride[0], w, h);
     if (hasChroma(srcFormat) && hasChroma(dstFormat)) {
         //FIXME check that output is really gray
@@ -149,8 +155,8 @@ static int doTest(uint8_t *ref[4], int refStride[4], int w, int h,
     ssdV/= w*h/4;
     ssdA/= w*h;
 
-    printf(" SSD=%5"PRId64",%5"PRId64",%5"PRId64",%5"PRId64"\n",
-           ssdY, ssdU, ssdV, ssdA);
+    printf(" CRC=%08x SSD=%5"PRId64",%5"PRId64",%5"PRId64",%5"PRId64"\n",
+           crc, ssdY, ssdU, ssdV, ssdA);
 
 end: