diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-09-05 01:25:59 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-09-05 01:39:20 +0200 |
commit | 38f8640df81e96b83ac8d33fddbe3ab3046d50ff (patch) | |
tree | 1e4c1e8f93763ffa728d16d575090e72fea24049 /libavcodec | |
parent | 4ced30908fb7be270011dd6096809fe28b8a0e48 (diff) | |
download | ffmpeg-38f8640df81e96b83ac8d33fddbe3ab3046d50ff.tar.gz |
avcodec/mjpegdec: fix yuv ljpeg prediction 5/6/7 with point transforms
Fixes Ticket2826
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/mjpegdec.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 8b48ea2c58..c18502bc55 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -944,7 +944,7 @@ static int ljpeg_decode_yuv_scan(MJpegDecodeContext *s, int predictor, if (s->interlaced && s->bottom_field) ptr += linesize >> 1; - pred &= (-1)<<(8-s->bits); + pred &= (-1)<<(8 - s->bits + point_transform); *ptr= pred + (dc << point_transform); }else{ ptr16 = (uint16_t*)(s->picture.data[c] + 2*(linesize * (v * mb_y + y)) + 2*(h * mb_x + x)); //FIXME optimize this crap @@ -964,7 +964,7 @@ static int ljpeg_decode_yuv_scan(MJpegDecodeContext *s, int predictor, if (s->interlaced && s->bottom_field) ptr16 += linesize >> 1; - pred &= (-1)<<(16-s->bits); + pred &= (-1)<<(16 - s->bits + point_transform); *ptr16= pred + (dc << point_transform); } if (++x == h) { @@ -1000,13 +1000,13 @@ static int ljpeg_decode_yuv_scan(MJpegDecodeContext *s, int predictor, (h * mb_x + x); //FIXME optimize this crap PREDICT(pred, ptr[-linesize-1], ptr[-linesize], ptr[-1], predictor); - pred &= (-1)<<(8-s->bits); + pred &= (-1)<<(8 - s->bits + point_transform); *ptr = pred + (dc << point_transform); }else{ ptr16 = (uint16_t*)(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); + pred &= (-1)<<(16 - s->bits + point_transform); *ptr16= pred + (dc << point_transform); } |