avcodec/mjpegdec: fix yuv ljpeg prediction 5/6/7 with point transforms
Fixes Ticket2826 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
4ced30908f
commit
38f8640df8
@ -944,7 +944,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);
|
pred &= (-1)<<(8 - s->bits + point_transform);
|
||||||
*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 +964,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);
|
pred &= (-1)<<(16 - s->bits + point_transform);
|
||||||
*ptr16= pred + (dc << point_transform);
|
*ptr16= pred + (dc << point_transform);
|
||||||
}
|
}
|
||||||
if (++x == h) {
|
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
|
(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);
|
pred &= (-1)<<(8 - s->bits + point_transform);
|
||||||
*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);
|
pred &= (-1)<<(16 - s->bits + point_transform);
|
||||||
*ptr16= pred + (dc << point_transform);
|
*ptr16= pred + (dc << point_transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user