PR #21249 opened by Niklas Haas (haasn) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21249 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21249.patch
This logic was previously added to the scheduler. That commit added locking (and rescheduling) when updating the corresponding `receive_finished` flag, but missed doing the same for `send_finished`. Fixes: fd1fd5850de4f3beb240422b67889bb776b26c77 >From d23908d12611b4873dbd1548de61e4a5ac45f277 Mon Sep 17 00:00:00 2001 From: Niklas Haas <[email protected]> Date: Sat, 20 Dec 2025 16:43:40 +0100 Subject: [PATCH] fftools/ffmpeg_sched: fix race on SchFilter.send_finished This logic was previously added to the scheduler. That commit added locking (and rescheduling) when updating the corresponding `receive_finished` flag, but missed doing the same for `send_finished`. Fixes: fd1fd5850de4f3beb240422b67889bb776b26c77 --- fftools/ffmpeg_sched.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fftools/ffmpeg_sched.c b/fftools/ffmpeg_sched.c index c5ee6971f1..862c002b85 100644 --- a/fftools/ffmpeg_sched.c +++ b/fftools/ffmpeg_sched.c @@ -2297,6 +2297,8 @@ static int send_to_filter(Scheduler *sch, SchFilterGraph *fg, if (frame) return tq_send(fg->queue, in_idx, frame); + pthread_mutex_lock(&sch->schedule_lock); + if (!fg->inputs[in_idx].send_finished) { fg->inputs[in_idx].send_finished = 1; tq_send_finish(fg->queue, in_idx); @@ -2304,7 +2306,11 @@ static int send_to_filter(Scheduler *sch, SchFilterGraph *fg, // close the control stream when all actual inputs are done if (atomic_fetch_add(&fg->nb_inputs_finished_send, 1) == fg->nb_inputs - 1) tq_send_finish(fg->queue, fg->nb_inputs); + + schedule_update_locked(sch); } + + pthread_mutex_unlock(&sch->schedule_lock); return 0; } -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
