• wm4's avatar
    avformat: make avformat_network_init() explicitly optional · 631c56a8
    wm4 authored
    It was sort of optional before - if you didn't call it, networking was
    initialized on demand, and an ugly warning was logged. Also, the doxygen
    comments threatened that it would be made strictly required one day.
    
    Make it explicitly optional. I would prefer to deprecate it fully, but
    there might still be legitimate reasons to use this. But the average
    user won't need it.
    
    This is needed only for two reasons: to initialize TLS libraries like
    OpenSSL and GnuTLS, and winsock.
    
    OpenSSL and GnuTLS were already silently initialized on demand if the
    global network init function was not called. They also have various
    thread-safety acrobatics, which make concurrent initialization within
    libavformat safe. In addition, the libraries are moving towards making
    their global init functions safe, which removes all need for central
    global init. In particular, GnuTLS 3.5.16 and OpenSSL 1.1.0g have been
    found to have safe init functions. In all cases, they use internal
    reference counters to avoid that the global uninit functions interfere
    with concurrent uses of the library by other API users who called global
    init.
    
    winsock should be thread-safe as well, and maintains an internal
    reference counter as well.
    
    Since we still support ancient TLS libraries, which do not have this
    fixed, and since it's unknown whether winsock and GnuTLS
    reinitialization is costly in any way, don't deprecate the libavformat
    functions yet.
    631c56a8
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
ffbuild Loading commit data...
fftools Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.md Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
configure Loading commit data...