FFmpeg git repo
Go to file
Anton Khirnov a996478e8c fftools/ffmpeg: simplify output stream initialization call graph
Several places in the code currently call init_output_stream_wrapper(),
which in turn calls init_output_stream(), which then calls either
enc_open() or init_output_stream_streamcopy(), followed by
of_stream_init(), which tells the muxer the stream is ready for muxing.

All except one of these callers are in the encoding code, which will be
moved to ffmpeg_enc.c. Keeping this structure would then necessitate
ffmpeg_enc.c calling back into the common code in ffmpeg.c, which would
then just call ffmpeg_mux, thus making the already convoluted call chain
even more so.

Simplify the situation by using separate paths for filter-fed output
streams (audio and video encoders) and others (subtitles, streamcopy,
data, attachments).
2023-04-09 15:47:45 +02:00
compat
doc avutil/hdr_dynamic_metadata: allow av_dynamic_hdr_plus_to_t35() to accept an existing buffer 2023-04-05 09:47:12 -03:00
ffbuild
fftools fftools/ffmpeg: simplify output stream initialization call graph 2023-04-09 15:47:45 +02:00
libavcodec avcodec/mediacodecenc: warning when global header is requested. 2023-04-09 21:44:29 +08:00
libavdevice avdevice/decklink_enc: Add support for compressed AC-3 output over SDI 2023-04-08 20:08:18 +02:00
libavfilter lavfi/unsharp: clarify invalid filter param constraints 2023-04-02 17:07:51 +02:00
libavformat avformat/flvenc: use extract_extradata bsf when necessary 2023-04-09 21:44:29 +08:00
libavutil avutil/hdr_dynamic_metadata: allow av_dynamic_hdr_plus_to_t35() to accept an existing buffer 2023-04-05 09:47:12 -03:00
libpostproc
libswresample swresample/swresample: add a used channel layout option using the new API 2023-02-19 18:28:45 -03:00
libswscale
presets
tests fftools/sync_queue: make sure audio duration matches sample count 2023-04-09 15:47:45 +02:00
tools tools/zmqshell: port to python3 2023-04-02 16:28:54 +02:00
.gitattributes
.gitignore
.mailmap
.travis.yml
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS Use https for repository links 2023-03-01 21:59:10 +01:00
Changelog lavc/libaribcaption.c: add ARIB caption decoder using libaribcaption 2023-03-28 12:05:19 -04:00
INSTALL.md
LICENSE.md
MAINTAINERS
Makefile tools: add an AV_CODEC_CAP_ENCODER_RECON_FRAME test tool 2023-03-28 13:00:42 +02:00
README.md
RELEASE
configure Remove libopenjpeg decoder 2023-04-02 23:54:51 +02: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 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.