On Mon, Jun 17, 2024 at 9:24 AM Anton Khirnov <an...@khirnov.net> wrote:
> Quoting Paul B Mahol (2024-06-14 14:19:13) > > Just try with: > > > > ffmpeg -f lavfi -i sine=d=30 -af apad -f null - > > > > Pressing 'q' will not stop it at all, because current ffmpeg code will > try > > to flush all frames, but because pad filter never receives EOF from next > > filter in chain (sink) it will happily produce frame forever. > > > > Tried to fix ffmpeg.c related code but quickly realized rewrite just made > > it 10 times worse to debug this. > > > > Most clean solution is adding av_buffersink_close() > > I think it would be cleaner to have an API for closing a _source_ (or > any filter that can produce unbounded amounts of output with no new > input). > What do you mean by closing a _source_ ? av_buffersrc_close() already exist. This bug is fixed in Librempeg. Adding a call to close random filter is certainly possible, but such approach is very frowned upon in multi-threaded environments. And once you close all buffersinks the EOF will and must propagate backward to all not-closed filters and their in/out pads. If there is better internal API for filters, feel free to present it to wider audience. > > -- > Anton Khirnov > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".