Commit 060cfa47dd for ffmpeg
commit 060cfa47dd1c4a842b038918bbbcbd4c30fc44c9
Author: Niklas Haas <git@haasn.dev>
Date: Fri Oct 23 16:35:58 2026 +0200
avfilter/vf_libplacebo: don't mask input errors with a later EOF
Only the status of the input ending last was forwarded, so an error on a
shorter input was reported as an ordinary EOF if a longer input ended
normally. Keep forwarding the most recent status, but prefer errors.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sponsored-by: nxtedition AB
Signed-off-by: Niklas Haas <git@haasn.dev>
diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c
index ac9a56152f..f3bdf756b5 100644
--- a/libavfilter/vf_libplacebo.c
+++ b/libavfilter/vf_libplacebo.c
@@ -1267,14 +1267,17 @@ static int libplacebo_activate(AVFilterContext *ctx)
drain_input_pts(&s->inputs[i], out_pts);
return output_frame(ctx, out_pts);
} else if (s->nb_active == 0) {
- /* Forward most recent status */
+ /* Forward most recent status, but don't let a later EOF mask errors */
int status = s->inputs[0].status;
int64_t status_pts = s->inputs[0].status_pts;
for (int i = 1; i < s->nb_inputs; i++) {
const LibplaceboInput *in = &s->inputs[i];
if (in->status_pts > status_pts) {
- status = s->inputs[i].status;
- status_pts = s->inputs[i].status_pts;
+ status_pts = in->status_pts;
+ if (in->status != AVERROR_EOF || status == AVERROR_EOF)
+ status = in->status;
+ } else if (status == AVERROR_EOF) {
+ status = in->status;
}
}
ff_outlink_set_status(outlink, status, status_pts);