AAC Encoder: clipping avoidance
authorClaudio Freire <klaussfreire@gmail.com>
Tue, 21 Jul 2015 01:53:24 +0000 (22:53 -0300)
committerMichael Niedermayer <michael@niedermayer.cc>
Mon, 27 Jul 2015 17:13:48 +0000 (19:13 +0200)
commit59216e0525a58714be4207be6ae8744750e62867
tree8c5b41b3471b08e17396c159001da6deff7ce347
parentc8c86b8f9b8c166633a7324c8646f38866801b88
AAC Encoder: clipping avoidance

Avoid clipping due to quantization noise to produce audible
artifacts, by detecting near-clipping signals and both attenuating
them a little and encoding escape-encoded bands (usually the
loudest) rounding towards zero instead of nearest, which tends to
decrease overall energy and thus clipping.

Currently fate tests measure numerical error so this change makes
tests using asynth (which are near clipping) report higher error
not less, because of window attenuation. Yet, they sound better,
not worse (albeit subtle, other samples aren't subtle at all).
Only measuring psychoacoustically weighted error would make for
a representative test, so that will be left for a future patch.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/aac.h
libavcodec/aaccoder.c
libavcodec/aacenc.c
libavcodec/aacenc.h
libavcodec/aacpsy.c
libavcodec/psymodel.h
tests/fate/aac.mak