- 29 Aug, 2015 1 commit
-
-
Rostislav Pehlivanov authored
This commit abandons the way the specifications state to quantize the coefficients, makes use of the new LPC float functions and is much better. The original way of converting non-normalized float samples to int32_t which out LPC system expects was wrong and it was wrong to assume the coefficients that are generated are also valid. It was essentially a full garbage-in, garbage-out system and it definitely shows when looking at spectrals and listening. The high frequencies were very overattenuated. The new LPC function performs the analysis directly. The specifications state to quantize the coefficients into four bit index values using an asin() function which of course had to have ugly ternary operators because the function turns negative if the coefficients are negative which when encoding causes invalid bitstream to get generated. This deviates from this by using the direct TNS tables, which are fairly small since you only have 4 bits at most for index values. The LPC values are directly quantized against the tables and are then used to perform filtering after the requantization, which simply fetches the array values. The end result is that TNS works much better now and doesn't attenuate anything but the actual signal, e.g. TNS removes quantization errors and does it's job correctly now. It might be enabled by default soon since it doesn't hurt and helps reduce nastyness at low bitrates. Signed-off-by:
Rostislav Pehlivanov <atomnuker@gmail.com>
-
- 22 Aug, 2015 2 commits
-
-
Rostislav Pehlivanov authored
Due to segfaults on some platforms, fix will take a bit longer. Signed-off-by:
Rostislav Pehlivanov <atomnuker@gmail.com>
-
Timothy Gu authored
Signed-off-by:
Rostislav Pehlivanov <atomnuker@gmail.com> Reviewed-by:
Ganesh Ajjanagadde <gajjanag@mit.edu>
-
- 21 Aug, 2015 4 commits
-
-
Rostislav Pehlivanov authored
Thanks to @nevcairiel for pointing this one out. Another thing which stopped msvc from compiling. Signed-off-by:
Rostislav Pehlivanov <atomnuker@gmail.com>
-
Rostislav Pehlivanov authored
This time in a platform/compiler-generic way. Signed-off-by:
Rostislav Pehlivanov <atomnuker@gmail.com>
-
Rostislav Pehlivanov authored
Hotfix to deal with msvc. Sane compilers lack POSIX ffs(). It only saves a single bit or so and isn't worth it that much. Signed-off-by:
Rostislav Pehlivanov <atomnuker@gmail.com>
-
Rostislav Pehlivanov authored
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>
-