[gstreamer-bugs] [Bug 360673] Stuttering with SunAudio Sink

GStreamer (bugzilla.gnome.org) bugzilla-daemon at bugzilla.gnome.org
Tue Nov 28 09:55:54 PST 2006


Do not reply to this via email (we are currently unable to handle email
responses and they get discarded).  You can add comments to this bug at
http://bugzilla.gnome.org/show_bug.cgi?id=360673

  GStreamer | gst-plugins-base | Ver: HEAD CVS





------- Comment #24 from Brian Cameron  2006-11-28 17:54 UTC -------

Okay.  I think the patch in comment #23 should be commited to gst-plugins-good.
 Padraig has also tested the patch and we agree this fixes a good bit of the
performance problem.

Padraig is a bit concerned about his 1st patch (in comment #19).  He says:
Comment #17 by Wim Taymans suggested to me that the proposed patch was fighting
against the original design so I would like to see if we can solve our problems
without that patch. 

I have stumbled across the library libgstvolume.so. Its source code is in
gst-plugins-0.10.10.gst/volume/gstvolume.c.

The function volume_update_volume is called when I move the volume slider. This
looks like the volume for the current program you refer to.

I have noticed that the function volume_transform_ip is called when processing
the sound.

This function has an intriguing FIXME: subdivide GST_BUFFER_SIZE into small
chunks for smooth fades. Does this mean anything to you? 

Based on this, I think that the performance problems on Solaris had two causes:

1) Not implementing reset() in the sink/source plugins, causing the
   stop/previous/next buttons in rhythmbox to be slow.  I think my
   patch fixes this.
2) The fact that the volume slider doesn't do smooth fades, and when
   combined with a large buffer causes slow fades also. 

So, perhaps the right fix is to leave the buffer size large (512K) on Solaris
and fix volume changing so that smooth fades work better, especially since it
works badly when the buffer size is big.  Is there another GStreamer bug about
this issue?

Or, Wim, do you think that Padraig's first patch (in comment #19) has some 
merit and perhaps the ringbuffer should have some code like this so that it
works better when some of the assumptions break (as they seem to on Solaris
since it doesn't work when the buffer is set to a smaller size than 512K).
Padraig's patch in comment #19 *does* allow GStreamer to work on Solaris with
small buffer sizes, although it does introduce a bug that causes GStreamer
apps to hang when you try to play a second track (e.g. hit Prev/Next in
rhythmbox).  Probably because the locks aren't being freed properly on 
reset or something?  Wim?


-- 
Configure bugmail: http://bugzilla.gnome.org/userprefs.cgi?tab=email




More information about the Gstreamer-bugs mailing list