aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Pitoiset2012-05-21 11:24:54 +0200
committerMartin Storsjö2012-05-22 23:16:41 +0300
commit32d545e0a4686e919319bf472725ea0162b72720 (patch)
treeec46d42e83646b1a2518be610e46a0388d79c157
parent0ce4a627c9b8bcd2c23d05ada3e4858684cb8127 (diff)
avio: Add a function for signalling end of reading/writing
Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r--libavformat/avio.c7
-rw-r--r--libavformat/url.h13
2 files changed, 20 insertions, 0 deletions
diff --git a/libavformat/avio.c b/libavformat/avio.c
index ba25abea38..371500e8a6 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -345,6 +345,13 @@ int ffurl_get_file_handle(URLContext *h)
return h->prot->url_get_file_handle(h);
}
+int ffurl_shutdown(URLContext *h, int flags)
+{
+ if (!h->prot->url_shutdown)
+ return AVERROR(EINVAL);
+ return h->prot->url_shutdown(h, flags);
+}
+
int ff_check_interrupt(AVIOInterruptCB *cb)
{
int ret;
diff --git a/libavformat/url.h b/libavformat/url.h
index bf8b6ed6e7..0f0de7881c 100644
--- a/libavformat/url.h
+++ b/libavformat/url.h
@@ -81,6 +81,7 @@ typedef struct URLProtocol {
int64_t (*url_read_seek)(URLContext *h, int stream_index,
int64_t timestamp, int flags);
int (*url_get_file_handle)(URLContext *h);
+ int (*url_shutdown)(URLContext *h, int flags);
int priv_data_size;
const AVClass *priv_data_class;
int flags;
@@ -201,6 +202,18 @@ int64_t ffurl_size(URLContext *h);
int ffurl_get_file_handle(URLContext *h);
/**
+ * Signal the URLContext that we are done reading or writing the stream.
+ *
+ * @param h pointer to the resource
+ * @param flags flags which control how the resource indicated by url
+ * is to be shutdown
+ *
+ * @return a negative value if an error condition occurred, 0
+ * otherwise
+ */
+int ffurl_shutdown(URLContext *h, int flags);
+
+/**
* Register the URLProtocol protocol.
*
* @param size the size of the URLProtocol struct referenced