FFmpeg git repo
Go to file
Niklas Haas 66845cffc3 avcodec/h264dec: apply H.274 film grain
Because we need access to ref frames without film grain applied, we have
to add an extra AVFrame to H264Picture to avoid messing with the
original. This requires some amount of overhead to make the reference
moves work out, but it allows us to benefit from frame multithreading
for film grain application "for free".

Unfortunately, this approach requires twice as much RAM to be constantly
allocated for ref frames, due to the need for an extra buffer per
H264Picture. In theory, we could get away with freeing up this memory as
soon as it's no longer needed (since ref frames do not need film grain
buffers any longer), but trying to call ff_thread_release_buffer() from
output_frame() conflicts with possible later accesses to that same frame
and I'm not sure how to synchronize that well.

Tested on all three cases of (no fg), (fg present but exported) and (fg
present and not exported), with and without threading.

Co-authored-by: James Almer <jamrial@gmail.com>
Signed-off-by: Niklas Haas <git@haasn.dev>
Signed-off-by: James Almer <jamrial@gmail.com>
2021-08-24 09:58:52 -03:00
compat
doc avformat/matroskaenc: Pass dispositions through unchanged by default 2021-08-24 04:23:29 +02:00
ffbuild
fftools fftools/cmdutils: Switch to avfilter_filter_pad_count() 2021-08-20 14:29:15 +02:00
libavcodec avcodec/h264dec: apply H.274 film grain 2021-08-24 09:58:52 -03:00
libavdevice
libavfilter avfilter/avfilter: add a return at the end of a non-void function 2021-08-24 09:36:21 -03:00
libavformat avformat/matroskaenc: Only compile functions when needed 2021-08-24 04:23:50 +02:00
libavutil avcodec/h264_slice: compute and export film grain seed 2021-08-24 09:58:52 -03:00
libpostproc
libswresample
libswscale
presets
tests avformat/matroskaenc: Pass dispositions through unchanged by default 2021-08-24 04:23:29 +02:00
tools tools/dvd2concat: use option keyword 2021-08-22 11:44:17 +02:00
.gitattributes
.gitignore
.mailmap
.travis.yml
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog avcodec: add SMC encoder 2021-08-18 08:55:56 +02:00
INSTALL.md
LICENSE.md
MAINTAINERS
Makefile FATE: add a test for sliced scaling 2021-08-08 19:26:05 +02:00
README.md
RELEASE
configure

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 a mean to alter decoded Audio and Video through chain of 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.