From 69db85c30c9199f523b0e218927fb90b0fb8f924 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 27 Dec 2012 23:16:54 +0100 Subject: mjpegdec: Support 16bit DQT Fixes Ticket2072 Signed-off-by: Michael Niedermayer --- libavcodec/mjpegdec.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'libavcodec') diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index c1712ea47a..c62df72867 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -129,10 +129,10 @@ int ff_mjpeg_decode_dqt(MJpegDecodeContext *s) len = get_bits(&s->gb, 16) - 2; while (len >= 65) { - /* only 8 bit precision handled */ - if (get_bits(&s->gb, 4) != 0) { - av_log(s->avctx, AV_LOG_ERROR, "dqt: 16bit precision\n"); - return -1; + int pr = get_bits(&s->gb, 4); + if (pr > 1) { + av_log(s->avctx, AV_LOG_ERROR, "dqt: invalid precision\n"); + return AVERROR_INVALIDDATA; } index = get_bits(&s->gb, 4); if (index >= 4) @@ -141,7 +141,7 @@ int ff_mjpeg_decode_dqt(MJpegDecodeContext *s) /* read quant table */ for (i = 0; i < 64; i++) { j = s->scantable.permutated[i]; - s->quant_matrixes[index][j] = get_bits(&s->gb, 8); + s->quant_matrixes[index][j] = get_bits(&s->gb, pr ? 16 : 8); } // XXX FIXME finetune, and perhaps add dc too -- cgit v1.2.3