[gstreamer-bugs] [Bug 392189] [esdsink] pipeline hung in state change from PAUSED to PLAYING
GStreamer (bugzilla.gnome.org)
bugzilla-daemon at bugzilla.gnome.org
Thu Jan 4 20:05:36 PST 2007
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=392189
GStreamer | gst-plugins-good | Ver: 0.10.2
Jay.Tan changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEEDINFO |UNCONFIRMED
------- Comment #3 from Jay.Tan 2007-01-05 04:04 UTC -------
I'am sorry that this commit can not fix this bug.
The esd-server handle a requirement from the esd-client by several loop
operations. When the esd-client want to play a sound stream, it will send a
requirment to the esd-server. If this channel was authenticated by the
esd-server, the esd-client began to send sound stream by writting it to a
buffer and the esd-server read the stream from the buffer.
When the state of esdsink was set from GST_STATE_PLAYING to GST_STATE_PAUSED,
the esd-client will stop to write sound stream into the buffer. But the
esd-server still want to get data from the buffer and if can't, it will be
blocked here. When you set the state of esdsink from GST_STATE_PAUSED back to
GST_STATE_PLAYING, the esdsink must get the latency from the server and then
start to write the buffer. But, unfortunately, the esd-client can't get the
latency because the esd-server was blocked. So the esd-client didn't write
stream into the buffer. The esd-server was also blocked because it can't read
data from the buffer. This situation is similar to Dead-Lock.
I modified esdsink to bypass this bug. But it was not so good:)
--
Configure bugmail: http://bugzilla.gnome.org/userprefs.cgi?tab=email
More information about the Gstreamer-bugs
mailing list