Commit 26fc6ffe authored by Carl Eugen Hoyos's avatar Carl Eugen Hoyos

Cast signed libopenjpeg data values to unsigned before shifting.

This avoids undefined behaviour on left-shift.

Reviewed-by: Michael Bradshaw
parent a1ed1c21
...@@ -180,7 +180,7 @@ static inline void libopenjpeg_copy_to_packed16(AVFrame *picture, opj_image_t *i ...@@ -180,7 +180,7 @@ static inline void libopenjpeg_copy_to_packed16(AVFrame *picture, opj_image_t *i
img_ptr = (uint16_t*) (picture->data[0] + y*picture->linesize[0]); img_ptr = (uint16_t*) (picture->data[0] + y*picture->linesize[0]);
for (x = 0; x < picture->width; x++, index++) { for (x = 0; x < picture->width; x++, index++) {
for (c = 0; c < image->numcomps; c++) { for (c = 0; c < image->numcomps; c++) {
*img_ptr++ = 0x8000 * image->comps[c].sgnd + (image->comps[c].data[index] << adjust[c]); *img_ptr++ = 0x8000 * image->comps[c].sgnd + ((unsigned)image->comps[c].data[index] << adjust[c]);
} }
} }
} }
...@@ -217,7 +217,7 @@ static inline void libopenjpeg_copyto16(AVFrame *picture, opj_image_t *image) { ...@@ -217,7 +217,7 @@ static inline void libopenjpeg_copyto16(AVFrame *picture, opj_image_t *image) {
for (y = 0; y < image->comps[index].h; y++) { for (y = 0; y < image->comps[index].h; y++) {
img_ptr = (uint16_t*) (picture->data[index] + y * picture->linesize[index]); img_ptr = (uint16_t*) (picture->data[index] + y * picture->linesize[index]);
for (x = 0; x < image->comps[index].w; x++) { for (x = 0; x < image->comps[index].w; x++) {
*img_ptr = 0x8000 * image->comps[index].sgnd + (*comp_data << adjust[index]); *img_ptr = 0x8000 * image->comps[index].sgnd + ((unsigned)*comp_data << adjust[index]);
img_ptr++; img_ptr++;
comp_data++; comp_data++;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment