aacenc_tns: redo coefficient quantization and decision making
authorRostislav Pehlivanov <atomnuker@gmail.com>
Sat, 12 Sep 2015 12:04:27 +0000 (13:04 +0100)
committerRostislav Pehlivanov <atomnuker@gmail.com>
Sat, 12 Sep 2015 12:04:27 +0000 (13:04 +0100)
commita83a8d70681a7093ff4bd8232b8f75fed3d6af48
treea28f3bc5df2467018713f86169a622150fdce7a9
parent33be39efe31326dc787efc54f5077e4c4b97896c
aacenc_tns: redo coefficient quantization and decision making

This finally (and again) gets rid of basically everything the
specifications say about how TNS should be done. The main
problem used to be that a single filter was used for all
coefficients which despite being explicitly recommended by
the specifications usually sounds wrong, therefore it's
a corner case in the current TNS implementation.

This commit also changes the coefficient bit size, as apparently
it's better to use lower precision in case the windows are eight
short. This is apparently what fdk_aac uses, looking at the bit
stream and makes sense. Also the order when 8 SHORT windows happen
is important as 7 was too much and according to PSNR was worse
while 5 is just about correct.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
libavcodec/aacenc_tns.c
libavcodec/aacenc_tns.h