[FFmpeg-cvslog] avfilter/vf_spp: Fix left-shift of negative value
Andreas Rheinhardt
git at videolan.org
Tue Apr 2 01:46:25 EEST 2024
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Fri Mar 29 02:45:51 2024 +0100| [3ed23dab98a1c6246e9b3cf575ec29d245e39f94] | committer: Andreas Rheinhardt
avfilter/vf_spp: Fix left-shift of negative value
Affected the vf-spp FATE-test (on x86 only when MMX
is disabled).
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3ed23dab98a1c6246e9b3cf575ec29d245e39f94
---
libavfilter/vf_spp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavfilter/vf_spp.c b/libavfilter/vf_spp.c
index 48911b296a..d6c7297985 100644
--- a/libavfilter/vf_spp.c
+++ b/libavfilter/vf_spp.c
@@ -172,7 +172,7 @@ static void store_slice_c(uint8_t *dst, const int16_t *src,
int y, x;
#define STORE(pos) do { \
- temp = ((src[x + y*src_linesize + pos] << log2_scale) + d[pos]) >> 6; \
+ temp = (src[x + y*src_linesize + pos] * (1 << log2_scale) + d[pos]) >> 6;\
if (temp & 0x100) \
temp = ~(temp >> 31); \
dst[x + y*dst_linesize + pos] = temp; \
@@ -203,7 +203,7 @@ static void store_slice16_c(uint16_t *dst, const int16_t *src,
unsigned int mask = -1<<depth;
#define STORE16(pos) do { \
- temp = ((src[x + y*src_linesize + pos] << log2_scale) + (d[pos]>>1)) >> 5; \
+ temp = (src[x + y*src_linesize + pos] * (1 << log2_scale) + (d[pos]>>1)) >> 5; \
if (temp & mask ) \
temp = ~(temp >> 31); \
dst[x + y*dst_linesize + pos] = temp; \
More information about the ffmpeg-cvslog
mailing list