[Bug 724234] New: Impossible to implement soft play / pause

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Feb 12 04:48:19 PST 2014


https://bugzilla.gnome.org/show_bug.cgi?id=724234
  GStreamer | gstreamer (core) | 1.2.2

           Summary: Impossible to implement soft play / pause
    Classification: Platform
           Product: GStreamer
           Version: 1.2.2
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: theodorz at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


I would like to implement a instant fade out / fade in when the user clicks
pause or play in my music playing application. This is a pretty standard
feature in most media players.

By "instant" i mean that i want the fade out / in to react immediatly and be
complete within 200-400 ms.

I've tried to implement this in gstreamer with the following strategies:

* Using a volume element and a gst-controller fader to control the volume
property. I read the current position of the pipeline and set the next control
point X ms in the future with the new volume.

* Using a volume element and manually changing the volume-property from
separate thread every 20ms or so.

Both these method works in general, but the problem is that the audio playback
reacts too late to the action. In both cases it seems like the volume actually
only starts changing after about 200ms after i start the fadein/out.

The methods works fine for e.g. longer crossfading (> 1ms) but the delay is
unaccaptable for an instant soft pase / play.

I'm guessing the problem is that there is data buffered in the volume element
or maybe in the alsasink itself. If i do a flush I get a stutter in the
playback which is unacceptable.

I've tried various pipelines, but my typical one looks like this: uridecodebin
!  audioconvert ! volume ! alsasink.

One suggestion to make this possible is to add a "volume" property directly on
the alsasink. Would this be possible?

Another suggestion is to play with the system volume directly, but this is not
possible in my application.

Any ideas, suggestions to make this possible?

Thanks!
\\ Theo

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