FFmpeg git repo
Go to file
Anton Khirnov f5d03b972c fftools/ffmpeg: simplify propagating fallback parameters from decoders to filters
Current callstack looks like this:
* ifilter_bind_ist() (filter) calls ist_filter_add() (demuxer);
* ist_filter_add() opens the decoder, and then calls
  dec_add_filter() (decoder);
* dec_add_filter() calls ifilter_parameters_from_dec() (i.e. back into
  the filtering code) in order to give post-avcodec_open2() parameters
  to the filter.

This is unnecessarily complicated. Pass the parameters as follows
instead:
* dec_init() (which opens the decoder) returns post-avcodec_open2()
  parameters to its caller (i.e. the demuxer) in a parameter-only
  AVFrame
* the demuxer passes these parameters to the filter in
  InputFilterOptions, together with other filter options
2024-03-13 08:01:15 +01:00
compat
doc avformat/aea: add aea muxer 2024-03-12 11:26:13 +01:00
ffbuild makefile: Clean up missed object files with "make clean" 2024-03-10 23:45:51 +02:00
fftools fftools/ffmpeg: simplify propagating fallback parameters from decoders to filters 2024-03-13 08:01:15 +01:00
libavcodec avcodec/parser: Reset *buf_size on realloc failure 2024-03-13 00:52:30 +01:00
libavdevice libavdevice: Fix the avfoundation device after switching to FFInputFormat 2024-03-08 12:48:59 +02:00
libavfilter avfilter: update filter timeline state only on main link 2024-03-11 15:38:13 +05:30
libavformat avformat/gopher: Add audio and video itemtypes 2024-03-12 23:01:46 +01:00
libavutil avutil/avstring: Use proper types 2024-03-10 13:51:37 +01:00
libpostproc libs: bump major version for all libraries 2024-03-07 11:29:43 -03:00
libswresample libs: bump major version for all libraries 2024-03-07 11:29:43 -03:00
libswscale libs: bump major version for all libraries 2024-03-07 11:29:43 -03:00
presets
tests fftools/ffmpeg_filter: refactor setting input timebase 2024-03-13 08:01:15 +01:00
tools avformat/avformat: Add FFInputFormat, hide internals of AVInputFormat 2024-03-07 08:53:31 -03:00
.gitattributes
.gitignore
.mailmap .mailmap: Update my mailmap entry 2024-02-23 00:17:21 +01:00
.travis.yml
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog avformat/aea: add aea muxer 2024-03-12 11:26:13 +01:00
INSTALL.md
LICENSE.md
MAINTAINERS MAINTAINERS: add myself as dvdvideo demuxer, rcwt muxer maintainer 2024-03-10 15:21:23 +01:00
Makefile tools: Add target_sws_fuzzer.c 2024-02-21 18:24:17 +01:00
README.md
RELEASE
configure configure: add threads dep for vulkan 2024-03-13 09:57:54 +05:30

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.