mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-18 05:24:42 +00:00
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). Originally committed as revision 22224 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
e5a1c20707
commit
67d4b3f205
@ -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, struct URLProtocol *up,
|
||||
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, struct URLProtocol *up,
|
||||
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, struct URLProtocol *up,
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user