diff options
author | Martin Storsjö <martin@martin.st> | 2011-11-06 23:03:45 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2011-11-13 13:17:04 +0100 |
commit | 1dee0aca7401fc6c01f23ceedaff6533efb0fb28 (patch) | |
tree | dbd6104edaaf97d9b48d84cc9ee75ca1747d48e3 /libavformat/avio.h | |
parent | ddffc2fdc351d60ca190b016cccff4acff27823f (diff) | |
download | ffmpeg-1dee0aca7401fc6c01f23ceedaff6533efb0fb28.tar.gz |
avio: add avio_open2, taking an interrupt callback and options
The interrupt callback has to be passed in during opening (setting it
after opening isn't enough), since a blocking open couldn't be
interrupted otherwise.
Options are passed down to procotols and also need to be available
during open() in most cases.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavformat/avio.h')
-rw-r--r-- | libavformat/avio.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/libavformat/avio.h b/libavformat/avio.h index a4041cb770..b665bb3b3b 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -28,6 +28,7 @@ #include <stdint.h> #include "libavutil/common.h" +#include "libavutil/dict.h" #include "libavutil/log.h" #include "libavformat/version.h" @@ -64,6 +65,21 @@ typedef struct { * function pointers specified in avio_alloc_context() */ typedef struct { +#if !FF_API_OLD_AVIO + /** + * A class for private options. + * + * If this AVIOContext is created by avio_open2(), av_class is set and + * passes the options down to protocols. + * + * If this AVIOContext is manually allocated, then av_class may be set by + * the caller. + * + * warning -- this field can be NULL, be sure to not pass this AVIOContext + * to any av_opt_* functions in that case. + */ + AVClass *av_class; +#endif unsigned char *buffer; /**< Start of the buffer. */ int buffer_size; /**< Maximum buffer size */ unsigned char *buf_ptr; /**< Current position in the buffer */ @@ -574,6 +590,26 @@ int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen); int avio_open(AVIOContext **s, const char *url, int flags); /** + * Create and initialize a AVIOContext for accessing the + * resource indicated by url. + * @note When the resource indicated by url has been opened in + * read+write mode, the AVIOContext can be used only for writing. + * + * @param s Used to return the pointer to the created AVIOContext. + * In case of failure the pointed to value is set to NULL. + * @param flags flags which control how the resource indicated by url + * is to be opened + * @param int_cb an interrupt callback to be used at the protocols level + * @param options A dictionary filled with protocol-private options. On return + * this parameter will be destroyed and replaced with a dict containing options + * that were not found. May be NULL. + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure + */ +int avio_open2(AVIOContext **s, const char *url, int flags, + const AVIOInterruptCB *int_cb, AVDictionary **options); + +/** * Close the resource accessed by the AVIOContext s and free it. * This function can only be used if s was opened by avio_open(). * |