diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-09-05 01:32:51 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-09-05 01:39:20 +0200 |
commit | b042712a875cbbaece4652aa572501a8cbc20051 (patch) | |
tree | bb66114404bc7146b00bb1b3265a9ed770d1a01d /libavcodec/mjpegdec.c | |
parent | b394ccfe47e7c6efb30ed0ec40efa87afb427d08 (diff) | |
download | ffmpeg-b042712a875cbbaece4652aa572501a8cbc20051.tar.gz |
avcodec/mjpegdec: Simplify masking in ljpeg_decode_yuv_scan()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/mjpegdec.c')
-rw-r--r-- | libavcodec/mjpegdec.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 9d74c6eaf3..413be5691a 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -886,12 +886,13 @@ static int ljpeg_decode_rgb_scan(MJpegDecodeContext *s, int nb_components, int p static int ljpeg_decode_yuv_scan(MJpegDecodeContext *s, int predictor, int point_transform, int nb_components) { - int i, mb_x, mb_y; + int i, mb_x, mb_y, mask; int bits= (s->bits+7)&~7; int resync_mb_y = 0; int resync_mb_x = 0; point_transform += bits - s->bits; + mask = ((1 << s->bits) - 1) << point_transform; av_assert0(nb_components>=1 && nb_components<=4); @@ -944,7 +945,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 + point_transform); + pred &= mask; *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 +965,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 + point_transform); + pred &= mask; *ptr16= pred + (dc << point_transform); } if (++x == h) { @@ -1000,13 +1001,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 + point_transform); + pred &= mask; *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 + point_transform); + pred &= mask; *ptr16= pred + (dc << point_transform); } |