Interesting question for neonhttpsrc and gnomevfssrc cannot be seek?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Interesting question for neonhttpsrc and gnomevfssrc cannot be seek?

xiupeng xie
Hi All, i have created one pipieline with src either neonhttpsrc or gnomevfssrc to play HTTP stream.
 
and the main logic lines for seek are:
 
gst_element_set_state (pipeline, GST_STATE_PAUSED);
gst_element_seek()
gst_element_set_state (pipeline, GST_STATE_PLAYING);
gst_element_Get_state().
 
 
seek return TRUE, But it cannot change the state from PAUSED to PLAYING anymore.
get_state always return GST_STATE_CHANGE_ASYNC.
I have add wait time for many minutes, but still cannot change to PLAYING.
 
For local stream instead of http, the state can be changed from PAUSED to PLAYING,
 
What's additioanl steps should i do for http ones?
 
THANKS.
 
 
 
 

------------------------------------------------------------------------------
Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
software. With Adobe AIR, Ajax developers can use existing skills and code to
build responsive, highly engaging applications that combine the power of local
resources and data with the reach of the web. Download the Adobe AIR SDK and
Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Interesting question for neonhttpsrc and gnomevfssrc cannot be seek?

Edward Hervey
Administrator
Hi,

On Thu, 2009-02-12 at 09:15 +0800, xiupeng xie wrote:

> Hi All, i have created one pipieline with src either neonhttpsrc or
> gnomevfssrc to play HTTP stream.
>  
> and the main logic lines for seek are:
>  
> gst_element_set_state (pipeline, GST_STATE_PAUSED);
> gst_element_seek()
> gst_element_set_state (pipeline, GST_STATE_PLAYING);
> gst_element_Get_state().
>  
>  
> seek return TRUE, But it cannot change the state from PAUSED to
> PLAYING anymore.
> get_state always return GST_STATE_CHANGE_ASYNC.
> I have add wait time for many minutes, but still cannot change to
> PLAYING.
>  
> For local stream instead of http, the state can be changed from PAUSED
> to PLAYING,
>  
> What's additioanl steps should i do for http ones?

  This is not specific to http, but common to any non-live pipeline. The
problem is that the state change to PAUSED/PLAYING happens
asynchronously. What you want to do is the following:

  * set state to PAUSED
  * WAIT (in the mainloop or polling) for the confirmation that the
pipeline has changed state to PAUSED. This means that all sinks are
prerolled (one buffer is waiting in each sink) and the pipeline is fully
responsive to seeks/playback/...
  * Do your seek.
  * You don't need to wait for the pipeline to be pre-rolled (PAUSED)
again to set it to PLAYING, you can straight away set it to PLAYING.

  You might also want to listen for ERROR/EOS messages on the pipeline
bus, because although the remote http uri accepts seeks according to its
headers (which is why the seek would return True), many things could go
wrong in between also.


    Edward


>  
> THANKS.
>  
>  
>  
>  
> ------------------------------------------------------------------------------
> Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
> software. With Adobe AIR, Ajax developers can use existing skills and code to
> build responsive, highly engaging applications that combine the power of local
> resources and data with the reach of the web. Download the Adobe AIR SDK and
> Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
> _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


------------------------------------------------------------------------------
Create and Deploy Rich Internet Apps outside the browser with Adobe(R)AIR(TM)
software. With Adobe AIR, Ajax developers can use existing skills and code to
build responsive, highly engaging applications that combine the power of local
resources and data with the reach of the web. Download the Adobe AIR SDK and
Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel