aac_ltp: actually signal LTP as off during EIGHT_SHORT windows
authorRostislav Pehlivanov <atomnuker@gmail.com>
Thu, 26 Nov 2015 18:20:42 +0000 (18:20 +0000)
committerRostislav Pehlivanov <atomnuker@gmail.com>
Thu, 26 Nov 2015 18:20:42 +0000 (18:20 +0000)
This hugely reduces the echo which was introduced with the previous
commit (though likely because previously everything was broken).
Makes LTP actually worthwhile now.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
libavcodec/aacenc_ltp.c

index 5aaaf6f..e19f3cc 100644 (file)
@@ -135,8 +135,10 @@ void ff_aac_adjust_common_ltp(AACEncContext *s, ChannelElement *cpe)
 
     if (!cpe->common_window ||
         sce0->ics.window_sequence[0] == EIGHT_SHORT_SEQUENCE ||
-        sce1->ics.window_sequence[0] == EIGHT_SHORT_SEQUENCE)
+        sce1->ics.window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
+        sce0->ics.ltp.present = 0;
         return;
+    }
 
     for (sfb = 0; sfb < FFMIN(sce0->ics.max_sfb, MAX_LTP_LONG_SFB); sfb++) {
         int sum = sce0->ics.ltp.used[sfb] + sce1->ics.ltp.used[sfb];