aacenc_tns: implement temporal noise shaping
authorRostislav Pehlivanov <atomnuker@gmail.com>
Fri, 21 Aug 2015 18:27:38 +0000 (19:27 +0100)
committerRostislav Pehlivanov <atomnuker@gmail.com>
Fri, 21 Aug 2015 18:27:38 +0000 (19:27 +0100)
commita1c487e9215c5685f0694ebde5bba07f4a07e95a
treecf7031383eb8a966eebeb2be96d22f57856c1a4c
parenteab12d072e657ec748f0259b5281bd6912dccd70
aacenc_tns: implement temporal noise shaping

This commit implements temporal noise shaping support in the
encoder, along with an -aac_tns option to toggle it on or off
(off by default for now). TNS will increase audio quality
and reduce quantization noise by applying a multitap FIR filter
across allowed coefficients and transmit side information to the
decoder so it could create an inverse filter.

Users are encouraged to test the new functionality by enabling
-aac_tns 1 during encoding.

No major bugs are observable at this time so after a while if no
new problems appear and if the current implementation is deemed
of high enough quality and stability it will be enabled by default,
possibly at the same time the encoder has its experimental flag
removed and becomes the standard aac encoder in ffmpeg.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
libavcodec/Makefile
libavcodec/aac.h
libavcodec/aaccoder.c
libavcodec/aacenc.c
libavcodec/aacenc.h
libavcodec/aacenc_tns.c [new file with mode: 0644]
libavcodec/aacenc_tns.h [new file with mode: 0644]