From ebef7fb307c3948e9e00bbfb4ca7dac5476cef0c Mon Sep 17 00:00:00 2001 From: Pascal Massimino Date: Wed, 4 Dec 2013 02:17:37 -0800 Subject: [PATCH] fix -print_psnr / ssim options original/compressed pictures were not converted to an adequate YUVA colorspace before computing the distortion. Change-Id: I37775e9b7dbd6eca16c38e235e1df325858d36a1 --- examples/cwebp.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/examples/cwebp.c b/examples/cwebp.c index 4a0bd20b..0e4f4e5d 100644 --- a/examples/cwebp.c +++ b/examples/cwebp.c @@ -1045,8 +1045,22 @@ int main(int argc, const char *argv[]) { if (!quiet && !short_output && print_distortion >= 0) { // print distortion static const char* distortion_names[] = { "PSNR", "SSIM", "LSIM" }; float values[5]; - WebPPictureDistortion(&picture, &original_picture, - print_distortion, values); + // Comparison is performed in YUVA colorspace. + if (original_picture.use_argb && + !WebPPictureARGBToYUVA(&original_picture, WEBP_YUV420A)) { + fprintf(stderr, "Error while converting original picture to YUVA.\n"); + goto Error; + } + if (picture.use_argb && + !WebPPictureARGBToYUVA(&picture, WEBP_YUV420A)) { + fprintf(stderr, "Error while converting compressed picture to YUVA.\n"); + goto Error; + } + if (!WebPPictureDistortion(&picture, &original_picture, + print_distortion, values)) { + fprintf(stderr, "Error while computing the distortion.\n"); + goto Error; + } fprintf(stderr, "%s: Y:%.2f U:%.2f V:%.2f A:%.2f Total:%.2f\n", distortion_names[print_distortion], values[0], values[1], values[2], values[3], values[4]);