Go to file
Lynne 6f5247f5e6 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-19 12:34:12 +00:00
compat compat: Fix the fallback definition of stdc_trailing_zeros 2024-09-25 21:37:11 +02:00
doc avformat/dvdvideodec: remove auto value for menu_lu option 2024-11-17 09:57:11 +00:00
ffbuild configure: Add detection of assembler support for SVE/SVE2 2024-09-28 18:06:25 +02:00
fftools fftools/ffplay: fix crash when vk renderer is null 2024-11-07 09:28:10 +01:00
libavcodec ffv1enc: add a Vulkan encoder 2024-11-19 12:34:12 +00:00
libavdevice avdevice/version: bump 2024-11-07 09:34:33 +01:00
libavfilter avfilter/af_awiener: improve output quality 2024-11-18 09:27:53 +00:00
libavformat avformat/adxdec: add AHX support 2024-11-19 10:32:37 +00:00
libavutil hwcontext_vulkan: add the mapped software frame as an upload dependency 2024-11-19 12:34:12 +00:00
libswresample swresample/version: bump 2024-11-07 09:34:42 +01:00
libswscale sws/range_convert: fix RISC-V chrFromJpeg 2024-11-17 09:57:11 +00:00
presets
tests checkasm: add RISC-V vector width to arch info 2024-11-17 09:57:11 +00:00
tools enc_recon_frame_test: don't print an error on EOF. 2024-11-14 08:47:00 +00:00
.gitattributes
.gitignore .gitignore: add exclusions for shader .c files 2024-11-19 12:34:12 +00:00
.mailmap
Changelog lavc: deprecate the omx encoders 2024-11-09 07:26:18 +00:00
configure ffv1enc: add a Vulkan encoder 2024-11-19 12:34:12 +00:00
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL.md
LICENSE.md
Makefile add tools/target_swr_fuzzer 2024-08-15 10:48:31 +02:00
README.md
RELEASE RELEASE: update release number after release/7.1 branch 2024-10-10 13:33:47 +02:00

Librempeg README

Librempeg 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.

Examples

Coding examples are available in the doc/examples directory.

License

Librempeg codebase is mainly LGPL-licensed with optional components licensed under GPL. Please refer to the LICENSE file for detailed information.

Contributing

Contributing can be done via Github pull requests.