aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-10-21 16:08:16 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-10-24 16:28:14 +0200
commitc76155236fdfab9eb02ac30d2d03380a0648fb84 (patch)
treec9a209e830741d6defb7851a95021d1ba74dfac4
parentd79c240196f43b93bd204363f1facc270029f113 (diff)
downloadffmpeg-c76155236fdfab9eb02ac30d2d03380a0648fb84.tar.gz
avcodec/snow_dwt: Fix left shifts of negative numbers
Affected the vsynth(1|2|_lena)-snow(|-hpel) tests. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r--libavcodec/snow_dwt.c8
1 files 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;