1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-13 21:28:01 +02:00
Go to file
Anton Khirnov d1b9a3ddb4 lavfi: add a new filtergraph parsing API
Callers currently have two ways of adding filters to a graph - they can
either
- create, initialize, and link them manually
- use one of the avfilter_graph_parse*() functions, which take a
  (typically end-user-written) string, split it into individual filter
  definitions+options, then create filters, apply options, initialize
  filters, and finally link them - all based on information from this
  string.

A major problem with the second approach is that it performs many
actions as a single atomic unit, leaving the caller no space to
intervene in between. Such intervention would be useful e.g. to
- modify filter options;
- supply hardware device contexts;
both of which typically must be done before the filter is initialized.

Callers who need such intervention are then forced to invent their own
filtergraph parsing, which is clearly suboptimal.

This commit aims to address this problem by adding a new modular
filtergraph parsing API. It adds a new  avfilter_graph_segment_parse()
function to parse a string filtergraph description into an intermediate
tree-like representation (AVFilterGraphSegment and its children).

This intermediate form may then be applied step by step using further
new avfilter_graph_segment*() functions, with user intervention possible
between each step.
2023-02-12 10:28:06 +01:00
compat compat/cuda: switch from powf to __powf intrinsic 2022-09-03 20:27:34 +02:00
doc lavfi: add a new filtergraph parsing API 2023-02-12 10:28:06 +01:00
ffbuild configure: probe RISC-V Vector extension 2022-09-27 13:19:52 +02:00
fftools fftools/ffmpeg: rename -enc_stats* to -stats_enc* 2023-02-10 11:02:13 +01:00
libavcodec avcodec/roqaudioenc: unbreak mono encoding 2023-02-11 22:59:57 +01:00
libavdevice Bump major versions of all libraries 2023-02-09 15:35:14 +01:00
libavfilter lavfi: add a new filtergraph parsing API 2023-02-12 10:28:06 +01:00
libavformat avformat: add RKA demuxer 2023-02-11 21:29:35 +01:00
libavutil Bump major versions of all libraries 2023-02-09 15:35:14 +01:00
libpostproc Bump major versions of all libraries 2023-02-09 15:35:14 +01:00
libswresample x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
libswscale Bump major versions of all libraries 2023-02-09 15:35:14 +01:00
presets
tests ffprobe: report the corrupt flag on packets 2023-02-09 12:45:53 +01:00
tools tools: add general_assembly.pl 2023-02-12 10:14:22 +01:00
.gitattributes
.gitignore
.mailmap mailmap: stop git lying about who I commit things as 2022-11-04 19:37:46 +01:00
.travis.yml
Changelog avformat: add RKA demuxer 2023-02-11 21:29:35 +01:00
configure examples: rename transcoding to transcode 2023-02-11 17:49:01 +01:00
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL.md
LICENSE.md
MAINTAINERS lavc: deprecate CrystalHD decoders 2023-02-04 13:12:28 +01:00
Makefile configure: probe RISC-V Vector extension 2022-09-27 13:19:52 +02:00
README.md
RELEASE RELEASE: update after 5.1 branch 2022-07-13 00:31:42 +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.