FFmpeg git repo
Go to file
Mark Thompson b128b0ce22 cbs_h265: Detect more reference combinations which would overflow the DPB
In total, the number of short term references (from the selected short
term ref pic set), the number of long term references (combining both the
used candidates from the SPS and those defined in the slice header) and
the number of instances of the current picture (usually one, but can be
two if current picture reference is enabled) must never exceed the size
of the DPB.  This is a generalisation of the condition associated with
num_long_term_pics in 7.4.7.1.

We use this to apply tighter bounds to the number of long term pictures
referred to in the slice header, and also to detect the invalid case where
the second reference to the current picture would not fit in the DPB (this
case can't be detected earlier because an STRPS with 15 pictures can still
be valid in the same stream when used with a different PPS which does not
require two DPB slots for the current picture).

Fixes: 24913/clusterfuzz-testcase-minimized-ffmpeg_BSF_HEVC_METADATA_fuzzer-6261760693370880
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Tested-by: Michael Niedermayer <michael@niedermayer.cc>
2021-03-12 22:45:33 +00:00
compat compat/cuda: correct ushort4 to use ushort 2021-02-22 17:03:52 +01:00
doc avformat/gopher: Add support for Gopher over TLS 2021-03-11 23:47:19 +01:00
ffbuild ffbuild/common: Make deletion of templates possible 2021-02-07 09:45:04 +01:00
fftools fftools/ffplay: do not write out of rdft visualization texture 2021-03-10 20:01:03 +01:00
libavcodec cbs_h265: Detect more reference combinations which would overflow the DPB 2021-03-12 22:45:33 +00:00
libavdevice avdevice/decklink: add missing include for buffer_size_t 2021-03-11 17:39:09 -03:00
libavfilter avfilter/vf_uspp: Fix leak of packet side data 2021-03-12 19:05:37 +01:00
libavformat avformat/adp, svs: Remove redundant av_shrink_packet() 2021-03-12 17:13:10 +01:00
libavresample
libavutil avutil/buffer_internal: Include internal for buffer_size_t 2021-03-11 14:07:15 +01:00
libpostproc lavu/mem: move the DECLARE_ALIGNED macro family to mem_internal on next+1 bump 2021-01-01 14:14:57 +01:00
libswresample swresample/audioconvert: Fix left shift of negative value 2020-09-30 10:50:45 +02:00
libswscale swscale/x86/swscale: Remove unused ASM constants 2021-02-24 09:47:54 +01:00
presets
tests lavc: remove tests/options 2021-03-08 09:29:50 +01:00
tools tools/target_dec_fuzzer: Adjust flv1 threshold 2021-03-08 22:08:49 +01:00
.gitattributes
.gitignore
.mailmap mailmap: add entry for myself 2021-03-09 02:09:55 +00:00
.travis.yml
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog avformat/gopher: Add support for Gopher over TLS 2021-03-11 23:47:19 +01:00
INSTALL.md
LICENSE.md
MAINTAINERS MAINTAINERS: update names 2021-01-20 01:04:26 -06:00
Makefile tools/enum_options: fix build and add to Makefile 2020-11-20 15:20:24 +01:00
README.md
RELEASE
configure avformat/gopher: Add support for Gopher over TLS 2021-03-11 23:47:19 +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 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.