changeset 6161:f7090c70ed34 libavformat

Add priv_data_size and priv_data_class to URLProtocol This allows url_alloc to allocate and initialize the priv_data.
author mstorsjo
date Tue, 22 Jun 2010 14:09:08 +0000
parents 1b4be334ef89
children 4c0017a87855
files avformat.h avio.c avio.h
diffstat 3 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/avformat.h	Tue Jun 22 14:03:37 2010 +0000
+++ b/avformat.h	Tue Jun 22 14:09:08 2010 +0000
@@ -22,7 +22,7 @@
 #define AVFORMAT_AVFORMAT_H
 
 #define LIBAVFORMAT_VERSION_MAJOR 52
-#define LIBAVFORMAT_VERSION_MINOR 70
+#define LIBAVFORMAT_VERSION_MINOR 71
 #define LIBAVFORMAT_VERSION_MICRO  0
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
--- a/avio.c	Tue Jun 22 14:03:37 2010 +0000
+++ b/avio.c	Tue Jun 22 14:09:08 2010 +0000
@@ -118,6 +118,13 @@
     uc->flags = flags;
     uc->is_streamed = 0; /* default = not streamed */
     uc->max_packet_size = 0; /* default: stream file */
+    if (up->priv_data_size) {
+        uc->priv_data = av_mallocz(up->priv_data_size);
+        if (up->priv_data_class) {
+            *(AVClass**)uc->priv_data = up->priv_data_class;
+            av_opt_set_defaults(uc->priv_data);
+        }
+    }
 
     *puc = uc;
     return 0;
@@ -272,6 +279,8 @@
 #if CONFIG_NETWORK
     ff_network_close();
 #endif
+    if (h->prot->priv_data_size)
+        av_free(h->priv_data);
     av_free(h);
     return ret;
 }
--- a/avio.h	Tue Jun 22 14:03:37 2010 +0000
+++ b/avio.h	Tue Jun 22 14:09:08 2010 +0000
@@ -251,6 +251,8 @@
     int64_t (*url_read_seek)(URLContext *h, int stream_index,
                              int64_t timestamp, int flags);
     int (*url_get_file_handle)(URLContext *h);
+    int priv_data_size;
+    const AVClass *priv_data_class;
 } URLProtocol;
 
 #if LIBAVFORMAT_VERSION_MAJOR < 53