[FFmpeg-cvslog] aacenc_ltp: use an AR filter for LTP encoding as well

Rostislav Pehlivanov git at videolan.org
Sat Dec 5 20:18:20 CET 2015


ffmpeg | branch: master | Rostislav Pehlivanov <atomnuker at gmail.com> | Sat Dec  5 19:06:39 2015 +0000| [dcbe8d8abc9b726650e36572f1f9dbd0879cbd93] | committer: Rostislav Pehlivanov

aacenc_ltp: use an AR filter for LTP encoding as well

Seems to work better. Information on why the decoder does this is
lacking.

Signed-off-by: Rostislav Pehlivanov <atomnuker at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=dcbe8d8abc9b726650e36572f1f9dbd0879cbd93
---

 libavcodec/aacenc_tns.c |   19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/libavcodec/aacenc_tns.c b/libavcodec/aacenc_tns.c
index 694fbb9..85fcb0f 100644
--- a/libavcodec/aacenc_tns.c
+++ b/libavcodec/aacenc_tns.c
@@ -107,7 +107,7 @@ void ff_aac_apply_tns(AACEncContext *s, SingleChannelElement *sce)
     IndividualChannelStream *ics = &sce->ics;
     int w, filt, m, i, top, order, bottom, start, end, size, inc;
     const int mmm = FFMIN(ics->tns_max_bands, ics->max_sfb);
-    float lpc[TNS_MAX_ORDER], tmp[TNS_MAX_ORDER+1];
+    float lpc[TNS_MAX_ORDER];
 
     for (w = 0; w < ics->num_windows; w++) {
         bottom = ics->num_swb;
@@ -133,19 +133,10 @@ void ff_aac_apply_tns(AACEncContext *s, SingleChannelElement *sce)
             }
             start += w * 128;
 
-            if (!s->options.ltp) {     // ar filter
-                for (m = 0; m < size; m++, start += inc) {
-                    for (i = 1; i <= FFMIN(m, order); i++) {
-                        sce->coeffs[start] += lpc[i-1]*sce->pcoeffs[start - i*inc];
-                    }
-                }
-            } else {                   // ma filter
-                for (m = 0; m < size; m++, start += inc) {
-                    tmp[0] = sce->pcoeffs[start];
-                    for (i = 1; i <= FFMIN(m, order); i++)
-                        sce->coeffs[start] += lpc[i-1]*tmp[i];
-                    for (i = order; i > 0; i--)
-                        tmp[i] = tmp[i - 1];
+            /* AR filter */
+            for (m = 0; m < size; m++, start += inc) {
+                for (i = 1; i <= FFMIN(m, order); i++) {
+                    sce->coeffs[start] += lpc[i-1]*sce->pcoeffs[start - i*inc];
                 }
             }
         }



More information about the ffmpeg-cvslog mailing list