aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/avio.h
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2011-11-06 23:03:45 +0200
committerAnton Khirnov <anton@khirnov.net>2011-11-13 13:17:04 +0100
commit1dee0aca7401fc6c01f23ceedaff6533efb0fb28 (patch)
treedbd6104edaaf97d9b48d84cc9ee75ca1747d48e3 /libavformat/avio.h
parentddffc2fdc351d60ca190b016cccff4acff27823f (diff)
downloadffmpeg-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.h36
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().
*