[FFmpeg-devel] [PATCH] avcodec/libaomdec: decode extradata in aom_init

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Fri Mar 8 15:07:26 EET 2024


Steven Liu:
> before patch:
> test failed when using libaomdec.
> TEST    enhanced-flv-av1
> --- src/tests/ref/fate/enhanced-flv-av1	2024-03-08 11:27:13.577935587 +0800
> +++ tests/data/fate/enhanced-flv-av1	2024-03-08 17:38:25.810152322 +0800
> @@ -3,7 +3,7 @@
>  #media_type 0: video
>  #codec_id 0: av1
>  #dimensions 0: 320x176
> -#sar 0: 0/1
> +#sar 0: 1/1
>  0,          0,          0,       41,     4718, 0xc4d912ec
>  0,         42,         42,       41,     5109, 0xc065dd7d, F=0x0
>  0,         83,         83,       41,      192, 0x160c5335, F=0x0
> 
> after patch:
> test passed
> 
> Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
> ---
>  libavcodec/libaomdec.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/libavcodec/libaomdec.c b/libavcodec/libaomdec.c
> index 69eec8b089..2df2fa6fd7 100644
> --- a/libavcodec/libaomdec.c
> +++ b/libavcodec/libaomdec.c
> @@ -58,6 +58,18 @@ static av_cold int aom_init(AVCodecContext *avctx,
>          return AVERROR(EINVAL);
>      }
>  
> +    if (aom_codec_decode(&ctx->decoder, avctx->extradata, avctx->extradata_size,
> +                         NULL) != AOM_CODEC_OK) {
> +        const char *error  = aom_codec_error(&ctx->decoder);
> +        const char *detail = aom_codec_error_detail(&ctx->decoder);
> +
> +        av_log(avctx, AV_LOG_ERROR, "Failed to decode extradata: %s\n", error);
> +        if (detail)
> +            av_log(avctx, AV_LOG_ERROR, "  Additional information: %s\n", detail);
> +
> +        return AVERROR(EINVAL);
> +    }
> +
>      return 0;
>  }
>  

This patch is very problematic: If you change the ref file to match
libaomdec, it will be broken for those that use other decoders than
libaomdec. Actually, there should be no reason to use libaomdec for
probing since 194414f62d987ad831654c45fff6ee27898b832e. Maybe we should
add the AVOID_PROBING cap to the other AV1 decoders in case the native
one is available?

- Andreas



More information about the ffmpeg-devel mailing list