Pipeline freeze at preroll on embedded system
Sebastian Dröge
sebastian.droege at collabora.co.uk
Sun Jan 20 23:23:37 PST 2013
On So, 2013-01-20 at 21:57 +0100, Julian Scheel wrote:
> > The GCond in question would usually be signalled when the state change
> > from PAUSED to PLAYING happens in basesink (or when
> > flushing/EOS/stepping). So what you could do is to check if
> >
> > a) basesink is actually tried to be set from PAUSED to PLAYING (check if
> > the change_state function is called)
>
> Actually I debugged this and the PAUSED to PLAYING transition is never happening. I can see that gstbasesrc change_state is called for GST_STATE_CHANGE_NULL_TO_READY as well as GST_STATE_CHANGE_READY_TO_PAUSED, but never for GST_STATE_CHANGE_PAUSED_TO_PLAYING.
> So now the question is why this would not happen?
> From where would that transition be initiated?
In "gst-launch-1.0 fakesrc ! fakesink" it would happen from the
application thread. See gstreamer/tools/gst-launch.c:1097
This happens after getting the STATE_CHANGED message for the state
change to PAUSED from the pipeline in "event_loop".
Backtrace would be something like:
> #0 gst_base_src_change_state (element=0x7b0110,
> transition=GST_STATE_CHANGE_PAUSED_TO_PLAYING) at gstbasesrc.c:3579
> #1 0x00007ffff7b335cc in gst_element_change_state (
> element=element at entry=0x7b0110, transition=<optimized out>)
> at gstelement.c:2594
> #2 0x00007ffff7b33fa1 in gst_element_set_state_func (element=0x7b0110,
> state=GST_STATE_PLAYING) at gstelement.c:2550
> #3 0x00007ffff7b1bd8c in gst_bin_element_set_state (next=GST_STATE_PLAYING,
> current=GST_STATE_PAUSED, start_time=0, base_time=1019601586303013,
> element=0x7b0110, bin=0x7b60f0) at gstbin.c:2308
> #4 gst_bin_change_state_func (element=0x7b60f0,
> transition=GST_STATE_CHANGE_PAUSED_TO_PLAYING) at gstbin.c:2610
> #5 0x00007ffff7b335cc in gst_element_change_state (
> element=element at entry=0x7b60f0, transition=<optimized out>)
> at gstelement.c:2594
> #6 0x00007ffff7b33fa1 in gst_element_set_state_func (element=0x7b60f0,
> state=GST_STATE_PLAYING) at gstelement.c:2550
> #7 0x000000000040395e in main (argc=4, argv=0x7fffffffe1d8)
> at gst-launch.c:1097
> > and b) if and when the GCond is signalled (while waiting? before? is
> > something else waiting at that time, in which case changing from SIGNAL
> > to BROADCAST should help, etc).
>
> As PAUSED_TO_PLAYING transition is not happening the GCond will not be signalled, right?
Yes, only when flushing/EOS otherwise.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20130121/6dc9cd6e/attachment.pgp>
More information about the gstreamer-devel
mailing list