[SCM] libav/experimental: aacenc: Correct spreading calculation for high spreading.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:18:24 UTC 2013


The following commit has been merged in the experimental branch:
commit d56920e206b639d9e2a4e22b90acc680c6e4ca04
Author: Nathan Caldwell <saintdev at gmail.com>
Date:   Mon Nov 1 07:45:13 2010 +0000

    aacenc: Correct spreading calculation for high spreading.
    
    The 3GPP spec uses the following calculation for high spreading:
    
    thr'_spr = max(thr_scaled, s_h(n) * thr_scaled(n-1))
    
    where, n is defined as the current band, and s_h() is defined as "[...] the
    distance of adjacent bands in Bark and a constant slope that is 15 dB/Bark
    [...]". This is a little ambiguous as you would assume you want the Bark
    width of the previous band for this calculation. However, this assumption
    appears to be incorrect, and you really want the Bark width of the current
    band. Coincidentally this is exactly what the spec calls for! =P
    
    This noticeably improves Tom's Diner at low bitrates (I tested at 64kbps,
    with mid/side disabled).
    
    Patch by: Nathan Caldwell <saintdev at gmail.com>
    
    Originally committed as revision 25622 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/aacpsy.c b/libavcodec/aacpsy.c
index 1f295c0..a987be0 100644
--- a/libavcodec/aacpsy.c
+++ b/libavcodec/aacpsy.c
@@ -414,7 +414,7 @@ static void psy_3gpp_analyze(FFPsyContext *ctx, int channel,
     for (w = 0; w < wi->num_windows*16; w += 16) {
         AacPsyBand *band = &pch->band[w];
         for (g = 1; g < num_bands; g++)
-            band[g].thr = FFMAX(band[g].thr, band[g-1].thr * coeffs->spread_hi [g-1]);
+            band[g].thr = FFMAX(band[g].thr, band[g-1].thr * coeffs->spread_hi [g]);
         for (g = num_bands - 2; g >= 0; g--)
             band[g].thr = FFMAX(band[g].thr, band[g+1].thr * coeffs->spread_low[g]);
         for (g = 0; g < num_bands; g++) {

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list