summaryrefslogtreecommitdiff
path: root/libavcodec/aacenc_tns.h
diff options
context:
space:
mode:
authorRostislav Pehlivanov <atomnuker@gmail.com>2015-10-17 10:59:35 +0100
committerRostislav Pehlivanov <atomnuker@gmail.com>2015-10-17 11:10:26 +0100
commitfa4d900c275fa20124f87d60393c1e6373b9de51 (patch)
tree9bb42e10e36d27e1fbdd5c2a4998c48db9385cf8 /libavcodec/aacenc_tns.h
parentbf39beca8784077a3918de0933eaaa84a94e42a4 (diff)
aacenc_tns: rework TNS descision logic
Changes: - strongly prefer dual filters to a single filter - less strict about using 2 filters w.r.t. energy - scrap the usage of threshold and spread, useless - use odd-shaped windows to set the filter direction - use 4 bits instead of 3 bits for short windows - simplify and reduce the main loop to a single level - add stricter regulations for short windows All of this now makes the TNS implementation operate as good as it can and it definitely shows. The frequency thresholds are now even better defined by looking at the spectrals and the overall sound has been improved at the price of just a few bits that are well worth it.
Diffstat (limited to 'libavcodec/aacenc_tns.h')
-rw-r--r--libavcodec/aacenc_tns.h18
1 files changed, 0 insertions, 18 deletions
diff --git a/libavcodec/aacenc_tns.h b/libavcodec/aacenc_tns.h
index a7c119f368..466738dd16 100644
--- a/libavcodec/aacenc_tns.h
+++ b/libavcodec/aacenc_tns.h
@@ -30,24 +30,6 @@
#include "aacenc.h"
-/* Could be set to 3 to save an additional bit at the cost of little quality */
-#define TNS_Q_BITS 4
-
-/* Coefficient resolution in short windows */
-#define TNS_Q_BITS_SHORT 3
-
-/* TNS will only be used if the LPC gain is within these margins */
-#define TNS_GAIN_THRESHOLD_LOW 1.437f
-#define TNS_GAIN_THRESHOLD_HIGH 21.19f
-
-/* If the energy ratio between the low SFBs vs the high SFBs is not between
- * those two values, use 2 filters instead */
-#define TNS_E_RATIO_LOW 0.77
-#define TNS_E_RATIO_HIGH 1.23
-
-/* Do not use TNS if the psy band spread is below this value */
-#define TNS_SPREAD_THRESHOLD 0.5f
-
void ff_aac_encode_tns_info(AACEncContext *s, SingleChannelElement *sce);
void ff_aac_apply_tns(AACEncContext *s, SingleChannelElement *sce);
void ff_aac_search_for_tns(AACEncContext *s, SingleChannelElement *sce);