From c37cf59c5bbad7cedf288b2dc198c928acd397fa Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Mon, 22 May 2023 16:54:44 +0200 Subject: [PATCH] avfilter/vf_xfade: send EOF to first input early No point to consume 1st input frames any more after crossfade is over. --- libavfilter/vf_xfade.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libavfilter/vf_xfade.c b/libavfilter/vf_xfade.c index a0e2e61d40..a13a7db627 100644 --- a/libavfilter/vf_xfade.c +++ b/libavfilter/vf_xfade.c @@ -2067,9 +2067,13 @@ static int xfade_activate(AVFilterContext *ctx) if (s->xfade_is_over) { if (!s->eof[0]) { - ret = ff_inlink_consume_frame(ctx->inputs[0], &in); - if (ret > 0) - av_frame_free(&in); + if (ff_inlink_queued_frames(ctx->inputs[0]) > 0) { + ret = ff_inlink_consume_frame(ctx->inputs[0], &in); + if (ret > 0) + av_frame_free(&in); + } + ff_inlink_set_status(ctx->inputs[0], AVERROR_EOF); + s->eof[0] = 1; } ret = ff_inlink_consume_frame(ctx->inputs[1], &in); if (ret < 0) {