1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00
Go to file
wm4 631c56a8e4 avformat: make avformat_network_init() explicitly optional
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.
2018-01-16 12:57:04 +01:00
compat compat/os2threads: support static mutexes 2018-01-07 00:14:12 -03:00
doc avformat: make avformat_network_init() explicitly optional 2018-01-16 12:57:04 +01:00
ffbuild Merge commit '17b6c7efb471e8ff1b8a7271f6531ba1d52bf69c' 2017-11-12 01:02:02 -03:00
fftools fftools/ffmpeg_opt: Remove a write-only variable. 2018-01-08 00:17:00 +01:00
libavcodec avcodec/wavpack: Fix integer overflows in wv_unpack_stereo / mono 2018-01-15 19:55:22 +01:00
libavdevice avdevice/gdigrab: Fix screen size and mouse position calculations on hi-DPI screens 2018-01-12 12:31:55 +01:00
libavfilter avfilter/vf_idet: added more YUVA formats to idet query_formats 2018-01-14 23:19:01 +01:00
libavformat avformat: make avformat_network_init() explicitly optional 2018-01-16 12:57:04 +01:00
libavresample avresample: remove deprecated attribute from the AVAudioResampleContext struct 2018-01-09 10:56:53 -03:00
libavutil hwcontext_vdpau: implement av_hwdevice_get_hwframe_constraints() 2018-01-15 12:37:30 +01:00
libpostproc postproc: Drop deprecated qp typedef 2017-10-22 00:35:23 -03:00
libswresample lswr/rematrix: Support s32p. 2017-11-01 01:04:43 +01:00
libswscale Fix missing used attribute for inline assembly variables 2017-11-13 03:58:34 +01:00
presets presets: remove moldering iPod presets 2014-06-17 16:15:04 -08:00
tests avcodec/dcaenc: Use ffmpeg mdct instead of own implementation 2018-01-13 18:13:58 +00:00
tools Remove the ffserver program 2018-01-06 18:31:37 +00:00
.gitattributes fate: add SCC test 2017-01-27 17:06:42 +01:00
.gitignore Remove the ffserver program 2018-01-06 18:31:37 +00:00
.travis.yml Merge commit '4809781586d1c956005f72946a2aab5915eab350' 2017-10-28 15:08:31 -03:00
Changelog Changelog: add VideoToolbox HEVC support 2018-01-06 15:30:07 -08:00
configure configure: Simplify detection of static x264 on systems without pkg-config. 2018-01-11 11:12:38 +01:00
CONTRIBUTING.md Add CONTRIBUTING.md 2016-09-18 10:02:13 +01:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL.md INSTALL: add markdown syntax 2014-05-28 22:38:38 +02:00
LICENSE.md Merge commit '4fef648d10bf3bcfd4b8fa5755c1128966a2427c' 2017-03-15 22:07:47 +01:00
MAINTAINERS Remove the ffserver program 2018-01-06 18:31:37 +00:00
Makefile Makefile: fix distclean target 2017-11-13 17:37:56 -03:00
README.md Remove the ffserver program 2018-01-06 18:31:37 +00:00
RELEASE RELEASE: update for git after 3.4 branchpoint 2017-10-11 02:46:23 +02:00

FFmpeg README

FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.

Libraries

  • libavcodec provides implementation of a wider range of codecs.
  • libavformat implements streaming protocols, container formats and basic I/O access.
  • libavutil includes hashers, decompressors and miscellaneous utility functions.
  • libavfilter provides a mean to alter decoded Audio and Video through chain of filters.
  • libavdevice provides an abstraction to access capture and playback devices.
  • libswresample implements audio mixing and resampling routines.
  • libswscale implements color conversion and scaling routines.

Tools

  • ffmpeg is a command line toolbox to manipulate, convert and stream multimedia content.
  • ffplay is a minimalistic multimedia player.
  • ffprobe is a simple analysis tool to inspect multimedia content.
  • Additional small tools such as aviocat, ismindex and qt-faststart.

Documentation

The offline documentation is available in the doc/ directory.

The online documentation is available in the main website and in the wiki.

Examples

Coding examples are available in the doc/examples directory.

License

FFmpeg codebase is mainly LGPL-licensed with optional components licensed under GPL. Please refer to the LICENSE file for detailed information.

Contributing

Patches should be submitted to the ffmpeg-devel mailing list using git format-patch or git send-email. Github pull requests should be avoided because they are not part of our review process and will be ignored.