FFmpeg git repo
Go to file
Lynne ed2391d341
ffv1enc: add a Vulkan encoder
This commit implements a standard, compliant, version 3 and version 4
FFv1 encoder, entirely in Vulkan. The encoder is written in standard
GLSL and requires a Vulkan 1.3 supporting GPU with the BDA extension.

The encoder can use any amount of slices, but nominally, should use
32x32 slices (1024 in total) to maximize parallelism.

All features are supported, as well as all pixel formats.
This includes:
 - Rice
 - Range coding with a custom quantization table
 - PCM encoding

CRC calculation is also massively parallelized on the GPU.

Encoding of unaligned dimensions on subsampled data requires
version 4, or requires oversizing the image to 64-pixel alignment
and cropping out the padding via container flags.

Performance-wise, this makes 1080p real-time screen capture possible
at 60fps on even modest GPUs.
2024-11-18 07:54:22 +01:00
compat
doc avformat/dvdvideodec: remove auto value for menu_lu option 2024-11-16 14:40:51 -06:00
ffbuild
fftools fftools/ffplay: fix crash when vk renderer is null 2024-11-06 16:34:02 +08:00
libavcodec ffv1enc: add a Vulkan encoder 2024-11-18 07:54:22 +01:00
libavdevice avdevice/dshow: fix unused variable warning 2024-10-17 13:04:17 +02:00
libavfilter avfilter/f_loop: fix aloop activate logic 2024-11-11 21:56:34 +01:00
libavformat avformat/dvdvideodec: don't allow seeking beyond dvdnav reported duration 2024-11-16 14:40:51 -06:00
libavutil hwcontext_vulkan: add the mapped software frame as an upload dependency 2024-11-18 07:54:20 +01:00
libpostproc
libswresample
libswscale sws/range_convert: fix RISC-V chrFromJpeg 2024-11-17 11:28:21 +02:00
presets
tests checkasm: add RISC-V vector width to arch info 2024-11-17 11:28:21 +02:00
tools enc_recon_frame_test: don't print an error on EOF. 2024-11-13 09:26:22 -05:00
.gitattributes
.gitignore .gitignore: add exclusions for shader .c files 2024-11-18 07:54:21 +01:00
.mailmap
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog lavc: deprecate the omx encoders 2024-11-09 02:46:17 +01:00
INSTALL.md INSTALL: explain the circular dependency issue and solution 2024-11-03 19:35:23 +01:00
LICENSE.md
MAINTAINERS MAINTAINERS: remove arpi 2024-11-13 02:15:59 +10:00
Makefile
README.md
RELEASE
configure ffv1enc: add a Vulkan encoder 2024-11-18 07:54:22 +01: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.