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

Steven Liu lingjiujianke at gmail.com
Fri Mar 8 15:31:03 EET 2024


James Almer <jamrial at gmail.com> 于2024年3月8日周五 21:13写道:
>
> On 3/8/2024 10:07 AM, Andreas Rheinhardt wrote:
> > 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?
>
> Or add -c:v av1 as input argument for the final decode in stream_remux()
> from fate-run.sh
It's using -c:v av1 right now, or should I move libavformat/av1.c to
libavcodec and modify for support set the params?


Thanks
Steven


More information about the ffmpeg-devel mailing list