No description
Find a file
wm4 ddef3d902f avformat, ffmpeg: deprecate old rotation API
The old "API" that signaled rotation as a metadata value has been
replaced by DISPLAYMATRIX side data quite a while ago.

There is no reason to make muxers/demuxers/API users support both. In
addition, the metadata API is dangerous, as user tags could "leak" into
it, creating unintended features or bugs.

ffmpeg CLI has to be updated to use the new API. In particular, we must
not allow to leak the "rotate" tag into the muxer. Some muxers will
catch this properly (like mov), but others (like mkv) can add it as
generic tag. Note applications, which use libavformat and assume the
old rotate API, will interpret such "rotate" user tags as rotate
metadata (which it is not), and incorrectly rotate the video.

The ffmpeg/ffplay tools drop the use of the old API for muxing and
demuxing, as all muxers/demuxers support the new API. This will mean
that the tools will not mistakenly interpret per-track "rotate" user
tags as rotate metadata. It will _not_ be treated as regression.

Unfortunately, hacks have been added, that allow the user to override
rotation by setting metadata explicitly, e.g. via

  -metadata:s:v:0 rotate=0

See references to trac #4560. fate-filter-meta-4560-rotate0 tests this.
It's easier to adjust the hack for supporting it than arguing for its
removal, so ffmpeg CLI now explicitly catches this case, and essentially
replaces the "rotate" value with a display matrix side data. (It would
be easier for both user and implementation to create an explicit option
for rotation.)

When the code under FF_API_OLD_ROTATE_API is disabled, one FATE
reference file has to be updated (because "rotate" is not exported
anymore).

Tested-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
2017-03-27 13:20:27 +02:00
compat compat/atomics/gcc: use __typeof__ instead of typeof 2017-03-18 12:13:46 -03:00
doc avformat, ffmpeg: deprecate old rotation API 2017-03-27 13:20:27 +02:00
libavcodec libavcodec/opusenc: use correct format specifiers 2017-03-27 09:35:48 +02:00
libavdevice Merge commit '2f806622e1' 2017-03-24 12:41:31 +01:00
libavfilter avfilter/vf_signature: Replace uncommon spelling of seperate 2017-03-26 20:34:47 +02:00
libavformat avformat, ffmpeg: deprecate old rotation API 2017-03-27 13:20:27 +02:00
libavresample Bump minor versions after 3.2 branchpoint to seperate release 2016-10-26 20:52:42 +02:00
libavutil Merge commit '0456e68439' 2017-03-24 13:17:55 +01:00
libpostproc Bump minor versions after 3.2 branchpoint to seperate release 2016-10-26 20:52:42 +02:00
libswresample swresample/resample: free existing ResampleContext on reinit 2017-03-21 12:03:44 -03:00
libswscale Merge commit '1263b2039e' 2017-03-24 13:34:39 +01:00
presets
tests fate/checkasm: fix use of uninitialized memory on hevc_add_res tests 2017-03-24 22:11:34 -03:00
tools Merge commit '052b97855d' 2017-03-24 13:07:50 +01:00
.gitattributes fate: add SCC test 2017-01-27 17:06:42 +01:00
.gitignore Merge commit '6641819fee' 2016-06-26 15:43:05 +02:00
.travis.yml
arch.mak mips: rename mipsdspr1 to mipsdsp 2015-12-04 02:35:42 +01:00
Changelog add signature filter for MPEG7 video signature 2017-03-21 00:11:08 +01:00
cmdutils.c avformat, ffmpeg: deprecate old rotation API 2017-03-27 13:20:27 +02:00
cmdutils.h cmdutils: add show_demuxers and show_muxers 2016-11-08 01:56:31 +01:00
cmdutils_common_opts.h cmdutils: add show_demuxers and show_muxers 2016-11-08 01:56:31 +01:00
cmdutils_opencl.c cmdutils_opencl: fix resource_leak cid 1396852 2017-01-13 07:54:49 +08:00
common.mak Merge commit '93d5b022a9' 2017-03-23 17:57:35 -03:00
configure configure: cuvid hwaccels need the corresponding decoder, not the other way around 2017-03-25 22:39:01 +01:00
CONTRIBUTING.md Add CONTRIBUTING.md 2016-09-18 10:02:13 +01:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
ffmpeg.c avformat, ffmpeg: deprecate old rotation API 2017-03-27 13:20:27 +02:00
ffmpeg.h avformat, ffmpeg: deprecate old rotation API 2017-03-27 13:20:27 +02:00
ffmpeg_cuvid.c ffmpeg_cuvid: adapt for recent filter graph initialization changes 2017-03-03 08:45:43 +01:00
ffmpeg_dxva2.c Merge commit '18c506e9e6' 2016-06-26 15:34:01 +02:00
ffmpeg_filter.c ffmpeg: Remove hw_device_ctx output filter reinit hack 2017-03-26 20:38:44 +01:00
ffmpeg_opt.c avformat, ffmpeg: deprecate old rotation API 2017-03-27 13:20:27 +02:00
ffmpeg_qsv.c ffmpeg: init filtergraphs only after we have a frame on each input 2017-03-03 08:45:43 +01:00
ffmpeg_vaapi.c ffmpeg_vaapi: Always set hwaccel_ctx, so it gets properly cleaned up on error 2017-02-05 15:13:15 +00:00
ffmpeg_vdpau.c Merge commit 'f72db3f2f3' 2016-06-26 15:29:39 +02:00
ffmpeg_videotoolbox.c
ffplay.c ffplay: change keyboard volume control to logarithmic 2017-02-08 22:36:42 +01:00
ffprobe.c ffprobe: support skip_samples packet side data information 2017-03-25 22:42:57 -03:00
ffserver.c ffserver: local OOB write with custom program name 2017-01-08 03:50:56 +01:00
ffserver_config.c ffserver_config: Check for failure to allocate FFServerIPAddressACL 2016-12-22 19:23:08 +01:00
ffserver_config.h ffsrever: Make the status page bitexact if any stream is bitexact 2016-11-29 19:26:26 +01:00
INSTALL.md
library.mak Merge commit '93d5b022a9' 2017-03-23 17:57:35 -03:00
LICENSE.md Merge commit '4fef648d10' 2017-03-15 22:07:47 +01:00
MAINTAINERS MAINTAINERS: Add Rodger Combs to ffmpeg-security 2017-02-28 01:13:52 +01:00
Makefile Merge commit '7c9e2b295e' 2017-03-23 20:54:20 -03:00
README.md Add CONTRIBUTING.md 2016-09-18 10:02:13 +01:00
RELEASE RELEASE: Update for past 3.2 branch 2016-10-26 20:52:43 +02:00
version.sh version.sh: Fix spurious rebuilds. 2016-03-10 09:53:10 +01: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 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.
  • ffserver is a multimedia streaming server for live broadcasts.
  • 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.