[Bug 703477] New: [PATCH] audioresample: disable NEON code path for 16-bit integer

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Jul 2 12:51:50 PDT 2013


https://bugzilla.gnome.org/show_bug.cgi?id=703477
  GStreamer | gst-plugins-base | 1.1.1

           Summary: [PATCH] audioresample: disable NEON code path for
                    16-bit integer
    Classification: Platform
           Product: GStreamer
           Version: 1.1.1
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          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: ---


Created an attachment (id=248248)
 View: https://bugzilla.gnome.org/attachment.cgi?id=248248
 Review: https://bugzilla.gnome.org/review?bug=703477&attachment=248248

patch which disables NEON for 16-bit int

I found out that the resampler's ARM NEON code paths contain a bug with 16-bit
integer samples. It only occurs if all of the following criteria are met:

1) 16-bit audio sample format
2) target platform supports the ARM NEON instruction set (BeagleBone,
BeagleBoard, i.MX6 etc. but NOT the RaspberryPi from what I know)
3) GStreamer was built with Orc acceleration
4) at run-time, during element initialization, the audioresample element
benchmarks backend speeds and decides to use the int16 backend
5) the full sinc table is used

In the vast majority cases, (4) will not occur; it will choose the float
backend instead. However, if all criteria are met, then no sound will be
produced.

The following command line reproduces this:

gst-launch-1.0 audiotestsrc wave=square volume=1 ! "audio/x-raw, format=S16LE,
channels=2, rate=44100" ! audioresample sinc-filter-mode=1 ! "audio/x-raw,
rate=48000" ! audioconvert ! autoaudiosink

if all of the criteria are met, nothing will be heard until S16LE is replaced
with S32LE.

Note that 32-bit floating point NEON support works fine.

The attached patch removes NEON support for the 16-bit integer backend. I do
not understand why it doesn't work, since it has worked before. However,
looking for the cause is probably not worth it, since the performance gain for
16-bit samples is small (NEON seems to pay off more for the 32-bit float
samples.)

If anybody cross-compiled GStreamer 1.1.1 for a platform with ARM NEON support
, please run the gst-launch line above.

-- 
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