Index: patched-ffmpeg-mt/libavformat/avio.c |
=================================================================== |
--- patched-ffmpeg-mt/libavformat/avio.c (revision 41250) |
+++ patched-ffmpeg-mt/libavformat/avio.c (working copy) |
@@ -26,6 +26,9 @@ |
#include "libavcodec/opt.h" |
#include "os_support.h" |
#include "avformat.h" |
+#if CONFIG_NETWORK |
+#include "network.h" |
+#endif |
#if LIBAVFORMAT_VERSION_MAJOR >= 53 |
/** @name Logging context. */ |
@@ -76,6 +79,10 @@ |
URLContext *uc; |
int err; |
+#if CONFIG_NETWORK |
+ if (!ff_network_init()) |
+ return AVERROR(EIO); |
+#endif |
uc = av_mallocz(sizeof(URLContext) + strlen(filename) + 1); |
if (!uc) { |
err = AVERROR(ENOMEM); |
@@ -93,8 +100,7 @@ |
err = up->url_open(uc, filename, flags); |
if (err < 0) { |
av_free(uc); |
- *puc = NULL; |
- return err; |
+ goto fail; |
} |
//We must be careful here as url_seek() could be slow, for example for http |
@@ -106,6 +112,9 @@ |
return 0; |
fail: |
*puc = NULL; |
+#if CONFIG_NETWORK |
+ ff_network_close(); |
+#endif |
return err; |
} |
@@ -204,6 +213,9 @@ |
if (h->prot->url_close) |
ret = h->prot->url_close(h); |
+#if CONFIG_NETWORK |
+ ff_network_close(); |
+#endif |
av_free(h); |
return ret; |
} |