[Bug 674025] New: audiofirfilter drops buffers when using more than one channel
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Thu Apr 12 16:18:42 PDT 2012
https://bugzilla.gnome.org/show_bug.cgi?id=674025
GStreamer | gst-plugins-good | 0.10.x
Summary: audiofirfilter drops buffers when using more than one
channel
Classification: Platform
Product: GStreamer
Version: 0.10.x
OS/Version: All
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: gst-plugins-good
AssignedTo: gstreamer-bugs at lists.freedesktop.org
ReportedBy: kain2396 at gmail.com
QAContact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Created an attachment (id=211963)
--> (https://bugzilla.gnome.org/attachment.cgi?id=211963)
Python script to demo the bug
The audiofirfilter (and any element which derives from AudioFXBaseFIRFilter)
will drop buffers when mutlichannel input is piped in. I believe the cause of
this bug is a faulty count of the output samples in the
TIME_DOMAIN_CONVOLUTION_BODY macro of audiofxbasefirfilter.c. Specifically, the
number of input samples is returned with:
return input_samples / channels; \
...but this is double counting since input_samples has already been divided by
the number of channels previously. The overall effect is that if the kernel is
short enough to invoke the time domain convolution algorithm, then the first
buffer received will processed correctly and the next (nchannels-1) buffers
will be dropped because of the bookkeeping error.
Removing the division by the channels should fix the problem. The attached
python script can be used to hear the bug by processing a dual channel audio
file (the script takes the audio file as an argument) with the audiofirfilter
which should otherwise be an identity operation. The choppiness is the bug in
action.
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list