From febcbd65fa3d00cfdfbfabd1c2a8fb8e659e1ca1 Mon Sep 17 00:00:00 2001
From: Robert Swain <robert.swain@gmail.com>
Date: Thu, 11 Sep 2008 01:22:34 +0000
Subject: [PATCH] Correct pulse amplitude application - a negative or 0
 coefficient implies the pulse is subtracted, else it is added. Also avoid a
 divide by 0.

Based on a patch by Alex Converse (alex converse gmail com)
Fixes part of issue632

Originally committed as revision 15294 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavcodec/aac.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavcodec/aac.c b/libavcodec/aac.c
index c59a663bec8..cc069ed7c66 100644
--- a/libavcodec/aac.c
+++ b/libavcodec/aac.c
@@ -753,7 +753,9 @@ static int decode_spectrum_and_dequant(AACContext * ac, float coef[1024], GetBit
     if (pulse_present) {
         for(i = 0; i < pulse->num_pulse; i++){
             float co  = coef_base[ pulse->pos[i] ];
-            float ico = co / sqrtf(sqrtf(fabsf(co))) + pulse->amp[i];
+            float ico = -pulse->amp[i];
+            if (co)
+                ico = co / sqrtf(sqrtf(fabsf(co))) + (co > 0 ? -ico : ico);
             coef_base[ pulse->pos[i] ] = cbrtf(fabsf(ico)) * ico;
         }
     }
-- 
GitLab