Discussion:
[gst-devel] Why does my pipeline block on preroll?
wl2776
2010-07-21 15:46:16 UTC
Permalink
I have the pipeline:

filesrc ! typefind ! mpegpsdemux name=demux multiqueue
max-size-bytes=2097152 name=mq demux.audio_c0 ! mq.sink0 mq.src0 ! mp3parse
! flump3dec ! input-selector ! tee ! audioconvert ! audioresample !
pulsesink demux.video_e0 ! mq.sink1 mq.src1 ! mpegvideoparse ! mpeg2dec !
input-selector ! queue max-size-buffers=3 max-size-bytes=0 max-size-time=0 !
ffmpegcolorspace ! videoscale ! xvimagesink


Here is the dot file:
http://gstreamer-devel.966125.n4.nabble.com/file/n2297314/player.dot
player.dot (30kb), and produced PNG:
Loading Image...
player.png (850kb)

Looks like there is no negotiation between multiqueue and mpegvideoparse.
Why an it be?

I tried using seek example with this pipeline
($GST_PLUGINS_BASE/test/examples/seek/seek.c)
It begins playing only after seek command.
--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Why-does-my-pipeline-block-on-preroll-tp2297314p2297314.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
Tiago Katcipis
2010-07-22 13:05:31 UTC
Permalink
try to put async=false on xvimagesink or on the pulsesink. I don't remember
it on details...but when you have to sinks on the same pipe one keeps
waiting for the other to be ready...something like that...so you get
blocked, if one of the sinks are set with async=false this will not happen
...at least with me it worked :-)

best regards,
Katcipis
Post by wl2776
filesrc ! typefind ! mpegpsdemux name=demux multiqueue
max-size-bytes=2097152 name=mq demux.audio_c0 ! mq.sink0 mq.src0 ! mp3parse
! flump3dec ! input-selector ! tee ! audioconvert ! audioresample !
pulsesink demux.video_e0 ! mq.sink1 mq.src1 ! mpegvideoparse ! mpeg2dec !
input-selector ! queue max-size-buffers=3 max-size-bytes=0 max-size-time=0 !
ffmpegcolorspace ! videoscale ! xvimagesink
http://gstreamer-devel.966125.n4.nabble.com/file/n2297314/player.dot
http://gstreamer-devel.966125.n4.nabble.com/file/n2297314/player.png
player.png (850kb)
Looks like there is no negotiation between multiqueue and mpegvideoparse.
Why an it be?
I tried using seek example with this pipeline
($GST_PLUGINS_BASE/test/examples/seek/seek.c)
It begins playing only after seek command.
--
http://gstreamer-devel.966125.n4.nabble.com/Why-does-my-pipeline-block-on-preroll-tp2297314p2297314.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
gstreamer-devel mailing list
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
--
http://www.getgnulinux.org/windows
wl2776
2010-07-22 13:27:00 UTC
Permalink
Tried setting async=false.
1. If on xvimagesink, then the pipeline got to playing, but I didn't see a
picture, only sound.
The picture appeared again after seek event.

2. If on pulsesink, nothing changed.

I have studied the debug output from
--gst-debug=seek:5,mpeg2dec:9,mpegvideoparse:9 and have found that the
gst_mpegvideoparse_chain_forward function is not called, if no seek event is
issued.

However, if I use playbin2 instead of that pipeline, then this function is
called.
--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Why-does-my-pipeline-block-on-preroll-tp2297314p2298660.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
Nathanael D. Noblet
2010-07-22 15:13:27 UTC
Permalink
Post by wl2776
filesrc ! typefind ! mpegpsdemux name=demux multiqueue
max-size-bytes=2097152 name=mq demux.audio_c0 ! mq.sink0 mq.src0 ! mp3parse
! flump3dec ! input-selector ! tee ! audioconvert ! audioresample !
pulsesink demux.video_e0 ! mq.sink1 mq.src1 ! mpegvideoparse ! mpeg2dec !
input-selector ! queue max-size-buffers=3 max-size-bytes=0 max-size-time=0 !
ffmpegcolorspace ! videoscale ! xvimagesink
http://gstreamer-devel.966125.n4.nabble.com/file/n2297314/player.dot
http://gstreamer-devel.966125.n4.nabble.com/file/n2297314/player.png
player.png (850kb)
Looks like there is no negotiation between multiqueue and mpegvideoparse.
Why an it be?
I tried using seek example with this pipeline
($GST_PLUGINS_BASE/test/examples/seek/seek.c)
It begins playing only after seek command.
I am by no means an expert as I just started playing with gstreamer as a
developer last week, however yesterday I read this:


http://www.gstreamer.net/wiki/FAQ#MypipelinewithmultiplesinksneverreachesthePAUSEDstate.2CwhatamIdoingwrong.3F

Maybe the same/related issue?
wl2776
2010-07-22 15:31:00 UTC
Permalink
My pipeline has queues after the demuxer.
Added one more after the tee - doesn't help.
--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Why-does-my-pipeline-block-on-preroll-tp2297314p2298861.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
Nathanael D. Noblet
2010-07-22 15:43:21 UTC
Permalink
Post by wl2776
My pipeline has queues after the demuxer.
Added one more after the tee - doesn't help.
Yeah, sorry, like I said, just started using it last week.
Stefan Kost
2010-08-09 15:04:10 UTC
Permalink
Post by wl2776
filesrc ! typefind ! mpegpsdemux name=demux multiqueue
max-size-bytes=2097152 name=mq demux.audio_c0 ! mq.sink0 mq.src0 ! mp3parse
! flump3dec ! input-selector ! tee ! audioconvert ! audioresample !
pulsesink demux.video_e0 ! mq.sink1 mq.src1 ! mpegvideoparse ! mpeg2dec !
input-selector ! queue max-size-buffers=3 max-size-bytes=0 max-size-time=0 !
ffmpegcolorspace ! videoscale ! xvimagesink
Try to reduce the pipeline one by one. E.g. remove input-selector, or
remove the "queue max-size-buffers=3 max-size-bytes=0 max-size-time=0".
Try a value >3 here.

Stefan
Post by wl2776
http://gstreamer-devel.966125.n4.nabble.com/file/n2297314/player.dot
http://gstreamer-devel.966125.n4.nabble.com/file/n2297314/player.png
player.png (850kb)
Looks like there is no negotiation between multiqueue and mpegvideoparse.
Why an it be?
I tried using seek example with this pipeline
($GST_PLUGINS_BASE/test/examples/seek/seek.c)
It begins playing only after seek command.
wl2776
2010-08-09 16:01:17 UTC
Permalink
Post by Stefan Kost
Try to reduce the pipeline one by one. E.g. remove input-selector, or
remove the "queue max-size-buffers=3 max-size-bytes=0 max-size-time=0".
Try a value >3 here.
The goal I was trying to achieve was to mimic playbin2's behavior, to find
the source of its errors.
I've copied these values from it.
--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Why-does-my-pipeline-block-on-preroll-tp2297314p2318704.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
Loading...