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@outlook.com>
This commit is contained in:
parent
9e4e8ae1e6
commit
3ed23dab98
@ -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; \
|
||||
|
Loading…
Reference in New Issue
Block a user