]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/mjpegdec.c
mjpegdec: print nb_components too in pict debug info
[ffmpeg] / libavcodec / mjpegdec.c
index 4a5b04672df870f693bde4472bb13f78102ec931..c7ddaebe21222d144a4863077a518ca93025ad7c 100644 (file)
@@ -898,9 +898,9 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, int nb_components, int Ah, i
             if (s->restart_interval && show_bits(&s->gb, i)  == (1<<i)-1){ /* skip RSTn */
                 int pos= get_bits_count(&s->gb);
                 align_get_bits(&s->gb);
-                while(show_bits(&s->gb, 8) == 0xFF)
+                while(get_bits_count(&s->gb) < s->gb.size_in_bits && show_bits(&s->gb, 8) == 0xFF)
                     skip_bits(&s->gb, 8);
-                if((get_bits(&s->gb, 8)&0xF8) == 0xD0){
+                if(get_bits_count(&s->gb) < s->gb.size_in_bits && (get_bits(&s->gb, 8)&0xF8) == 0xD0){
                     for (i=0; i<nb_components; i++) /* reset dc */
                         s->last_dc[i] = 1024;
                 }else{
@@ -1034,9 +1034,9 @@ int ff_mjpeg_decode_sos(MJpegDecodeContext *s,
     }
 
     if(s->avctx->debug & FF_DEBUG_PICT_INFO)
-        av_log(s->avctx, AV_LOG_DEBUG, "%s %s p:%d >>:%d ilv:%d bits:%d skip:%d %s\n", s->lossless ? "lossless" : "sequential DCT", s->rgb ? "RGB" : "",
+        av_log(s->avctx, AV_LOG_DEBUG, "%s %s p:%d >>:%d ilv:%d bits:%d skip:%d %s comp:%d\n", s->lossless ? "lossless" : "sequential DCT", s->rgb ? "RGB" : "",
                predictor, point_transform, ilv, s->bits, s->mjpb_skiptosod,
-               s->pegasus_rct ? "PRCT" : (s->rct ? "RCT" : ""));
+               s->pegasus_rct ? "PRCT" : (s->rct ? "RCT" : ""), nb_components);
 
 
     /* mjpeg-b can have padding bytes between sos and image data, skip them */
@@ -1490,8 +1490,6 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx,
                         return -1;
                     break;
                 case EOI:
-                    if ((s->buggy_avid && !s->interlaced) || s->restart_interval)
-                        break;
 eoi_parser:
                     s->cur_scan = 0;
                     if (!s->got_picture) {
@@ -1526,10 +1524,6 @@ eoi_parser:
                     if (ff_mjpeg_decode_sos(s, NULL, NULL) < 0 &&
                         avctx->error_recognition >= FF_ER_EXPLODE)
                       return AVERROR_INVALIDDATA;
-                    /* buggy avid puts EOI every 10-20th frame */
-                    /* if restart period is over process EOI */
-                    if ((s->buggy_avid && !s->interlaced) || s->restart_interval)
-                        goto eoi_parser;
                     break;
                 case DRI:
                     mjpeg_decode_dri(s);