From 6aa0b98fb27ab22bd62a365de44d9f16cc07d03e Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Sun, 6 Nov 2011 14:10:16 +0200 Subject: avio: Add AVIOInterruptCB This is a better io interrupt callback function, which has an opaque parameter, which is given to the interrupt callback. This allows callers to precisely cancel IO for one single AVFormatContext, without interrupt other ones in the same process. Note, it's not needed in AVIOContext, at the moment. Signed-off-by: Anton Khirnov --- libavformat/avio.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'libavformat/avio.h') diff --git a/libavformat/avio.h b/libavformat/avio.h index be14e3c89d..a4041cb770 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -35,6 +35,22 @@ #define AVIO_SEEKABLE_NORMAL 0x0001 /**< Seeking works like for a local file */ +/** + * Callback for checking whether to abort blocking functions. + * AVERROR_EXIT is returned in this case by the interrupted + * function. During blocking operations, callback is called with + * opaque as parameter. If the callback returns 1, the + * blocking operation will be aborted. + * + * No members can be added to this struct without a major bump, if + * new elements have been added after this struct in AVFormatContext + * or AVIOContext. + */ +typedef struct { + int (*callback)(void*); + void *opaque; +} AVIOInterruptCB; + /** * Bytestream IO Context. * New fields can be added to the end with minor version bumps. @@ -109,6 +125,7 @@ typedef struct URLContext { void *priv_data; char *filename; /**< specified URL */ int is_connected; + AVIOInterruptCB interrupt_callback; } URLContext; #define URL_PROTOCOL_FLAG_NESTED_SCHEME 1 /*< The protocol name can be the first part of a nested protocol scheme */ -- cgit v1.2.3