[FFmpeg-devel] [PATCH 2/3] lavc/mjpegdec: honor skip_frame option

Matthieu Bouron matthieu.bouron at gmail.com
Sun Oct 18 11:06:50 CEST 2015


On Sat, Oct 17, 2015 at 10:34:23PM +0200, Matthieu Bouron wrote:
> From: Matthieu Bouron <matthieu.bouron at stupeflix.com>
> 
> ---
>  libavcodec/mjpegdec.c | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
> index 1a86b7b..8a90e94 100644
> --- a/libavcodec/mjpegdec.c
> +++ b/libavcodec/mjpegdec.c
> @@ -2038,6 +2038,21 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
>              return AVERROR(ENOSYS);
>          }
>  
> +        if (avctx->skip_frame == AVDISCARD_ALL) {
> +            int i, found = 0;
> +            static const int sofs[] = { SOF0, SOF1, SOF2, SOF3, SOF48 };
> +
> +            for (i = 0; i < FF_ARRAY_ELEMS(sofs); i++) {
> +                if (start_code == sofs[i]) {
> +                    found = 1;
> +                    break;
> +                }
> +            }
> +            if (!found) {
> +                continue;
> +            }
> +        }
> +
>          switch (start_code) {
>          case SOI:
>              s->restart_interval = 0;
> @@ -2158,6 +2173,11 @@ eoi_parser:
>          av_log(avctx, AV_LOG_WARNING, "EOI missing, emulating\n");
>          goto eoi_parser;
>      }
> +
> +    if (avctx->skip_frame == AVDISCARD_ALL) {
> +        return buf_ptr - buf;
> +    }
> +
>      av_log(avctx, AV_LOG_FATAL, "No JPEG data found in image\n");
>      return AVERROR_INVALIDDATA;
>  fail:
> -- 
> 2.6.1
>

Patch updated, the markers are now properly skipped (which also fixes a
crash).

Matthieu
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-lavc-mjpegdec-honor-skip_frame-option.patch
Type: text/x-diff
Size: 1681 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20151018/a2fc1a85/attachment.patch>


More information about the ffmpeg-devel mailing list