[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