After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 597397 - equalizer is non deterministic
equalizer is non deterministic
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: 0.10.17
Assigned To: GStreamer Maintainers
GStreamer Maintainers
: 604500 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2009-10-05 10:29 UTC by Stefan Sauer (gstreamer, gtkdoc dev)
Modified: 2009-12-15 07:16 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Stefan Sauer (gstreamer, gtkdoc dev) 2009-10-05 10:29:41 UTC
The equalizer might have some issue in stereo mode.

= mono =
gst-launch-0.10 -m audiotestsrc num-buffers=7 wave=white-noise ! audio/x-raw-float,channels=1 ! equalizer-nbands num-bands=1 band0::gain=-10 band0::freq=4000 band0::bandwidth=2000 ! spectrum ! fakesink | grep " (element): spectrum" >data_all.txt
cat data_all.txt | cut -d, -f7- | sed "s/magnitude=(float){ //" | sed "s/ };//"  | sed "s/, /\n/g" >data_mono.txt

gnuplot
plot "data_mono.txt" with lines

= stereo =
gst-launch-0.10 -m audiotestsrc num-buffers=7 wave=white-noise ! audio/x-raw-float,channels=2 ! equalizer-nbands num-bands=1 band0::gain=-10 band0::freq=4000 band0::bandwidth=2000 ! deinterleave name=d ! queue ! spectrum ! fakesink d. ! queue ! spectrum ! fakesink | grep " (element): spectrum" >data_all.txt
grep "spectrum0" data_all.txt | cut -d, -f7- | sed "s/magnitude=(float){ //" | sed "s/ };//"  | sed "s/, /\n/g" >data_left.txt
grep "spectrum1" data_all.txt | cut -d, -f7- | sed "s/magnitude=(float){ //" | sed "s/ };//"  | sed "s/, /\n/g" >data_right.txt

gnuplot
plot "data_left.txt" with lines, "data_right.txt" with lines

In the stereo processing example above it receives a stream with same data on both channels and thus the results should also be the same.
Comment 1 Stefan Sauer (gstreamer, gtkdoc dev) 2009-10-05 10:35:29 UTC
I think I have found it already.
gst_iir_equ_process_ ## TYPE (GstIirEqualizer *equ, guint8 *data, guint size, guint channels) processes all channels interleaved, like as if it would be a mono signal :/
Comment 2 Stefan Sauer (gstreamer, gtkdoc dev) 2009-10-05 20:09:18 UTC
commit 7b6e594b69fe298ab746a50cf8ebe892338935f9
Author: Stefan Kost <ensonic@users.sf.net>
Date:   Mon Oct 5 22:43:11 2009 +0300

    equalizer: fix filter history usage. Fixes #597397
    
    The process functions where overwriting the history for each channel. Also pull
    some static things out of the inner loop.
Comment 3 Sebastian Dröge (slomo) 2009-12-15 07:16:35 UTC
*** Bug 604500 has been marked as a duplicate of this bug. ***