History

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.

Rostislav Pehlivanov committed 11 years ago

Commit a1c487e1 parent eab12d07 files · +311 −6Browse files

Showing the changes to libavcodec/aaccoder.c (1 of 7 files). Show all

Unified · Split

libavcodec/aaccoder.c+9−0
@@ -45,6 +45,7 @@ · 44 unmodified lines
45#include "aac_tablegen_decl.h"45#include "aac_tablegen_decl.h"
46 46
47#include "aacenc_is.h"47#include "aacenc_is.h"
48#include "aacenc_tns.h"
48 49
49/** Frequency in Hz for lower limit of noise substitution **/50/** Frequency in Hz for lower limit of noise substitution **/
50#define NOISE_LOW_LIMIT 450051#define NOISE_LOW_LIMIT 4500
@@ -958,8 +959,10 @@ AACCoefficientsEncoder ff_aac_coders[AAC_CODER_NB] = { · 907 unmodified lines
958 search_for_quantizers_faac,959 search_for_quantizers_faac,
959 encode_window_bands_info,960 encode_window_bands_info,
960 quantize_and_encode_band,961 quantize_and_encode_band,
962 encode_tns_info,
961 set_special_band_scalefactors,963 set_special_band_scalefactors,
962 search_for_pns,964 search_for_pns,
965 search_for_tns,
963 search_for_ms,966 search_for_ms,
964 search_for_is,967 search_for_is,
965 },968 },
@@ -967,8 +970,10 @@ AACCoefficientsEncoder ff_aac_coders[AAC_CODER_NB] = { · 1 unmodified line
967 search_for_quantizers_anmr,970 search_for_quantizers_anmr,
968 encode_window_bands_info,971 encode_window_bands_info,
969 quantize_and_encode_band,972 quantize_and_encode_band,
973 encode_tns_info,
970 set_special_band_scalefactors,974 set_special_band_scalefactors,
971 search_for_pns,975 search_for_pns,
976 search_for_tns,
972 search_for_ms,977 search_for_ms,
973 search_for_is,978 search_for_is,
974 },979 },
@@ -976,8 +981,10 @@ AACCoefficientsEncoder ff_aac_coders[AAC_CODER_NB] = { · 1 unmodified line
976 search_for_quantizers_twoloop,981 search_for_quantizers_twoloop,
977 codebook_trellis_rate,982 codebook_trellis_rate,
978 quantize_and_encode_band,983 quantize_and_encode_band,
984 encode_tns_info,
979 set_special_band_scalefactors,985 set_special_band_scalefactors,
980 search_for_pns,986 search_for_pns,
987 search_for_tns,
981 search_for_ms,988 search_for_ms,
982 search_for_is,989 search_for_is,
983 },990 },
@@ -985,8 +992,10 @@ AACCoefficientsEncoder ff_aac_coders[AAC_CODER_NB] = { · 1 unmodified line
985 search_for_quantizers_fast,992 search_for_quantizers_fast,
986 encode_window_bands_info,993 encode_window_bands_info,
987 quantize_and_encode_band,994 quantize_and_encode_band,
995 encode_tns_info,
988 set_special_band_scalefactors,996 set_special_band_scalefactors,
989 search_for_pns,997 search_for_pns,
998 search_for_tns,
990 search_for_ms,999 search_for_ms,
991 search_for_is,1000 search_for_is,
992 },1001 },

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t