mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-10-28 10:04:37 +08:00
9bbe8397e2c0e58e5bbe1e1e45ef10052b44b165
The output YCbCr matrix and range are negotiated, and selectable via the new out_color_matrix and out_range options. Without them, the output prefers BT.601 (SMPTE 170M) limited range, matching swscale behavior, while still following a single matrix and range negotiated for the input, as buffersrc does for ordinary YUV. Since RGB input is not constrained, RGB to YUV conversion defaults to BT.601 limited range; RGB output prefers full range without forcing it, so that it does not carry over into YUV output converted from it again. The output frames are tagged with the negotiated properties, and YUV output never carries the RGB tag of the input. As without a requested format the options are negotiated before the output is known to be RGB, they are rejected for RGB output. Without RGB to YUV conversion, the output description must not contradict that of the input, as the samples cannot be converted; an unspecified input takes on the negotiated description, also when frames are passed through. Chroma is averaged over each subsampled block before clamping, high bit depth output uses the code maximum for full range and keeps padding bits clear, and limited range YCgCo uses the luma excursion for chroma. The averaging centers the chroma samples, so with a requested format, the chroma location is negotiated independently of the input, and subsampled output must allow centered chroma. Co-authored-by: Timo Rothenpieler <timo@rothenpieler.org> Co-authored-by: Reinhard Nißl <rnissl@gmx.de> Assisted-By: Claude Opus 5.5
FFmpeg README
FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.
Libraries
libavcodecprovides implementation of a wider range of codecs.libavformatimplements streaming protocols, container formats and basic I/O access.libavutilincludes hashers, decompressors and miscellaneous utility functions.libavfilterprovides means to alter decoded audio and video through a directed graph of connected filters.libavdeviceprovides an abstraction to access capture and playback devices.libswresampleimplements audio mixing and resampling routines.libswscaleimplements 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,ismindexandqt-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 Forgejo or 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.
See https://ffmpeg.org/developer.html for more information.
Languages
C
88.8%
Assembly
8.4%
Makefile
1.6%
GLSL
0.4%
C++
0.3%
Other
0.3%