Go to file
Andreas Rheinhardt 0d43adcbef configure: Explicitly check for static_assert, _Static_assert
C11 provides static assertions via _Static_assert and
provides static_assert as a convenience define for this
in assert.h. Our codebase uses the latter, as _Static_assert
has actually already been deprecated in C23.

Not all toolchains that declare support for C11 actually
support it; e.g. MSVC 19.27 does not support _Static_assert,
but somehow supports static_assert. MSVC 19.27 admits to be
a "preview implementation of the ISO C11 standard",
so this is not surprising (MSVC 19.28 does not come with
this caveat).

Furthermore some FATE boxes [1] use old GCC toolchains (with
only experimental support for C11) where _Static_assert is
supported, but assert.h does not provide the fallback define.
They are broken since the first usage of static_assert.

This commit therefore checks whether static_assert and
_Static_assert work with assert.h included; if not,
configure errors out.

This intentionally drops support for MSVC 19.27. Users like
the old FATE boxes above can still add -Dstatic_assert=_Static_assert
to cflags as a workaround if desired.

[1]: https://fate.ffmpeg.org/report.cgi?time=20240321123620&slot=sh4-debian-qemu-gcc-4.7

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2024-03-24 19:05:35 +01:00
compat
doc avutil/film_grain_params: add av_film_grain_params_select() 2024-03-23 18:55:15 +01:00
ffbuild makefile: Clean up missed object files with "make clean" 2024-03-10 23:45:51 +02:00
fftools ffprobe: adapt to new AVFilmGrainParams 2024-03-23 18:54:36 +01:00
libavcodec x86: Update x86inc.asm 2024-03-24 14:53:57 +01:00
libavdevice avformat/mux: Rename FF_FMT_ALLOW_FLUSH->FF_OFMT_FLAG_ALLOW_FLUSH 2024-03-22 23:57:19 +01:00
libavfilter x86: Avoid using 'd' as an argument name 2024-03-24 14:53:57 +01:00
libavformat avformat/demux: Combine "Packet corrupt" logmessages 2024-03-24 19:02:41 +01:00
libavutil avutil/film_grain_params: remove do loop in CHECK macro 2024-03-24 10:53:21 -04:00
libpostproc libs: bump major version for all libraries 2024-03-07 11:29:43 -03:00
libswresample libs: bump major version for all libraries 2024-03-07 11:29:43 -03:00
libswscale avutil/x86util: Fix broken pre-SSE4.1 PMINSD emulation 2024-03-17 13:52:27 +01:00
presets
tests tests/fate/ffmpeg: evaluate thread count in fate-run.sh rather than make 2024-03-23 14:07:04 +01:00
tools tools/target_dec_fuzzer: adjust threshold for AV_CODEC_ID_IFF_ILBM 2024-03-19 04:10:48 +01:00
.gitattributes lavf/assenc: normalize line endings to \n 2024-02-11 17:01:07 -08:00
.gitignore
.mailmap .mailmap: Update my mailmap entry 2024-02-23 00:17:21 +01:00
.travis.yml
Changelog Changelog: add dnn libtorch backend entry 2024-03-23 11:42:13 +01:00
configure configure: Explicitly check for static_assert, _Static_assert 2024-03-24 19:05:35 +01:00
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL.md
LICENSE.md
MAINTAINERS MAINTAINERS: add myself as dvdvideo demuxer, rcwt muxer maintainer 2024-03-10 15:21:23 +01:00
Makefile tools: Add target_sws_fuzzer.c 2024-02-21 18:24:17 +01:00
README.md
RELEASE

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 means to alter decoded audio and video through a directed graph of connected 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.