[FFmpeg-cvslog] Fix decoding of some 8 < bpc < 16 signed j2k samples with libopenjpeg.

Carl Eugen Hoyos git at videolan.org
Mon Jan 27 16:20:48 CET 2014


ffmpeg | branch: master | Carl Eugen Hoyos <cehoyos at ag.or.at> | Mon Jan 27 14:28:30 2014 +0100| [05e5bb6107b90f1f12348aae4373b17efbba08ff] | committer: Carl Eugen Hoyos

Fix decoding of some 8 < bpc < 16 signed j2k samples with libopenjpeg.

No testcase known.

Reviewed-by: Michael Bradshaw

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=05e5bb6107b90f1f12348aae4373b17efbba08ff
---

 libavcodec/libopenjpegdec.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavcodec/libopenjpegdec.c b/libavcodec/libopenjpegdec.c
index 7a4be52..0389dbd 100644
--- a/libavcodec/libopenjpegdec.c
+++ b/libavcodec/libopenjpegdec.c
@@ -180,7 +180,8 @@ static inline void libopenjpeg_copy_to_packed16(AVFrame *picture, opj_image_t *i
         img_ptr = (uint16_t*) (picture->data[0] + y*picture->linesize[0]);
         for (x = 0; x < picture->width; x++, index++) {
             for (c = 0; c < image->numcomps; c++) {
-                *img_ptr++ = 0x8000 * image->comps[c].sgnd + ((unsigned)image->comps[c].data[index] << adjust[c]);
+                *img_ptr++ = (1 << image->comps[c].prec - 1) * image->comps[c].sgnd +
+                             (unsigned)image->comps[c].data[index] << adjust[c];
             }
         }
     }
@@ -217,7 +218,8 @@ static inline void libopenjpeg_copyto16(AVFrame *picture, opj_image_t *image) {
         for (y = 0; y < image->comps[index].h; y++) {
             img_ptr = (uint16_t*) (picture->data[index] + y * picture->linesize[index]);
             for (x = 0; x < image->comps[index].w; x++) {
-                *img_ptr = 0x8000 * image->comps[index].sgnd + ((unsigned)*comp_data << adjust[index]);
+                *img_ptr = (1 << image->comps[index].prec - 1) * image->comps[index].sgnd +
+                           (unsigned)*comp_data << adjust[index];
                 img_ptr++;
                 comp_data++;
             }



More information about the ffmpeg-cvslog mailing list