From c76155236fdfab9eb02ac30d2d03380a0648fb84 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Fri, 21 Oct 2022 16:08:16 +0200 Subject: [PATCH] avcodec/snow_dwt: Fix left shifts of negative numbers Affected the vsynth(1|2|_lena)-snow(|-hpel) tests. Signed-off-by: Andreas Rheinhardt --- libavcodec/snow_dwt.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libavcodec/snow_dwt.c b/libavcodec/snow_dwt.c index 18b315ef66..965f409002 100644 --- a/libavcodec/snow_dwt.c +++ b/libavcodec/snow_dwt.c @@ -778,10 +778,10 @@ static inline int w_c(struct MpegEncContext *v, const uint8_t *pix1, const uint8 for (i = 0; i < h; i++) { for (j = 0; j < w; j += 4) { - tmp[32 * i + j + 0] = (pix1[j + 0] - pix2[j + 0]) << 4; - tmp[32 * i + j + 1] = (pix1[j + 1] - pix2[j + 1]) << 4; - tmp[32 * i + j + 2] = (pix1[j + 2] - pix2[j + 2]) << 4; - tmp[32 * i + j + 3] = (pix1[j + 3] - pix2[j + 3]) << 4; + tmp[32 * i + j + 0] = (pix1[j + 0] - pix2[j + 0]) * (1 << 4); + tmp[32 * i + j + 1] = (pix1[j + 1] - pix2[j + 1]) * (1 << 4); + tmp[32 * i + j + 2] = (pix1[j + 2] - pix2[j + 2]) * (1 << 4); + tmp[32 * i + j + 3] = (pix1[j + 3] - pix2[j + 3]) * (1 << 4); } pix1 += line_size; pix2 += line_size;