summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--gst/replaygain/rganalysis.c5
2 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 7a0ce93c..cc531c08 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-11-12 Sebastian Dröge <slomo@circular-chaos.org>
+
+ Patch by: René Stadler <mail at renestadler dot de>
+
+ * gst/replaygain/rganalysis.c: (yule_filter):
+ Avoid slowdown from denormals when processing near-silence input data.
+ Spotted by Gabriel Bouvigne. Fixes #494499.
+
2007-11-12 Edward Hervey <bilboed@bilboed.com>
* gst/flv/gstflvparse.c:
diff --git a/gst/replaygain/rganalysis.c b/gst/replaygain/rganalysis.c
index 70fa24c5..147eef85 100644
--- a/gst/replaygain/rganalysis.c
+++ b/gst/replaygain/rganalysis.c
@@ -246,7 +246,10 @@ static inline void
yule_filter (const gfloat * input, gfloat * output,
const gfloat * a, const gfloat * b)
{
- output[0] = input[0] * b[0]
+ /* 1e-10 is added below to avoid running into denormals when operating on
+ * near silence. */
+
+ output[0] = 1e-10 + input[0] * b[0]
+ input[-1] * b[1] - output[-1] * a[1]
+ input[-2] * b[2] - output[-2] * a[2]
+ input[-3] * b[3] - output[-3] * a[3]