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".

Reply via email to