[gstreamer-bugs] [Bug 617339] New: pulsesink doesn't make use of pa_stream_begin_write

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Apr 30 16:53:45 PDT 2010


https://bugzilla.gnome.org/show_bug.cgi?id=617339
  GStreamer | gst-plugins-good | git

           Summary: pulsesink doesn't make use of pa_stream_begin_write
    Classification: Desktop
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: bossart.nospam at gmail.com
         QAContact: gstreamer-bugs at lists.sourceforge.net
      GNOME target: ---
     GNOME version: ---


Created an attachment (id=160029)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=160029)
patch against git master

The current version of pulsesink creates a lot of overhead. For example, when
decoding mp3, it'll send 4608 bytes at once, even when the latency was
specified as 'don't care' with a large buffer-time/tlength value.

The proposed solution (patch attached) relies on a shm buffer provided by pulse
audio. PCM samples are copied into this buffer, and it's flushed when there's
no space left. This saves a lots of useless overhead and helps reduce power
consumption. On a Menlow platform this help go from 12% C0 to 9%. We use this
patch for all power/performance measurements at Intel, and we might as well
contribute it to the community.

This solution works only with PulseAudio >0.9.16 (about a year old). The patch
has not been tested for the case where the 'toy resampler' is used, mainly
since I don't know how to test it.

An additional improvement could be to flush the buffer when the latency-time
value was reached. Flushing the buffer when it is full could be an issue for
low-latency apps.

Feedback welcome.

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