mirror of
https://mirror.skon.top/https://github.com/FFmpeg/FFmpeg
synced 2026-04-24 19:01:46 +08:00
aaa898a2d13625afd2c67d27e27ae60575d122cc
In some cases, we can just directly swizzle the order of input/output
planes, rather than applying a swizzle operation on the data itself.
This can eliminate some such swizzle operations entirely, for example
yuv444p -> vuya is now just a read, clear and write.
Results in a lot of simplifications like this:
rgb24 -> gbrp:
[ u8 XXXX -> +++X] SWS_OP_READ : 3 elem(s) packed >> 0
- [ u8 ...X -> +++X] SWS_OP_SWIZZLE : 1203
- [ u8 ...X -> +++X] SWS_OP_WRITE : 3 elem(s) planar >> 0
+ [ u8 ...X -> +++X] SWS_OP_WRITE : 3 elem(s) planar >> 0, via {2, 0, 1}
rgb24 -> gbrap16le:
[ u8 XXXX -> +++X] SWS_OP_READ : 3 elem(s) packed >> 0
[ u8 ...X -> +++X] SWS_OP_CONVERT : u8 -> u16 (expand)
- [u16 ...X -> +++X] SWS_OP_SWIZZLE : 1203
[u16 ...X -> ++++] SWS_OP_CLEAR : {_ _ _ 65535}
- [u16 .... -> ++++] SWS_OP_WRITE : 4 elem(s) planar >> 0
+ [u16 .... -> ++++] SWS_OP_WRITE : 4 elem(s) planar >> 0, via {2, 0, 1, 3}
yuv444p -> vuya:
- [ u8 XXXX -> +++X] SWS_OP_READ : 3 elem(s) planar >> 0
- [ u8 ...X -> +++X] SWS_OP_SWIZZLE : 2103
+ [ u8 XXXX -> +++X] SWS_OP_READ : 3 elem(s) planar >> 0, via {2, 1, 0}
[ u8 ...X -> ++++] SWS_OP_CLEAR : {_ _ _ 255}
[ u8 .... -> ++++] SWS_OP_WRITE : 4 elem(s) packed >> 0
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Niklas Haas <git@haasn.dev>
…
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 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.
Description
Languages
C
89.4%
Assembly
8.3%
Makefile
1.3%
C++
0.3%
GLSL
0.3%
Other
0.2%