No description
Find a file
Niklas Haas dddf536d3d swscale/cms: add color management subsystem
The underlying color mapping logic was ported as straightforwardly as possible
from libplacebo, although the API and glue code has been very heavily
refactored / rewritten. In particular, the generalization of gamut mapping
methods is replaced by a single ICC intent selection, and constants have been
hard-coded.

To minimize the amount of overall operations, this gamut mapping LUT now embeds
a direct end-to-end transformation to the output color space; something that
libplacebo does in shaders, but which is prohibitively expensive in software.

In order to preserve compatibility with dynamic tone mapping without severely
regressing performance, we add the ability to generate a pair of "split" LUTS,
one for encoding the input and output to the perceptual color space, and a
third to embed the tone mapping operation. Additionally, this intermediate
space could be used for additional subjective effect (e.g. changing
saturation or brightness).

The big downside of the new approach is that generating a static color mapping
LUT is now fairly slow, as the chromaticity lobe peaks have to be recomputed
for every single RGB value, since correlated RGB colors are not necessarily
aligned in ICh space. Generating a split 3DLUT significantly alleviates this
problem because the expensive step is done as part of the IPT input LUT, which
can share the same hue peak calculation at least for all input intensities.
2024-12-23 12:33:43 +01:00
compat compat/w32pthreads: change pthread_t into pointer to malloced struct 2024-12-16 09:43:19 +01:00
doc avfilter/vf_scale: add colorspace and transfer property options 2024-12-23 12:33:43 +01:00
ffbuild configure: Add wasm as a fake arch 2024-12-04 16:43:06 +08:00
fftools fftools/sync_queue: switch from AVFifo+ObjPool to AVContainerFifo 2024-12-15 14:05:34 +01:00
libavcodec libavcodec/v4l2_buffers.c: set AVFrame interlaced flags 2024-12-23 16:16:16 +08:00
libavdevice
libavfilter avfilter/vf_scale: strip metadata when changing colorspace 2024-12-23 12:33:43 +01:00
libavformat avformat/iff: remove surplus if statement 2024-12-22 06:24:49 -05:00
libavutil configure: add option to statically link to libvulkan 2024-12-23 04:25:09 +09:00
libpostproc
libswresample
libswscale swscale/cms: add color management subsystem 2024-12-23 12:33:43 +01:00
presets
tests swscale/unscaled: correctly round yuv2yuv when not dithering 2024-12-23 11:29:22 +01:00
tools tools/general_assembly: exclude Derek from GA emails 2024-11-28 15:51:37 +01:00
.gitattributes
.gitignore
.mailmap
Changelog avcodec: add ADPCM IMA XBOX decoder 2024-12-22 16:08:33 +11:00
configure configure: add option to statically link to libvulkan 2024-12-23 04:25:09 +09:00
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL.md
LICENSE.md
MAINTAINERS MAINTAINERS: Lauri is still available but is really low on time nowadays 2024-11-28 23:19:00 +01:00
Makefile configure: Add wasm as a fake arch 2024-12-04 16:43:06 +08: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.