[FFmpeg-devel] [PATCH v4 2/2] libavcodec/jpeg2000dec.c: Handle non EOC streams

Carl Eugen Hoyos ceffmpeg at gmail.com
Sat Mar 28 14:52:06 EET 2020


Am Sa., 28. März 2020 um 13:28 Uhr schrieb <gautamramk at gmail.com>:
>
> From: Gautam Ramakrishnan <gautamramk at gmail.com>
>
> This patch allows decoding of j2k streams which do
> not have an EOC marker. OpenJPEG implements a similar
> check.
> ---
>  libavcodec/jpeg2000dec.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
> index 44b3e7e41b..eb877d499d 100644
> --- a/libavcodec/jpeg2000dec.c
> +++ b/libavcodec/jpeg2000dec.c
> @@ -2076,8 +2076,11 @@ static int jpeg2000_read_main_headers(Jpeg2000DecoderContext *s)
>
>          len = bytestream2_get_be16(&s->g);
>          if (len < 2 || bytestream2_get_bytes_left(&s->g) < len - 2) {
> -            av_log(s->avctx, AV_LOG_ERROR, "Invalid len %d left=%d\n", len, bytestream2_get_bytes_left(&s->g));
> -            return AVERROR_INVALIDDATA;
> +            if (s->avctx->err_recognition & AV_EF_EXPLODE) {

lol
Sorry, my mistake, please check for the following:
avctx->strict_std_compliance >= FF_COMPLIANCE_STRICT

> +                av_log(s->avctx, AV_LOG_ERROR, "Invalid len %d left=%d\n", len, bytestream2_get_bytes_left(&s->g));
> +                return AVERROR_INVALIDDATA;

A message should always be shown (after all, the stream is clearly
invalid), some
people argue that it should be WARNING for < STRICT and ERROR for >= STRICT.

> +            }
> +            continue;
>          }
>
>          switch (marker) {

I don't know if the continue is more correct.

Carl Eugen


More information about the ffmpeg-devel mailing list