avfilter/vf_xfade: send EOF to first input early

No point to consume 1st input frames any more after crossfade is over.
This commit is contained in:
Paul B Mahol 2023-05-22 16:54:44 +02:00
parent 877ccaf776
commit c37cf59c5b
1 changed files with 7 additions and 3 deletions

View File

@ -2067,9 +2067,13 @@ static int xfade_activate(AVFilterContext *ctx)
if (s->xfade_is_over) { if (s->xfade_is_over) {
if (!s->eof[0]) { if (!s->eof[0]) {
ret = ff_inlink_consume_frame(ctx->inputs[0], &in); if (ff_inlink_queued_frames(ctx->inputs[0]) > 0) {
if (ret > 0) ret = ff_inlink_consume_frame(ctx->inputs[0], &in);
av_frame_free(&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); ret = ff_inlink_consume_frame(ctx->inputs[1], &in);
if (ret < 0) { if (ret < 0) {