GNOME Bugzilla – Bug 597397
equalizer is non deterministic
Last modified: 2009-12-15 07:16:35 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.
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 :/
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.
*** Bug 604500 has been marked as a duplicate of this bug. ***