[FFmpeg-devel] [PATCH] avcodec/libaomdec: decode extradata in aom_init
James Almer
jamrial at gmail.com
Fri Mar 8 14:56:12 EET 2024
On 3/8/2024 6:49 AM, Steven Liu wrote:
> 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) {
Extradata may have the ISOBMFF prefix bytes, so you need to skip them
unless aom_codec_decode() can handle them, which i assume it doesn't.
And of course, if there's nothing after the four prefix bytes, don't
call anything.
> + 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;
> }
>
More information about the ffmpeg-devel
mailing list