1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-02 03:06:28 +02:00
Go to file
Martin Storsjö e30369bc1c aarch64: Use regular hwcaps flags instead of HWCAP_CPUID for CPU feature detection on Linux
This makes the code much simpler (especially for adding support
for other instruction set extensions), avoids needing inline
assembly for this feature, and generally is more of the canonical
way to do this.

The CPU feature detection was added in
493fcde50a, using HWCAP_CPUID.

The argument for using that, was that HWCAP_CPUID was added much
earlier in the kernel (in Linux v4.11), while the HWCAP flags for
individual features always come later. This allows detecting support
for new CPU extensions before the kernel exposes information about
them via hwcap flags.

However in practice, there's probably quite little advantage in this.
E.g. HWCAP2_I8MM was added in Linux v5.10 - long after HWCAP_CPUID,
but there's probably very little practical cases where one would
run a kernel older than that on a CPU that supports those instructions.

Additionally, we provide our own definitions of the flag values to
check (as they are fixed constants anyway), with names not conflicting
with the ones from system headers. This reduces the number of ifdefs
needed, and allows detecting those features even if building with
userland headers that are lacking the definitions of those flags.

Also, slightly older versions of QEMU, e.g. 6.2 in Ubuntu 22.04,
do expose support for these features via HWCAP flags, but the
emulated cpuid registers are missing the bits for exposing e.g. I8MM.
(This issue is fixed in later versions of QEMU though.)

Signed-off-by: Martin Storsjö <martin@martin.st>
2024-03-04 10:13:31 +02:00
compat configure: Set WIN32_LEAN_AND_MEAN at configure time 2023-08-14 22:57:28 +03:00
doc avformat/wavdec: dynamically set max_size by default 2024-03-02 19:13:03 +01:00
ffbuild riscv: test for assembler support 2023-12-08 17:21:09 +02:00
fftools fftools/ffprobe: Print dispositions generically 2024-03-03 17:16:45 +01:00
libavcodec avcodec/aactab: Deduplicate ltp_coef and tns_tmp2_map tables 2024-03-04 02:11:53 +01:00
libavdevice avdevice: deprecate sdl outdev 2024-02-28 10:28:49 +01:00
libavfilter avutil/vulkan: Don't autoinclude vulkan_loader.h 2024-03-03 22:55:26 +01:00
libavformat avformat/mpegts: detect synchronous metadata KLV more reliably 2024-03-04 00:33:20 +01:00
libavutil aarch64: Use regular hwcaps flags instead of HWCAP_CPUID for CPU feature detection on Linux 2024-03-04 10:13:31 +02:00
libpostproc Bump versions after 6.1 2023-10-29 16:19:14 +01:00
libswresample swresample/resample: fix rounding errors with filter_size=1 and phase_shift=0 2024-03-02 19:13:03 +01:00
libswscale libswscale/utils: Fix bayer to yuvj 2024-02-21 18:24:17 +01:00
presets
tests avformat/wavdec: dynamically set max_size by default 2024-03-02 19:13:03 +01:00
tools tools: Add target_sws_fuzzer.c 2024-02-21 18:24:17 +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 libavformat/dvdvideo: add DVD-Video demuxer, powered by libdvdread and libdvdnav 2024-03-02 08:12:29 +01:00
configure libavformat/dvdvideo: add DVD-Video demuxer, powered by libdvdread and libdvdnav 2024-03-02 08:12:29 +01:00
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL.md
LICENSE.md
MAINTAINERS MAINTAINERS: remove myself from here 2024-02-04 22:22:42 +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.