FFmpeg git repo
Go to file
Andreas Rheinhardt 55fc2c5a89 swresample/resample: Properly empty MMX state
There is a x86-32 MMXEXT implementation for resampling
planar 16bit data. multiple_resample() therefore calls
emms_c() if it thinks that this needed. And this is bad:

1. It is a maintenance nightmare because changes to the
x86 resample DSP code would necessitate changes to the check
whether to call emms_c().
2. The return value of av_get_cpu_flags() does not tell
whether the MMX DSP functions are in use, as they could
have been overridden by av_force_cpu_flags().
3. The MMX DSP functions will never be overridden in case of
an x86-32 build with --disable-sse2. In this scenario lots of
resampling tests (like swr-resample_exact_lin_async-s16p-8000-48000)
fail because the cpuflags indicate that SSE2 is available
(presuming that the test is run on a CPU with SSE2).
4. The check includes a call to av_get_cpu_flags(). This is not
optimized away for arches other than x86-32.
5. The check takes about as much time as emms_c() itself,
making it pointless.

This commit therefore removes the check and calls emms_c()
unconditionally (it is a no-op for non-x86).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-06-14 01:28:29 +02:00
compat
doc ffprobe: add -o option 2022-06-13 22:42:55 +02:00
ffbuild
fftools ffprobe: add -o option 2022-06-13 22:42:55 +02:00
libavcodec avcodec/x86/h264_qpel_8bit: Remove unused function 2022-06-11 22:43:20 +02:00
libavdevice
libavfilter avfilter/showinfo: refactor to use avutil/uuid 2022-06-12 18:34:38 +10:00
libavformat lavf/avio: add avio_vprintf() 2022-06-13 22:42:55 +02:00
libavutil avutil/tests/uuid: add uuid tests 2022-06-12 18:34:37 +10:00
libpostproc
libswresample swresample/resample: Properly empty MMX state 2022-06-14 01:28:29 +02:00
libswscale swscale/x86/yuv_2_rgb: fix access to memory past the frame data in yuv to rgb conversion 2022-06-06 09:51:17 +02:00
presets
tests avutil/tests/uuid: add uuid tests 2022-06-12 18:34:37 +10:00
tools tools/target_dec_fuzzer: add a custom get_buffer2() implementation 2022-06-06 09:40:44 -03:00
.gitattributes
.gitignore
.mailmap
.travis.yml
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog ffprobe: add -o option 2022-06-13 22:42:55 +02:00
INSTALL.md
LICENSE.md
MAINTAINERS MAINTAINERS: add myself as maintainer for LoongArch. 2022-06-08 18:29:30 +02:00
Makefile Makefile: avoid cp-ing over existing executable files 2022-06-01 19:38:50 -05:00
README.md
RELEASE
configure avcodec/libx264: Set min build version to 158 for msvc 2022-06-11 14:15:16 +02:00

README.md

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.