History

aacenc: remove support for AAC LTP profile

The LTP profile of AAC is... terrible. It was an early 90's attempt at bridging the gap between speech codecs and general purpose codecs. It did so by trying to exploit the fact that most speech patterns are regular. Unfortunately, it went about it the same way as AAC Main, by taking the previous frame's samples, modifying them through an LPC filter, transforming them back using a forward MDCT, putting the output coefficients back into the current frame, and using delta coding. But once again, they ignored basic mathematics and MDCT leakage. Thankfully, because AAC LTP is meant to operate at very low bitrates, the extreme quantization results in most leakage being irrelevant. Unfortunately, the result is that the output sounds pretty much terrible regardless of whether LTP is enabled or not. This was the first attempt at trying to couple speech coding into AAC. No, the second attempt did not succeed either. Nnnneither did the third. Or fourth. For the fifth one, they literally just jammed a speech codec into AAC with USAC once they saw Opus do it. Just drop support for encoding AAC LTP. It was always experimental to begin with.

Lynne committed 1 year ago

Commit 93835331 parent 9b11fef7 files · +1 −355Browse files

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

Unified · Split

libavcodec/aaccoder.c+0−16
@@ -47,7 +47,6 @@ · 46 unmodified lines
47 47
48#include "aacenc_is.h"48#include "aacenc_is.h"
49#include "aacenc_tns.h"49#include "aacenc_tns.h"
50#include "aacenc_ltp.h"
51 50
52#include "libavcodec/aaccoder_twoloop.h"51#include "libavcodec/aaccoder_twoloop.h"
53 52
@@ -1121,16 +1120,11 @@ const AACCoefficientsEncoder ff_aac_coders[AAC_CODER_NB] = { · 1067 unmodified lines
1121 encode_window_bands_info,1120 encode_window_bands_info,
1122 quantize_and_encode_band,1121 quantize_and_encode_band,
1123 ff_aac_encode_tns_info,1122 ff_aac_encode_tns_info,
1124 ff_aac_encode_ltp_info,
1125 ff_aac_adjust_common_ltp,
1126 ff_aac_apply_tns,1123 ff_aac_apply_tns,
1127 ff_aac_update_ltp,
1128 ff_aac_ltp_insert_new_frame,
1129 set_special_band_scalefactors,1124 set_special_band_scalefactors,
1130 search_for_pns,1125 search_for_pns,
1131 mark_pns,1126 mark_pns,
1132 ff_aac_search_for_tns,1127 ff_aac_search_for_tns,
1133 ff_aac_search_for_ltp,
1134 search_for_ms,1128 search_for_ms,
1135 ff_aac_search_for_is,1129 ff_aac_search_for_is,
1136 },1130 },
@@ -1139,16 +1133,11 @@ const AACCoefficientsEncoder ff_aac_coders[AAC_CODER_NB] = { · 2 unmodified lines
1139 codebook_trellis_rate,1133 codebook_trellis_rate,
1140 quantize_and_encode_band,1134 quantize_and_encode_band,
1141 ff_aac_encode_tns_info,1135 ff_aac_encode_tns_info,
1142 ff_aac_encode_ltp_info,
1143 ff_aac_adjust_common_ltp,
1144 ff_aac_apply_tns,1136 ff_aac_apply_tns,
1145 ff_aac_update_ltp,
1146 ff_aac_ltp_insert_new_frame,
1147 set_special_band_scalefactors,1137 set_special_band_scalefactors,
1148 search_for_pns,1138 search_for_pns,
1149 mark_pns,1139 mark_pns,
1150 ff_aac_search_for_tns,1140 ff_aac_search_for_tns,
1151 ff_aac_search_for_ltp,
1152 search_for_ms,1141 search_for_ms,
1153 ff_aac_search_for_is,1142 ff_aac_search_for_is,
1154 },1143 },
@@ -1157,16 +1146,11 @@ const AACCoefficientsEncoder ff_aac_coders[AAC_CODER_NB] = { · 2 unmodified lines
1157 codebook_trellis_rate,1146 codebook_trellis_rate,
1158 quantize_and_encode_band,1147 quantize_and_encode_band,
1159 ff_aac_encode_tns_info,1148 ff_aac_encode_tns_info,
1160 ff_aac_encode_ltp_info,
1161 ff_aac_adjust_common_ltp,
1162 ff_aac_apply_tns,1149 ff_aac_apply_tns,
1163 ff_aac_update_ltp,
1164 ff_aac_ltp_insert_new_frame,
1165 set_special_band_scalefactors,1150 set_special_band_scalefactors,
1166 search_for_pns,1151 search_for_pns,
1167 mark_pns,1152 mark_pns,
1168 ff_aac_search_for_tns,1153 ff_aac_search_for_tns,
1169 ff_aac_search_for_ltp,
1170 search_for_ms,1154 search_for_ms,
1171 ff_aac_search_for_is,1155 ff_aac_search_for_is,
1172 },1156 },

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