No description
Find a file
Lynne 7239be07be
vulkan_decode: use a single execution pool
Originally, the decoder had a single execution pool, with one
execution context per thread. Execution pools were always intended
to be thread-safe, as long as there were enough execution contexts
in the pool to satisfy all threads.

Due to synchronization issues, the threading part was removed at some
point, and, for decoding, each thread had its own execution pool.
Having a single execution pool per context is hacky, not to mention
wasteful.
Most importantly, we *cannot* associate single shaders across multiple
execution pools for a single application. This means that we cannot
use shaders to either apply film grain, or use this framework for
software-defined decoders.

The recent commits added threading capabilities back to the execution
pool, and the number of contexts in each pool was increased. This was
done with the assumption that the execution pool was singular, which
it was not. This led to increased parallelism and number of frames
in flight, which is taxing on memory.

This commit finally restores proper threading behaviour.
The validation layer has isses that are reported and addressed in the
earlier commit.
2024-12-23 04:25:08 +09:00
compat compat/w32pthreads: change pthread_t into pointer to malloced struct 2024-12-16 09:43:19 +01:00
doc avcodec: add ADPCM IMA XBOX decoder 2024-12-22 16:08:33 +11: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 vulkan_decode: use a single execution pool 2024-12-23 04:25:08 +09:00
libavdevice avdevice/dshow: fix unused variable warning 2024-10-17 13:04:17 +02:00
libavfilter avfilter/af_ashowinfo: fix scaling factor of replaygain peak values 2024-12-07 12:03:53 -05:00
libavformat avformat/iff: remove surplus if statement 2024-12-22 06:24:49 -05:00
libavutil hwcontext_vulkan: disable validation layer threading warnings 2024-12-23 04:25:08 +09:00
libpostproc
libswresample arm: Consistently use proper interworking function returns 2024-10-09 15:52:51 +03:00
libswscale swscale/output: fix bilinear yuv2rgb chroma interpolation 2024-12-21 10:57:54 +01:00
presets
tests avformat/riff: map 0069 twocc to ADPCM IMA XBOX decoder 2024-12-22 16:08:33 +11:00
tools tools/general_assembly: exclude Derek from GA emails 2024-11-28 15:51:37 +01:00
.gitattributes
.gitignore .gitignore: add exclusions for shader .c files 2024-11-18 07:54:21 +01:00
.mailmap
Changelog avcodec: add ADPCM IMA XBOX decoder 2024-12-22 16:08:33 +11:00
configure amfenc: Update the min version to 1.4.35.0 for AMF SDK. 2024-12-20 00:43:42 +01:00
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL.md INSTALL: explain the circular dependency issue and solution 2024-11-03 19:35:23 +01:00
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 RELEASE: update release number after release/7.1 branch 2024-10-09 01:55:50 +02:00

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.