From: Jim Bankoski Date: Mon, 26 Aug 2013 21:26:38 +0000 (-0700) Subject: Fix Chroma plane md5 check X-Git-Tag: v1.3.0~525^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=af13fbb70f5c0424001115c56cd2ad2e6d85d18f;p=libvpx Fix Chroma plane md5 check Chroma plane MD5 calculation was incorrect for 444 and 422 yuv color spaces. Change-Id: If985396871a2f57db85108a4355172f9793d3007 --- diff --git a/test/md5_helper.h b/test/md5_helper.h index fc1a97479..f34054d6c 100644 --- a/test/md5_helper.h +++ b/test/md5_helper.h @@ -25,9 +25,15 @@ class MD5 { void Add(const vpx_image_t *img) { for (int plane = 0; plane < 3; ++plane) { - uint8_t *buf = img->planes[plane]; - const int h = plane ? (img->d_h + 1) >> 1 : img->d_h; - const int w = plane ? (img->d_w + 1) >> 1 : img->d_w; + const uint8_t *buf = img->planes[plane]; + // Calculate the width and height to do the md5 check. For the chroma + // plane, we never want to round down and thus skip a pixel so if + // we are shifting by 1 (chroma_shift) we add 1 before doing the shift. + // This works only for chroma_shift of 0 and 1. + const int h = plane ? (img->d_h + img->y_chroma_shift) >> + img->y_chroma_shift : img->d_h; + const int w = plane ? (img->d_w + img->x_chroma_shift) >> + img->x_chroma_shift : img->d_w; for (int y = 0; y < h; ++y) { MD5Update(&md5_, buf, w);