FFmpeg git repo
Go to file
Andreas Rheinhardt 358b58cb29 avformat/matroskaenc: Remove allocations for Attachments
If there are Attachments to write, the Matroska muxer currently
allocates two objects: An array that contains an entry for each
AttachedFile containing just the stream index of the corresponding
stream and the FileUID used for this AttachedFile; and a structure with
a pointer to said array and a counter for said array. These uids are
generated via code special to Attachments: It uses an AVLFG in the
normal and a sha of the attachment data in the bitexact case. (Said sha
requires an allocation, too.)

But now that an uid is generated for each stream in mkv_init(), there is
no need any more to use special code for generating the FileUIDs of
AttachedFiles: One can simply use the uid already generated for the
corresponding stream. And this makes the whole allocations of the
structures for AttachedFiles as well as the structures itself superfluous.
They have been removed.

In case AVFMT_FLAG_BITEXACT is set, the uids will be different from the
old ones which is the reason why the FATE-test lavf-mkv_attachment
needed to be updated. The old method had the drawback that two
AttachedFiles with the same data would have the same FileUID.
The new one doesn't.

Also notice that the dynamic buffer used to write the Attachments leaks
if an error happens when writing the buffer. By removing the
allocations potential sources of errors have been removed.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-13 08:34:59 +02:00
compat compat/avisynth: remove avisynth headers 2020-04-05 01:17:55 +02:00
doc doc/filters: clarify metadata and logging for blackdetect 2020-04-13 11:23:24 +05:30
ffbuild common.mak: Also clean Windows debug files. 2020-03-21 18:46:00 +01:00
fftools fftools/ffmpeg: also flush encoders which have a variable frame size 2020-04-13 00:31:24 +02:00
libavcodec avcodec/cbs: Avoid leaving the ... out in calls to variadic macros 2020-04-12 23:23:49 +02:00
libavdevice avdevice/decklink_dec: increase autodetect timeout to 3 sec 2020-04-04 22:28:05 +02:00
libavfilter doc/filters: clarify metadata and logging for blackdetect 2020-04-13 11:23:24 +05:30
libavformat avformat/matroskaenc: Remove allocations for Attachments 2020-04-13 08:34:59 +02:00
libavresample
libavutil lavu/mem: Make other alloc functions more similar to av_malloc(). 2020-04-12 22:32:03 +02:00
libpostproc libavcodec, libpostproc: Remove outcommented START/STOP_TIMER 2020-03-14 18:24:04 +01:00
libswresample Silence "string-plus-int" warning shown by clang. 2020-01-06 22:38:56 +01:00
libswscale swscale/yuv2rgb: Fix vertical dither offset with slices 2020-04-12 16:36:47 +02:00
presets
tests avformat/matroskaenc: Remove allocations for Attachments 2020-04-13 08:34:59 +02:00
tools tools/target_dec_fuzzer: Adjust threshold for zerocodec 2020-04-12 16:36:47 +02:00
.gitattributes
.gitignore
.mailmap mailmap: fix 3-address entries 2020-03-31 04:14:14 -05:00
.travis.yml
CONTRIBUTING.md
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog Changelog: Add entry for expanded styling support in movtext 2020-04-10 09:32:13 -07:00
INSTALL.md
LICENSE.md avfilter/vf_geq: Relicense to LGPL 2019-12-28 11:20:48 +01:00
MAINTAINERS MAINTAINERS: add my gpg fingerprint 2020-03-23 23:37:19 +01:00
Makefile Makefile: Delete more created files when running "make distclean". 2020-03-11 11:43:01 +01:00
README.md
RELEASE
configure configure: add mv30 blockdsp dependency 2020-04-12 09:47:13 +10: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.