1
mirror of https://git.videolan.org/git/ffmpeg.git synced 2024-10-01 00:54:33 +02:00
Go to file
Andreas Rheinhardt 5b85ca5317 avutil/x86/pixelutils: Empty MMX state in ff_pixelutils_sad_8x8_mmxext
We currently mostly do not empty the MMX state in our MMX
DSP functions; instead we only do so before code that might
be using x87 code. This is a violation of the System V i386 ABI
(and maybe of other ABIs, too):
"The CPU shall be in x87 mode upon entry to a function. Therefore,
every function that uses the MMX registers is required to issue an
emms or femms instruction after using MMX registers, before returning
or calling another function." (See 2.2.1 in [1])
This patch does not intend to change all these functions to abide
by the ABI; it only does so for ff_pixelutils_sad_8x8_mmxext, as this
function can by called by external users, because it is exported
via the pixelutils API. Without this, the following fragment will
assert (on x86/x64):
    uint8_t src1[8 * 8], src2[8 * 8];
    av_pixelutils_sad_fn fn = av_pixelutils_get_sad_fn(3, 3, 0, NULL);
    fn(src1, 8, src2, 8);
    av_assert0_fpu();

[1]: https://raw.githubusercontent.com/wiki/hjl-tools/x86-psABI/intel386-psABI-1.1.pdf

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2023-11-04 01:26:03 +01:00
compat configure: Set WIN32_LEAN_AND_MEAN at configure time 2023-08-14 22:57:28 +03:00
doc doc/decoders: correctly note an option's default in libaribcaption 2023-11-02 14:07:00 +05:30
ffbuild configure: probe RISC-V Vector extension 2022-09-27 13:19:52 +02:00
fftools fftools/ffmpeg_mux_init: Restrict disabling automatic copying of metadata 2023-11-02 13:24:21 +01:00
libavcodec avcodec/aactab: Deduplicate swb_offset_960 tabs 2023-11-04 01:24:09 +01:00
libavdevice Bump versions after 6.1 2023-10-29 16:19:14 +01:00
libavfilter avfilter/vf_format: Deduplicate inputs 2023-11-04 01:24:09 +01:00
libavformat avformat/lafdec: Check for 0 parameters 2023-11-03 22:16:33 +01:00
libavutil avutil/x86/pixelutils: Empty MMX state in ff_pixelutils_sad_8x8_mmxext 2023-11-04 01:26:03 +01:00
libpostproc Bump versions after 6.1 2023-10-29 16:19:14 +01:00
libswresample Bump versions after 6.1 2023-10-29 16:19:14 +01:00
libswscale Bump versions after 6.1 2023-10-29 16:19:14 +01:00
presets
tests avfilter/drawutils: ban XYZ formats 2023-10-31 15:43:30 +01:00
tools tools/target_dec_fuzzer: Adjust threshold for CSCD 2023-11-01 16:40:21 +01:00
.gitattributes
.gitignore gitignore: add config_components.h 2022-03-17 18:35:41 -03:00
.mailmap mailmap: remap my email accounts 2023-11-03 20:57:49 +08:00
.travis.yml
Changelog Changelog: mark 6.1 2023-10-29 12:55:37 -03:00
configure configure: fix _Pragma check. 2023-11-02 21:03:43 +01:00
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS Use https for repository links 2023-03-01 21:59:10 +01:00
INSTALL.md
LICENSE.md
MAINTAINERS MAINTAINERS: add entry for jpegxl* 2023-10-17 08:44:23 -04:00
Makefile tools: Don't include the direct library names when linking 2023-10-02 22:49:07 +03:00
README.md README: fix typo and description of libavfilter 2021-10-08 09:44:34 +05:30
RELEASE RELEASE: update after 5.1 branch 2022-07-13 00:31:42 +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 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.