[gstreamer-bugs] [Bug 360673] Stuttering with SunAudio Sink
GStreamer (bugzilla.gnome.org)
bugzilla-daemon at bugzilla.gnome.org
Fri Nov 10 14:16:37 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 #16 from Brian Cameron 2006-11-10 22:15 UTC -------
More info from Padraig:
I am using a segment size of 4410 and a segtotal of 20. have the lines
spec->segsize *=5;
spec->segtotal = 20;
in gst_sunaudiosink_prepare.
I have threied calling thr_yield without corcing the audio device to open
non-blocking.
The results seem to be better than you see but are not perfect.
I have worked my way through mu debug log and I see that after writing segments
0 and 1 to the audio device, new data is written to segment 0. Then after
segment 2 is written to the
audio device new data is written to segment 1. This happy situation of writing
segment n to the audio device and then writing data to segment n-1 before
writing segment n+1 to the audio device continues for some time.
Then suddenly data stops being written to the segments in the ring buffer and
data continues to be written to the audio device which causes stuttering as
silent samples are eventually written.
I have not been able to determine why this is so. It looks like the call to
thr_yield sometimes does not cause the thread which writes data to the ring
buffer to be activated.
Be that it may, I would to like to see if we can implement a proper fix. I
believe that we need the function gst_ring_buffer_prepare_read to return FALSE
if the next segment has been filled with silence samples and has not had data
written to it since.
I have coded what I think is required but do not have it working yet; hopefully
on Monday.
--
Configure bugmail: http://bugzilla.gnome.org/userprefs.cgi?tab=email
More information about the Gstreamer-bugs
mailing list