[FFmpeg-devel] [PATCH] avformat/utils.c: allows av_read_frame to return after a timeout period.
Michael Niedermayer
michael at niedermayer.cc
Fri Nov 29 20:35:48 EET 2019
On Thu, Nov 28, 2019 at 08:58:54PM -0300, ggarra13 at gmail.com wrote:
> From: Gonzalo Garramuño <ggarra13 at gmail.com>
>
> Moved the check inside if (pktl) as per Michael Niedermayer's suggestion.
> This patch is based on one from bsenftner at earthlink.net.
> ---
> libavformat/utils.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/libavformat/utils.c b/libavformat/utils.c
> index 8196442dd1..1f5754d7d3 100644
> --- a/libavformat/utils.c
> +++ b/libavformat/utils.c
> @@ -1795,6 +1795,11 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt)
> AVPacketList *pktl = s->internal->packet_buffer;
>
> if (pktl) {
> + if (ff_check_interrupt(&s->interrupt_callback)) {
> + av_log(s, AV_LOG_DEBUG, "interrupted\n");
> + return AVERROR_EXIT;
> + }
> +
> AVPacket *next_pkt = &pktl->pkt;
>
> if (next_pkt->dts != AV_NOPTS_VALUE) {
I would put it at the end of the "if (pktl) {" body
because if a packet gets processed and returned no interrupt check is needed
also, do we have a testcase where this loop hangs ?
if not please provide a testcase
Thanks
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Awnsering whenever a program halts or runs forever is
On a turing machine, in general impossible (turings halting problem).
On any real computer, always possible as a real computer has a finite number
of states N, and will either halt in less than N cycles or never halt.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20191129/7fbb7c99/attachment.sig>
More information about the ffmpeg-devel
mailing list