[FFmpeg-cvslog] avfilter/avfilter: fix forwarding EOF for simple API filters in filter_activate_default

Marton Balint git at videolan.org
Thu Jul 3 23:07:00 EEST 2025


ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Sat Jun 21 08:21:40 2025 +0200| [a736ac72bb2e457484724f0589fd11a2b2b5f852] | committer: Marton Balint

avfilter/avfilter: fix forwarding EOF for simple API filters in filter_activate_default

EOF only need to be forwarded back if all outputs have reached EOF.

Fixes infinte loop with ffprobe -f lavfi -i "smptebars=d=1,select=n=2:e=1[out0][out1]"
Regression since d9e41ead82263e96ebd14d4d88d6e7f858dd944c.

Fixes ticket #10959.
Fixes ticket #11366.

Signed-off-by: Marton Balint <cus at passwd.hu>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a736ac72bb2e457484724f0589fd11a2b2b5f852
---

 libavfilter/avfilter.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index 56f635a413..dd12533208 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -1253,16 +1253,14 @@ static int forward_status_change(AVFilterContext *filter, FilterLinkInternal *li
 static int filter_activate_default(AVFilterContext *filter)
 {
     unsigned i;
+    int nb_eofs = 0;
 
-    for (i = 0; i < filter->nb_outputs; i++) {
-        FilterLinkInternal *li = ff_link_internal(filter->outputs[i]);
-        int ret = li->status_in;
-
-        if (ret) {
-            for (int j = 0; j < filter->nb_inputs; j++)
-                ff_inlink_set_status(filter->inputs[j], ret);
-            return 0;
-        }
+    for (i = 0; i < filter->nb_outputs; i++)
+        nb_eofs += ff_outlink_get_status(filter->outputs[i]) == AVERROR_EOF;
+    if (filter->nb_outputs && nb_eofs == filter->nb_outputs) {
+        for (int j = 0; j < filter->nb_inputs; j++)
+            ff_inlink_set_status(filter->inputs[j], AVERROR_EOF);
+        return 0;
     }
 
     for (i = 0; i < filter->nb_inputs; i++) {



More information about the ffmpeg-cvslog mailing list