[FFmpeg-devel] [PATCH v2 13/15] avcodec/j2kenc: Fix undefined shifts of negative numbers
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Sat Sep 28 05:26:08 EEST 2019
Also add parentheses to some lines to make the operator precedence
clearer.
This affected the FATE-tests vsynth*-jpeg2000 and vsynth*-jpeg2000-97
(where * ranges over { 1, 2, 3, _lena }) as well as ticket #7983.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
libavcodec/j2kenc.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c
index e91d932bb7..b5ac06b906 100644
--- a/libavcodec/j2kenc.c
+++ b/libavcodec/j2kenc.c
@@ -521,13 +521,13 @@ static void init_luts(void)
mask = ~((1<<NMSEDEC_FRACBITS)-1);
for (i = 0; i < (1 << NMSEDEC_BITS); i++){
- lut_nmsedec_sig[i] = FFMAX(6*i - (9<<NMSEDEC_FRACBITS-1) << 12-NMSEDEC_FRACBITS, 0);
+ lut_nmsedec_sig[i] = FFMAX((6 * i - (9 << (NMSEDEC_FRACBITS - 1))) * (1 << (12 - NMSEDEC_FRACBITS)), 0);
lut_nmsedec_sig0[i] = FFMAX((i*i + (1<<NMSEDEC_FRACBITS-1) & mask) << 1, 0);
a = (i >> (NMSEDEC_BITS-2)&2) + 1;
- lut_nmsedec_ref[i] = FFMAX((-2*i + (1<<NMSEDEC_FRACBITS) + a*i - (a*a<<NMSEDEC_FRACBITS-2))
- << 13-NMSEDEC_FRACBITS, 0);
- lut_nmsedec_ref0[i] = FFMAX(((i*i + (1-4*i << NMSEDEC_FRACBITS-1) + (1<<2*NMSEDEC_FRACBITS)) & mask)
+ lut_nmsedec_ref[i] = FFMAX((-2 * i + (1 << NMSEDEC_FRACBITS) + a * i - (a * a << (NMSEDEC_FRACBITS - 2)))
+ * (1 << (13 - NMSEDEC_FRACBITS)), 0);
+ lut_nmsedec_ref0[i] = FFMAX(((i * i - (i << (NMSEDEC_FRACBITS + 1)) + (1 << (NMSEDEC_FRACBITS - 1)) + (1 << 2 * NMSEDEC_FRACBITS)) & mask)
<< 1, 0);
}
}
@@ -927,7 +927,7 @@ static int encode_tile(Jpeg2000EncoderContext *s, Jpeg2000Tile *tile, int tileno
for (y = yy0; y < yy1; y++){
int *ptr = t1.data + (y-yy0)*t1.stride;
for (x = xx0; x < xx1; x++){
- *ptr++ = comp->i_data[(comp->coord[0][1] - comp->coord[0][0]) * y + x] << NMSEDEC_FRACBITS;
+ *ptr++ = comp->i_data[(comp->coord[0][1] - comp->coord[0][0]) * y + x] * (1 << NMSEDEC_FRACBITS);
}
}
} else{
--
2.20.1
More information about the ffmpeg-devel
mailing list