[FFmpeg-devel] [PATCH 2/3] retry_transfer_wrapper: check url_interrupt_cb at the end.

Luca Barbato lu_zero
Fri Mar 4 23:43:03 CET 2011

From: Nicolas George <nicolas.george at normalesup.org>

Checking it too early causes ffmpeg to fail to write the trailer of its
output files if it was interrupted with the 'q' keystroke.

Note that when a protocol is interrupted by url_interrupt_cb, some data may
be silently discarded: the protocol context is not suitable for anything

Signed-off-by: Nicolas George <nicolas.george at normalesup.org>
 libavformat/avio.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/libavformat/avio.c b/libavformat/avio.c
index cf07c6d..48f591b 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -230,6 +230,8 @@ static inline int retry_transfer_wrapper(URLContext *h, unsigned char *buf, int
         if (ret)
            fast_retries = FFMAX(fast_retries, 2);
         len += ret;
+        if (url_interrupt_cb())
+            return AVERROR(EINTR);
     return len;

More information about the ffmpeg-devel mailing list