gst/replaygain/rganalysis.c: Avoid slowdown from denormals when processing near-silence input data.

Original commit message from CVS:
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.
This commit is contained in:
René Stadler 2007-11-12 21:07:31 +00:00 committed by Sebastian Dröge
parent 72221ceb5e
commit 14c0991fb9
2 changed files with 12 additions and 1 deletions

View file

@ -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> 2007-11-12 Edward Hervey <bilboed@bilboed.com>
* gst/flv/gstflvparse.c: * gst/flv/gstflvparse.c:

View file

@ -246,7 +246,10 @@ static inline void
yule_filter (const gfloat * input, gfloat * output, yule_filter (const gfloat * input, gfloat * output,
const gfloat * a, const gfloat * b) 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[-1] * b[1] - output[-1] * a[1]
+ input[-2] * b[2] - output[-2] * a[2] + input[-2] * b[2] - output[-2] * a[2]
+ input[-3] * b[3] - output[-3] * a[3] + input[-3] * b[3] - output[-3] * a[3]