[FFmpeg-devel] [PATCH] avcodec/av1dec: attempt to set SAR even if no hardware decoding is available
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Wed Jan 10 04:30:10 EET 2024
James Almer:
> Should fix fate failures in avif tests when no external decoder is
> available.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavcodec/av1dec.c | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c
> index da05a0f039..43b5aef687 100644
> --- a/libavcodec/av1dec.c
> +++ b/libavcodec/av1dec.c
> @@ -1227,7 +1227,7 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame)
> av_log(avctx, AV_LOG_ERROR,
> "Failed to get pixel format.\n");
> s->raw_seq = NULL;
> - goto end;
> + continue;
> }
> }
>
> @@ -1248,6 +1248,16 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame)
> case AV1_OBU_FRAME:
> case AV1_OBU_FRAME_HEADER:
> if (!s->raw_seq) {
> + // Attempt to set dimensions in all cases
> + if (s->pix_fmt == AV_PIX_FMT_NONE) {
> + ret = update_context_with_frame_header(avctx, &obu->obu.frame.header);
> + if (ret < 0) {
> + av_log(avctx, AV_LOG_ERROR, "Failed to update context with frame header\n");
> + return ret;
> + }
> + ret = AVERROR(ENOSYS);
> + goto end;
> + }
> av_log(avctx, AV_LOG_ERROR, "Missing Sequence Header.\n");
> ret = AVERROR_INVALIDDATA;
> goto end;
You should instead implement FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM for this
decoder so that one does not get a wall of error logs when probing
without proper hardware.
- Andreas
More information about the ffmpeg-devel
mailing list