You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
avcodec/mjpegdec: Simplify masking in ljpeg_decode_yuv_scan()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -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,
|
static int ljpeg_decode_yuv_scan(MJpegDecodeContext *s, int predictor,
|
||||||
int point_transform, int nb_components)
|
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 bits= (s->bits+7)&~7;
|
||||||
int resync_mb_y = 0;
|
int resync_mb_y = 0;
|
||||||
int resync_mb_x = 0;
|
int resync_mb_x = 0;
|
||||||
|
|
||||||
point_transform += bits - s->bits;
|
point_transform += bits - s->bits;
|
||||||
|
mask = ((1 << s->bits) - 1) << point_transform;
|
||||||
|
|
||||||
av_assert0(nb_components>=1 && nb_components<=4);
|
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)
|
if (s->interlaced && s->bottom_field)
|
||||||
ptr += linesize >> 1;
|
ptr += linesize >> 1;
|
||||||
pred &= (-1)<<(8 - s->bits + point_transform);
|
pred &= mask;
|
||||||
*ptr= pred + (dc << point_transform);
|
*ptr= pred + (dc << point_transform);
|
||||||
}else{
|
}else{
|
||||||
ptr16 = (uint16_t*)(s->picture.data[c] + 2*(linesize * (v * mb_y + y)) + 2*(h * mb_x + x)); //FIXME optimize this crap
|
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)
|
if (s->interlaced && s->bottom_field)
|
||||||
ptr16 += linesize >> 1;
|
ptr16 += linesize >> 1;
|
||||||
pred &= (-1)<<(16 - s->bits + point_transform);
|
pred &= mask;
|
||||||
*ptr16= pred + (dc << point_transform);
|
*ptr16= pred + (dc << point_transform);
|
||||||
}
|
}
|
||||||
if (++x == h) {
|
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
|
(h * mb_x + x); //FIXME optimize this crap
|
||||||
PREDICT(pred, ptr[-linesize-1], ptr[-linesize], ptr[-1], predictor);
|
PREDICT(pred, ptr[-linesize-1], ptr[-linesize], ptr[-1], predictor);
|
||||||
|
|
||||||
pred &= (-1)<<(8 - s->bits + point_transform);
|
pred &= mask;
|
||||||
*ptr = pred + (dc << point_transform);
|
*ptr = pred + (dc << point_transform);
|
||||||
}else{
|
}else{
|
||||||
ptr16 = (uint16_t*)(s->picture.data[c] + 2*(linesize * (v * mb_y + y)) + 2*(h * mb_x + x)); //FIXME optimize this crap
|
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);
|
PREDICT(pred, ptr16[-linesize-1], ptr16[-linesize], ptr16[-1], predictor);
|
||||||
|
|
||||||
pred &= (-1)<<(16 - s->bits + point_transform);
|
pred &= mask;
|
||||||
*ptr16= pred + (dc << point_transform);
|
*ptr16= pred + (dc << point_transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user