* [FFmpeg-devel] [BROKEN] apad causes infinite hang
@ 2024-06-14 12:19 Paul B Mahol
2024-06-17 7:24 ` Anton Khirnov
0 siblings, 1 reply; 4+ messages in thread
From: Paul B Mahol @ 2024-06-14 12:19 UTC (permalink / raw)
To: FFmpeg development discussions and patches
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()
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FFmpeg-devel] [BROKEN] apad causes infinite hang
2024-06-14 12:19 [FFmpeg-devel] [BROKEN] apad causes infinite hang Paul B Mahol
@ 2024-06-17 7:24 ` Anton Khirnov
2024-06-17 7:38 ` Paul B Mahol
0 siblings, 1 reply; 4+ messages in thread
From: Anton Khirnov @ 2024-06-17 7:24 UTC (permalink / raw)
To: FFmpeg development discussions and patches
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).
--
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-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FFmpeg-devel] [BROKEN] apad causes infinite hang
2024-06-17 7:24 ` Anton Khirnov
@ 2024-06-17 7:38 ` Paul B Mahol
2024-06-17 18:06 ` Nicolas George
0 siblings, 1 reply; 4+ messages in thread
From: Paul B Mahol @ 2024-06-17 7:38 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On Mon, Jun 17, 2024 at 9:24 AM Anton Khirnov <anton@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-request@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-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [FFmpeg-devel] [BROKEN] apad causes infinite hang
2024-06-17 7:38 ` Paul B Mahol
@ 2024-06-17 18:06 ` Nicolas George
0 siblings, 0 replies; 4+ messages in thread
From: Nicolas George @ 2024-06-17 18:06 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Paul B Mahol (12024-06-17):
> And once you close all buffersinks the EOF will and must propagate backward
> to all not-closed filters and their in/out pads.
Your analysis here is right, obviously. Closing a source for this bug
makes no sense.
Regards,
--
Nicolas George
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-06-17 18:06 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-14 12:19 [FFmpeg-devel] [BROKEN] apad causes infinite hang Paul B Mahol
2024-06-17 7:24 ` Anton Khirnov
2024-06-17 7:38 ` Paul B Mahol
2024-06-17 18:06 ` Nicolas George
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git