aacpsy: use a different metric for the spread of a band
authorRostislav Pehlivanov <atomnuker@gmail.com>
Thu, 2 Jul 2015 18:13:00 +0000 (19:13 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 3 Jul 2015 11:17:57 +0000 (13:17 +0200)
This commit modifies 02dbed6 to use band->active_lines to better gauge how much information is contained within a single band and thus allow the perceptual noise subsitution to more accurately determine which bands to code as noise. The spread[w+g] used before this patch behaved more like a low-pass filter for PNS band_types, which could mistakingly mark some low frequency bands as noise.

Reviewed-by: Claudio Freire <klaussfreire@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/aacpsy.c

index 78232d4..b16f6b9 100644 (file)
@@ -787,7 +787,7 @@ static void psy_3gpp_analyze_channel(FFPsyContext *ctx, int channel,
 
             psy_band->threshold = band->thr;
             psy_band->energy    = band->energy;
-            psy_band->spread    = spread_en[w+g];
+            psy_band->spread    = band->active_lines * 2.0f / band_sizes[g];
         }
     }