[gst-devel] gstplay example app failing to seek

Ronald Bultje rbultje at ronald.bitfreak.net
Sun Dec 14 15:10:01 CET 2003


Hi Julien & gang,

the gstplay example app is failing to seek because of an inconsistency
in queue that I do not know of how to fix it. Event forwarding in a
queue works like this: we add the queue to a (mutex-protected) GQueue
(GList-sort of thing), and then we wait for the chain function (so the
sink-thread) to run, pick up the pending events, run them backwards (in
their own thread) and signal the waiting event origin that the event is
done, plus a valid return value. Fairly simple and straightforward.

Now, the issue in gstplay is that you're seeking on a video queue, where
it is not passing data. This is an issue, because if there's no data,
then the chain function will never run and thus the event will never be
handled! See the issue? That's what's blocking the event function from
returning in libgstplay.

How to fix it... That's tricky. We could add a timeout to the
g_cond_wait() event function, but that's a workaround. I still think
it's a good idea, but not as a fix on itself, but more as a protection
for possible other bugs. If there's no reply after two seconds (or so),
return FALSE automatically. For the issue itself, I'm not sure. The
question here is really: how can I detect whether a pipeline that's in
the PLAYING state is actually passing data? Any help on this is
appreciated [therefore: CC to gst-devel ;) )].

Ronald

-- 
Ronald Bultje <rbultje at ronald.bitfreak.net>
Linux Video/Multimedia developer





More information about the gstreamer-devel mailing list