1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00
Go to file
Andreas Rheinhardt 5627da3555 avformat/matroskaenc: Remove unnecessary function calls
ffio_fill() is used when initially writing unknown length elements;
yet it can happen that the amount of bytes written by it is zero in
which case it is of course unnecessary to ever call it. Whether it is
possible to know this during compiletime depends upon how aggressively
the compiler inlines function calls (i.e. if it inlines calls to
start_ebml_master() where the upper bound for the size of the element
implies that the size will be written on one byte) and this depends upon
optimization settings. It is not the aim of this patch to inline all
calls where it is known that ffio_fill() will be unnecessary, but merely
to make compilers that inline such calls aware of the fact that writing
zero bytes with ffio_fill() is unnecessary. To this end
av_builtin_constant_p() is used to check whether the size is a
compiletime constant.

For GCC 10 this made a difference at -O3 only: The size of .text
decreased from 0x747F (with 29 calls to ffio_fill(), eight of which
use size zero) to 0x7337 (with 21 calls to ffio_fill(), zero of which
use size zero).
For Clang 11 it made a difference at -O2 and -O3: At -O2, the size of
.text decreased from 0x879C to 0x871C (with eight calls to ffio_fill()
eliminated); at -O3 the size of .text decreased from 0xAF2F to 0xAEBF.
Once again, eight calls to ffio_fill() with size zero have been
eliminated.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-04-18 04:27:19 +02:00
compat atomics: Fix the win32 atomic_exchange function 2021-04-04 11:06:08 +03:00
doc lavfi: add filter dnn_detect for object detection 2021-04-17 17:27:02 +08:00
ffbuild
fftools fftools/ffprobe: Remove check on show_frames and show_packets in XML writer 2021-04-16 08:40:09 +02:00
libavcodec avcodec/exr: increase vlc depth 2021-04-17 16:53:17 +02:00
libavdevice libavdevice/gdigrab: fix capture of windows with non-ASCII titles 2021-04-13 19:34:33 +03:00
libavfilter lavfi: add filter dnn_detect for object detection 2021-04-17 17:27:02 +08:00
libavformat avformat/matroskaenc: Remove unnecessary function calls 2021-04-18 04:27:19 +02:00
libavresample
libavutil lavu/detection_bboxes: add missing space 2021-04-17 13:14:47 +02:00
libpostproc
libswresample libswresample/audioconvert: Fix undefined NULL + 0 2021-04-01 14:15:20 +02:00
libswscale libswscale/x86/yuv2yuvX: Removes unrolling for mmx and mmxext 2021-04-01 20:47:52 +02:00
presets
tests avformat/id3v2: Don't reverse the order of id3v2 APICs 2021-04-18 02:24:44 +02:00
tools
.gitattributes
.gitignore
.mailmap
.travis.yml
Changelog Changelog: Add new <next> line after 4.4 2021-04-09 06:30:31 +02:00
configure lavfi: add filter dnn_detect for object detection 2021-04-17 17:27:02 +08:00
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
INSTALL.md
LICENSE.md
MAINTAINERS
Makefile
README.md
RELEASE

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.