FFmpeg git repo
Go to file
Claudio Freire 6394acaf36 AAC: Fix M/S stereo encoding
This patch fixes a pointer arithmetic bug in adjust_frame_information that resulted in heavily corrupted audio when using M/S encoding. Also, a backup copy of untransformed coefficients has to be kept around or attempts at re-processing the frame (which happens when hevavily overspending bits during transients) will result in re-encoding of the coefficients and subsequent corruption of the resulting stream.

A/B testing shows the bug as corrected, but still cannot prove that M/S coding is a win at least in numbers. Limited listening tests do show improvement on M/S encoded samples in lower bitrates, but they're hidden among the other artifacts that remain to be corrected in the encoder.

Some of the regressions flagged in the report do show poor stereo image (but not buggy), so M/S encoding is clearly not good enough yet to be defaulted to auto.

In numbers, Patched against Unpatched, stereo_mode auto:

  Files: 114
  Bitrates: 6
  Tests: 683

  Serious Regressions: 0 (0%)
  Regressions: 0 (0%)
  Improvements: 227 (33%)
  Big improvements: 92 (13%)
  Worst regression - mybloodrusts.wv - 256k
    - StdDev: 28.61       pSNR: -0.43     maxdiff: 1372.00
  Best improvement - 60.wv - 384k
    - StdDev: -369.57     pSNR: 45.02     maxdiff: -13322.00
  Average          - StdDev: -80.56       pSNR: 2.49      maxdiff: -8858.00

Patched against Unpatched stereo_mode ms_off shows no difference.

Patched stereo_mode auto vs Unpatched stereo_mode ms_off shows a small average improvement, just not too significant:

  Serious Regressions: 0 (0%)
  Regressions: 10 (1%)
  Improvements: 45 (6%)
  Big improvements: 2 (0%)
  Worst regression - Illinois.wv - 256k
    - StdDev: 33.20       pSNR: -2.03     maxdiff: 477.00
  Best improvement - song_of_circomstances.flac - 384k
    - StdDev: -3.97       pSNR: 7.61      maxdiff: -826.00
  Average          - StdDev: -10.25       pSNR: 0.20      maxdiff: -281.00

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-03 13:57:42 +01:00
compat
doc Merge commit '990e4a6639d0714198583c2812b1074b5751898f' 2015-03-01 00:30:20 +01:00
libavcodec AAC: Fix M/S stereo encoding 2015-03-03 13:57:42 +01:00
libavdevice Merge commit '619d5e7db88941cadb8136f805564e885c6c6434' 2015-03-02 20:16:22 +01:00
libavfilter avfilter/vf_tblend: use av_frame_free for freeing an AVFrame 2015-03-02 21:27:21 +01:00
libavformat avformat/mxfenc: adjust product name when opatom muxer is used 2015-03-03 12:13:21 +01:00
libavresample
libavutil avutil/common: minor simplification in av_clip_intp2_c() 2015-03-02 01:07:50 +01:00
libpostproc postproc: mark alloc/free context functions as av_cold 2015-02-27 16:15:31 +01:00
libswresample swresample: Add prefix to soxr_resampler 2015-02-27 19:20:43 +01:00
libswscale swscale: Add prefix to updateMMXDitherTables() 2015-02-27 19:23:46 +01:00
presets
tests avformat/mxfenc: adjust product name when opatom muxer is used 2015-03-03 12:13:21 +01:00
tools tools/graph2dot: Check for av_malloc() failure 2015-02-22 22:51:13 +01:00
.gitattributes
.gitignore
arch.mak
Changelog Merge commit '04a1be8e28e81f3967eace7705343c450616cc95' 2015-02-24 21:55:46 +01:00
cmdutils_common_opts.h
cmdutils_opencl.c
cmdutils.c
cmdutils.h
common.mak
configure configure/help: consistently use "autodetect" 2015-03-02 14:56:05 +01:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS
ffmpeg_dxva2.c
ffmpeg_filter.c
ffmpeg_opt.c ffmpeg: allow to set the thread message queue size. 2015-02-26 19:19:56 +01:00
ffmpeg_vda.c
ffmpeg_vdpau.c
ffmpeg.c ffmpeg: Fix -vstats when coded_frame is not set 2015-02-28 12:33:44 +01:00
ffmpeg.h ffmpeg: allow to set the thread message queue size. 2015-02-26 19:19:56 +01:00
ffplay.c
ffprobe.c ffprobe: Change string_validation to int, its accessed via AVOption as int 2015-03-02 04:06:39 +01:00
ffserver_config.c
ffserver_config.h
ffserver.c
INSTALL.md
library.mak
LICENSE.md
MAINTAINERS MAINTAINERS: add myself as rtpdec_mpa_robust maintainer 2015-03-02 11:58:49 +01:00
Makefile
README.md
RELEASE
RELEASE_NOTES
version.sh

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.