flushing vs. non-flushing seek

Christian Sell christian at gsvitec.com
Mon Jul 13 05:43:36 PDT 2015


Hello all,
 
I am trying to understand the purpose and working of non-flushing seek. Heres my
scenario:
 
(Preamble)
- due to the specifics of my UI, I am doing one  seek to adjust playback rate,
directly followed by a seek that changes the playback segment.
- previous to each seek operation, I am doing a query for the current position
- the position query fails for the second seek ("wrong state"). The only
explanation I could find was that the first seek, being called with a
GST_SEEK_FLAG_FLUSH parameter, discards all position information.
 
(Problem)
- I therefore decided to execute the first seek without the GST_SEEK_FLAG_FLUSH
flag.
- when I call the seek with a GST_SEEK_FLAG_NONE, my application completely
BLOCKS!!
 
I investigated into the execution stack, and found that the sending of the seek
event went directly into a code sequence in gst_base_src_perform_seek:
 
  if (flush) {
    ...
  } else
    gst_pad_pause_task (src->srcpad);

and in gst_pad_pause_task the call gets blocked on   GST_PAD_STREAM_LOCK (pad);

can someone tell me what I am missing here? There must be something fundamental,
because the results are so detrimental..
 
thanks,
Christian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20150713/07b15252/attachment.html>


More information about the gstreamer-devel mailing list