diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-07-01 23:26:19 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-07-01 23:26:19 +0200 |
commit | 784e1cf76beb7144956969af1e7a46d5343f5c6a (patch) | |
tree | 9d3e578a5c74e8f6a8f379cf11199d8fe2d51c1a | |
parent | 64d98dadc7d033961d01eb880286ae77d016f189 (diff) | |
download | ffmpeg-784e1cf76beb7144956969af1e7a46d5343f5c6a.tar.gz |
avcodec/mjpegdec: handle luma upscale detection generically
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/mjpegdec.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 3b0710537d..2e26223cb4 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -392,6 +392,12 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) int j = 6 + (i&1) - (i&6); int is = (pix_fmt_id >> (4*i)) & 0xF; int js = (pix_fmt_id >> (4*j)) & 0xF; + + if (is == 1 && js != 2 && (i < 2 || i > 5)) + js = (pix_fmt_id >> ( 8 + 4*(i&1))) & 0xF; + if (is == 1 && js != 2 && (i < 2 || i > 5)) + js = (pix_fmt_id >> (16 + 4*(i&1))) & 0xF; + if (is == 1 && js == 2) { if (i & 1) s->upscale_h |= 1 << (j/2); else s->upscale_v |= 1 << (j/2); @@ -474,8 +480,6 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) else goto unk_pixfmt; s->avctx->color_range = s->cs_itu601 ? AVCOL_RANGE_MPEG : AVCOL_RANGE_JPEG; - s->upscale_v = 1; - s->upscale_h = 1; s->chroma_height = s->height / 2; break; case 0x11000000: |