[FFmpeg-devel] [PATCH] avformat/utils.c: allows av_read_frame to return after a timeout period.

ggarra13 at gmail.com ggarra13 at gmail.com
Sun Dec 1 13:39:52 EET 2019


From: Gonzalo Garramuño <ggarra13 at gmail.com>

Moved the check inside and at the end of the if (pktl) as per Michael Niedermayer's suggestion.
This patch is based on one from Blake Senftner ( bsenftner at earthlink.net ).

The hanging in av_read_frame can be reproduced with an rtmp stream that is aborted midway and ffplay (for example) playing that stream.
---
 libavformat/utils.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 8196442dd1..653918d5a5 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1836,6 +1836,11 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt)
                                                &s->internal->packet_buffer_end, pkt);
                 goto return_packet;
             }
+
+            if (ff_check_interrupt(&s->interrupt_callback)) {
+                av_log(s, AV_LOG_DEBUG, "interrupted\n");
+                return AVERROR_EXIT;
+            }
         }
 
         ret = read_frame_internal(s, pkt);
-- 
2.17.0



More information about the ffmpeg-devel mailing list