[FFmpeg-cvslog] r22224 - trunk/libavformat/avio.c

mstorsjo subversion
Fri Mar 5 23:30:21 CET 2010


Author: mstorsjo
Date: Fri Mar  5 23:30:21 2010
New Revision: 22224

Log:
Always call ff_network_init/ff_network_close when opening protocols

ff_network_init is a no-op on all platforms except windows, and on
windows the performance penalty is minimal (less than 1 ms in my tests).

Modified:
   trunk/libavformat/avio.c

Modified: trunk/libavformat/avio.c
==============================================================================
--- trunk/libavformat/avio.c	Fri Mar  5 21:04:24 2010	(r22223)
+++ trunk/libavformat/avio.c	Fri Mar  5 23:30:21 2010	(r22224)
@@ -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 @@ int url_open_protocol (URLContext **puc,
     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 @@ int url_open_protocol (URLContext **puc,
     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 @@ int url_open_protocol (URLContext **puc,
     return 0;
  fail:
     *puc = NULL;
+#if CONFIG_NETWORK
+    ff_network_close();
+#endif
     return err;
 }
 
@@ -204,6 +213,9 @@ int url_close(URLContext *h)
 
     if (h->prot->url_close)
         ret = h->prot->url_close(h);
+#if CONFIG_NETWORK
+    ff_network_close();
+#endif
     av_free(h);
     return ret;
 }



More information about the ffmpeg-cvslog mailing list