FFmpeg git repo
Go to file
Rostislav Pehlivanov b6c207f535 vc2enc_dwt: use 32 bit coefficients by default
The problem is that with particularly complex images and especially at
high bit depths and 5-level transforms the coefficients would overflow,
causing huge artifacts to appear. This was discovered thanks to the fate
tests, which will have to be redone as this fixes a multitude of
problems and increases PSNR.

There is a slight performance drop associated with this change, making
the encoder slower by 1.15 times, however this is necessary in order to
avoid undefined behavior and overflows.

It would be worth to template the transforms to keep the performance for
8 bit images as 32 bit coefficients are unnecessary for that case, but
the primary use of the encoder is to encode video at 10 bits.

Reviewed-by: Christophe Gisquet <christophe.gisquet@gmail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2016-05-08 19:09:42 +01:00
compat
doc avcodec: Add "sar" alias to "aspect" option of video encoders 2016-05-06 03:47:36 +02:00
libavcodec vc2enc_dwt: use 32 bit coefficients by default 2016-05-08 19:09:42 +01:00
libavdevice lavd/avfoundation: use AVCodecParameters 2016-05-05 16:03:45 +02:00
libavfilter avfilter/graphparser: add '\r' as whitespace 2016-05-06 07:37:12 +07:00
libavformat avformat/tee: Use ref instead copy in write_packet 2016-05-07 17:25:40 +02:00
libavresample
libavutil avutil/parsing: add '\r' as whitespace 2016-05-06 07:35:45 +07:00
libpostproc
libswresample
libswscale
presets
tests fate: Remove duplicate wmv8_x8intra.wmv test 2016-05-08 02:10:26 +02:00
tools
.gitattributes
.gitignore
.travis.yml
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
Changelog rtpenc: packetizer for VC-2 HQ RTP payload format (draft v1) 2016-05-03 19:07:37 +02:00
INSTALL.md
LICENSE.md
MAINTAINERS rtpenc: packetizer for VC-2 HQ RTP payload format (draft v1) 2016-05-03 19:07:37 +02:00
Makefile
README.md
RELEASE
arch.mak
cmdutils.c
cmdutils.h
cmdutils_common_opts.h
cmdutils_opencl.c
common.mak
configure configure: Only utvideo <= 15.3.0 is supported. 2016-05-06 19:42:35 +02:00
ffmpeg.c
ffmpeg.h
ffmpeg_dxva2.c
ffmpeg_filter.c
ffmpeg_opt.c
ffmpeg_qsv.c
ffmpeg_vdpau.c
ffmpeg_videotoolbox.c
ffplay.c ffplay: force setting alsa buffer size 2016-05-07 17:18:26 +02:00
ffprobe.c
ffserver.c
ffserver_config.c
ffserver_config.h
library.mak
version.sh

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.
  • 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. Few developers follow pull requests so they will likely be ignored.