[FFmpeg-cvslog] ljpeg: Fix bits != 8 or 16 support
Michael Niedermayer
git at videolan.org
Sat Jan 7 00:19:53 CET 2012
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Fri Jan 6 21:29:25 2012 +0100| [12d8340f16eed211f153e859b749ad415c1ba384] | committer: Michael Niedermayer
ljpeg: Fix bits != 8 or 16 support
Fixes 2nd half of Ticket889
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=12d8340f16eed211f153e859b749ad415c1ba384
---
libavcodec/mjpegdec.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
index 7c27f5d..58bbd63 100644
--- a/libavcodec/mjpegdec.c
+++ b/libavcodec/mjpegdec.c
@@ -804,6 +804,7 @@ static int ljpeg_decode_yuv_scan(MJpegDecodeContext *s, int predictor, int point
if (s->interlaced && s->bottom_field)
ptr += linesize >> 1;
+ pred &= (-1)<<(8-s->bits);
*ptr= pred + (dc << point_transform);
}else{
ptr16 = s->picture.data[c] + 2*(linesize * (v * mb_y + y)) + 2*(h * mb_x + x); //FIXME optimize this crap
@@ -823,6 +824,7 @@ static int ljpeg_decode_yuv_scan(MJpegDecodeContext *s, int predictor, int point
if (s->interlaced && s->bottom_field)
ptr16 += linesize >> 1;
+ pred &= (-1)<<(16-s->bits);
*ptr16= pred + (dc << point_transform);
}
if (++x == h) {
@@ -856,11 +858,13 @@ static int ljpeg_decode_yuv_scan(MJpegDecodeContext *s, int predictor, int point
ptr = s->picture.data[c] + (linesize * (v * mb_y + y)) + (h * mb_x + x); //FIXME optimize this crap
PREDICT(pred, ptr[-linesize-1], ptr[-linesize], ptr[-1], predictor);
+ pred &= (-1)<<(8-s->bits);
*ptr= pred + (dc << point_transform);
}else{
ptr16 = s->picture.data[c] + 2*(linesize * (v * mb_y + y)) + 2*(h * mb_x + x); //FIXME optimize this crap
PREDICT(pred, ptr16[-linesize-1], ptr16[-linesize], ptr16[-1], predictor);
+ pred &= (-1)<<(16-s->bits);
*ptr16= pred + (dc << point_transform);
}
if (++x == h) {
More information about the ffmpeg-cvslog
mailing list