]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Apply pulses to unscaled coefficients rather than scaled.
authorsuperdump <superdump@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 13 Sep 2008 20:51:36 +0000 (20:51 +0000)
committersuperdump <superdump@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sat, 13 Sep 2008 20:51:36 +0000 (20:51 +0000)
Slight reworking of a patch by Alex Converse (alex converse gmail com)

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@15314 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/aac.c

index 0e2db1267df0f3b9ceb3ff6dee68637c50e0ad66..d18e25b1dfd79ebff2811f8d4ce0538825363e12 100644 (file)
@@ -754,12 +754,19 @@ static int decode_spectrum_and_dequant(AACContext * ac, float coef[1024], GetBit
     }
 
     if (pulse_present) {
+        idx = 0;
         for(i = 0; i < pulse->num_pulse; i++){
             float co  = coef_base[ pulse->pos[i] ];
+            while(offsets[idx + 1] <= pulse->pos[i])
+                idx++;
+            if (band_type[idx] != NOISE_BT && sf[idx]) {
             float ico = -pulse->amp[i];
-            if (co)
+            if (co) {
+                co /= sf[idx];
                 ico = co / sqrtf(sqrtf(fabsf(co))) + (co > 0 ? -ico : ico);
-            coef_base[ pulse->pos[i] ] = cbrtf(fabsf(ico)) * ico;
+            }
+            coef_base[ pulse->pos[i] ] = cbrtf(fabsf(ico)) * ico * sf[idx];
+            }
         }
     }
     return 0;