lavc/mjpegdec: Do not skip reading quantization tables.
authorCarl Eugen Hoyos <cehoyos@ag.or.at>
Fri, 2 Sep 2016 15:10:57 +0000 (17:10 +0200)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Sat, 3 Sep 2016 13:39:33 +0000 (15:39 +0200)
They may contain 0xFFs, confusing the start code finding algorithm.

Fixes ticket #5819.
(cherry picked from commit cef5bc0e6e2320d3903cf063d59cef83e91dbc3c)

libavcodec/mjpegdec.c

index 633a8f0..0645a1d 100644 (file)
@@ -2119,6 +2119,8 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
             ret = mjpeg_decode_com(s);
             if (ret < 0)
                 return ret;
+        } else if (start_code == DQT) {
+            ff_mjpeg_decode_dqt(s);
         }
 
         ret = -1;
@@ -2151,9 +2153,6 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
             s->restart_count    = 0;
             /* nothing to do on SOI */
             break;
-        case DQT:
-            ff_mjpeg_decode_dqt(s);
-            break;
         case DHT:
             if ((ret = ff_mjpeg_decode_dht(s)) < 0) {
                 av_log(avctx, AV_LOG_ERROR, "huffman table decode error\n");