X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Faacenc_tns.h;h=f0e75569ae2ac8323df1c9e156713089ce9c9fb0;hb=cebe51a6255e04b8dcd15fcbab359ed00dbb3ab1;hp=3b11ca03b9cbd996500f2cc8ef50a3f64f373e64;hpb=a1c487e9215c5685f0694ebde5bba07f4a07e95a;p=ffmpeg diff --git a/libavcodec/aacenc_tns.h b/libavcodec/aacenc_tns.h index 3b11ca03b9c..f0e75569ae2 100644 --- a/libavcodec/aacenc_tns.h +++ b/libavcodec/aacenc_tns.h @@ -28,18 +28,25 @@ #ifndef AVCODEC_AACENC_TNS_H #define AVCODEC_AACENC_TNS_H -#include "aac.h" +#include "aacenc.h" -/** Frequency in Hz for lower limit of TNS **/ -#define TNS_LOW_LIMIT 2150 +/* Could be set to 3 to save an additional bit at the cost of little quality */ +#define TNS_Q_BITS 4 -/** LPC settings */ -#define TNS_MIN_PRED_ORDER 0 -#define MAX_LPC_PRECISION 4 /* 4 bits ltp coeff precision */ -#define TNS_LPC_PASSES 2 -#define MAX_LPC_SHIFT 4 +/* TNS will only be used if the LPC gain is within these margins */ +#define TNS_GAIN_THRESHOLD_LOW 1.395f +#define TNS_GAIN_THRESHOLD_HIGH 11.19f -void encode_tns_info(AACEncContext *s, SingleChannelElement *sce); -void search_for_tns(AACEncContext *s, SingleChannelElement *sce); +/* 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 37.081512f + +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); #endif /* AVCODEC_AACENC_TNS_H */