[FFmpeg-devel] [BROKEN] apad causes infinite hang
Paul B Mahol
onemda at gmail.com
Mon Jun 17 10:38:05 EEST 2024
On Mon, Jun 17, 2024 at 9:24 AM Anton Khirnov <anton at 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 at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
More information about the ffmpeg-devel
mailing list