[Bug 685637] New: [PATCH] [audioresample] Performance improvements & ARM NEON support
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Sat Oct 6 18:39:27 PDT 2012
https://bugzilla.gnome.org/show_bug.cgi?id=685637
GStreamer | gst-plugins-base | 1.0.0
Summary: [PATCH] [audioresample] Performance improvements & ARM
NEON support
Classification: Platform
Product: GStreamer
Version: 1.0.0
OS/Version: Linux
Status: UNCONFIRMED
Severity: enhancement
Priority: Normal
Component: gst-plugins-base
AssignedTo: gstreamer-bugs at lists.freedesktop.org
ReportedBy: dv at pseudoterminal.org
QAContact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
This set of patches introduces resampler speedups and support for the
ARM NEON instruction set. The patches were originally done for Speex
upstream by Jyri Sarha, and can be found in the Speex mailing list:
http://lists.xiph.org/pipermail/speex-dev/2011-September/008242.html
http://lists.xiph.org/pipermail/speex-dev/2011-September/008243.html
http://lists.xiph.org/pipermail/speex-dev/2011-September/008241.html
http://lists.xiph.org/pipermail/speex-dev/2011-September/008240.html
http://lists.xiph.org/pipermail/speex-dev/2011-September/008239.html
http://lists.xiph.org/pipermail/speex-dev/2011-September/008238.html
These patches were then discovered by Branislav Katreniak
( branislav.katreniak at streamunlimited.com ) for our projects at
StreamUnlimited ( http://streamunlimited.com/ ). He did an initial
adaptation of the patches for the GStreamer audioresample element.
Tests showed a significant speedup; resampling of 44.1 to 48 kHz ran
up to 5 times faster on a 720Mhz ARM Cortex-A8 CPU.
I then adapted the patches for GStreamer 1.0 and added extra
functionality to control the behavior better and to check for ARM NEON
support in configure.ac.
Two new properties are introduced: sinc-filter-mode and
sinc-filter-auto-threshold. These control the way the sinc filter table
behaves and gets computed. The default behavior is what has been used
until now, "interpolated" (sparse filter table with cubic interpolation);
other modes are "full" (all filter values computed) and "auto" (full table
unless estimated size of said table exceeds the threshold).
The "auto" mode exists, because in extreme cases (like resampling from
48000 to 48001 Hz) the full filter table can become very large, and take
a long time to compute. Default threshold is 1 MB.
As for the default mode: I thought setting it to "interpolated" is useful
for backwards compatibility, but "auto" as default makes sense, too.
Thoughts?
In addition, the very first patch reintroduces SSE header checks
to configure.ac , which re-enables the SSE/SSE2 code paths inside the
resampler and also helps with the performance.
--
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