I'm trying to use shmsrc/shmsink to decode a video source once and use
decoded video from many application so I start testing the plugins using videotestsrc to produce a test stream and many consumer to receive it Producer: gst-launch videotestsrc ! shmsink socket-path=/tmp/dudda shm-size=10000000 wait-for-connection=false preroll-queue-len=5 Consumers: gst-launch shmsrc socket-path=/tmp/dudda ! "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, chroma-site=(string)mpeg2,width=(int)320, height=(int)240, framerate=(fraction)30/1" ! autovideosink But when I start the fifth (sometimes the forth) consumer I ran into problem: which are the limitation of shmsrc, I wonder the use of a global lock. The message I got is: gst-launch shmsrc socket-path=/tmp/blah ! "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, chroma-site=(string)mpeg2,width=(int)320, height=(int)240, framerate=(fraction)30/1" ! autovideosink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: Filter caps do not completely specify the output format Additional debug info: gstcapsfilter.c(392): gst_capsfilter_prepare_buf (): /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: Output caps are unfixed: EMPTY ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... Any clue? Maurizio _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Uh uh someone claims this problem here:
https://bugzilla.gnome.org/show_bug.cgi?id=669697 2012/2/21 Pazzo Da Legare <[hidden email]>: > I'm trying to use shmsrc/shmsink to decode a video source once and use > decoded video from many application so I start testing the plugins > using videotestsrc to produce a test stream and many consumer to > receive it > > > Producer: > gst-launch videotestsrc ! shmsink socket-path=/tmp/dudda > shm-size=10000000 wait-for-connection=false preroll-queue-len=5 > > Consumers: > > gst-launch shmsrc socket-path=/tmp/dudda ! > "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, > chroma-site=(string)mpeg2,width=(int)320, height=(int)240, > framerate=(fraction)30/1" ! autovideosink > > But when I start the fifth (sometimes the forth) consumer I ran into > problem: which are the limitation of shmsrc, I wonder the use of a > global lock. > > The message I got is: > > gst-launch shmsrc socket-path=/tmp/blah ! > "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, > chroma-site=(string)mpeg2,width=(int)320, height=(int)240, > framerate=(fraction)30/1" ! autovideosink > Setting pipeline to PAUSED ... > Pipeline is PREROLLING ... > ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: > Filter caps do not completely specify the output format > Additional debug info: > gstcapsfilter.c(392): gst_capsfilter_prepare_buf (): > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: > Output caps are unfixed: EMPTY > ERROR: pipeline doesn't want to preroll. > Setting pipeline to NULL ... > Freeing pipeline ... > > Any clue? > > Maurizio gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
I forgot to add my version reference:
gst-launch-0.10 version 0.10.35 GStreamer 0.10.35 https://launchpad.net/distros/ubuntu/+source/gstreamer0.10 on Ubuntu 11.10@64bit pz 2012/2/21 Pazzo Da Legare <[hidden email]>: > Uh uh someone claims this problem here: > > https://bugzilla.gnome.org/show_bug.cgi?id=669697 > > > 2012/2/21 Pazzo Da Legare <[hidden email]>: >> I'm trying to use shmsrc/shmsink to decode a video source once and use >> decoded video from many application so I start testing the plugins >> using videotestsrc to produce a test stream and many consumer to >> receive it >> >> >> Producer: >> gst-launch videotestsrc ! shmsink socket-path=/tmp/dudda >> shm-size=10000000 wait-for-connection=false preroll-queue-len=5 >> >> Consumers: >> >> gst-launch shmsrc socket-path=/tmp/dudda ! >> "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, >> chroma-site=(string)mpeg2,width=(int)320, height=(int)240, >> framerate=(fraction)30/1" ! autovideosink >> >> But when I start the fifth (sometimes the forth) consumer I ran into >> problem: which are the limitation of shmsrc, I wonder the use of a >> global lock. >> >> The message I got is: >> >> gst-launch shmsrc socket-path=/tmp/blah ! >> "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, >> chroma-site=(string)mpeg2,width=(int)320, height=(int)240, >> framerate=(fraction)30/1" ! autovideosink >> Setting pipeline to PAUSED ... >> Pipeline is PREROLLING ... >> ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: >> Filter caps do not completely specify the output format >> Additional debug info: >> gstcapsfilter.c(392): gst_capsfilter_prepare_buf (): >> /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: >> Output caps are unfixed: EMPTY >> ERROR: pipeline doesn't want to preroll. >> Setting pipeline to NULL ... >> Freeing pipeline ... >> >> Any clue? >> >> Maurizio gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by Pazzo Da Legare
Could you please help me?
2012/2/21 Pazzo Da Legare <[hidden email]>: > I'm trying to use shmsrc/shmsink to decode a video source once and use > decoded video from many application so I start testing the plugins > using videotestsrc to produce a test stream and many consumer to > receive it > > > Producer: > gst-launch videotestsrc ! shmsink socket-path=/tmp/dudda > shm-size=10000000 wait-for-connection=false preroll-queue-len=5 > > Consumers: > > gst-launch shmsrc socket-path=/tmp/dudda ! > "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, > chroma-site=(string)mpeg2,width=(int)320, height=(int)240, > framerate=(fraction)30/1" ! autovideosink > > But when I start the fifth (sometimes the forth) consumer I ran into > problem: which are the limitation of shmsrc, I wonder the use of a > global lock. > > The message I got is: > > gst-launch shmsrc socket-path=/tmp/blah ! > "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, > chroma-site=(string)mpeg2,width=(int)320, height=(int)240, > framerate=(fraction)30/1" ! autovideosink > Setting pipeline to PAUSED ... > Pipeline is PREROLLING ... > ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: > Filter caps do not completely specify the output format > Additional debug info: > gstcapsfilter.c(392): gst_capsfilter_prepare_buf (): > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: > Output caps are unfixed: EMPTY > ERROR: pipeline doesn't want to preroll. > Setting pipeline to NULL ... > Freeing pipeline ... > > Any clue? > > Maurizio gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
just an idea - maybe you can try a different approach: forget about shared memory and just split the decoded stream using "tee" element, place a queue in each tee branch (which makes it run in separate thread) and you can do whatever you like in each branch.. sincerely, Jan Spurny > ------------ Původní zpráva ------------ > Od: Pazzo Da Legare <[hidden email]> > Předmět: Re: shmsrc/shmsink plugin > Datum: 06.3.2012 10:40:20 > ---------------------------------------- > Could you please help me? > > 2012/2/21 Pazzo Da Legare <[hidden email]>: > > I'm trying to use shmsrc/shmsink to decode a video source once and use > > decoded video from many application so I start testing the plugins > > using videotestsrc to produce a test stream and many consumer to > > receive it > > > > > > Producer: > > gst-launch videotestsrc ! shmsink socket-path=/tmp/dudda > > shm-size=10000000 wait-for-connection=false preroll-queue-len=5 > > > > Consumers: > > > > gst-launch shmsrc socket-path=/tmp/dudda ! > > "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, > > chroma-site=(string)mpeg2,width=(int)320, height=(int)240, > > framerate=(fraction)30/1" ! autovideosink > > > > But when I start the fifth (sometimes the forth) consumer I ran into > > problem: which are the limitation of shmsrc, I wonder the use of a > > global lock. > > > > The message I got is: > > > > gst-launch shmsrc socket-path=/tmp/blah ! > > "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, > > chroma-site=(string)mpeg2,width=(int)320, height=(int)240, > > framerate=(fraction)30/1" ! autovideosink > > Setting pipeline to PAUSED ... > > Pipeline is PREROLLING ... > > ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: > > Filter caps do not completely specify the output format > > Additional debug info: > > gstcapsfilter.c(392): gst_capsfilter_prepare_buf (): > > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: > > Output caps are unfixed: EMPTY > > ERROR: pipeline doesn't want to preroll. > > Setting pipeline to NULL ... > > Freeing pipeline ... > > > > Any clue? > > > > Maurizio > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel > > > gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by Pazzo Da Legare
Hi,
On Tue, 2012-02-21 at 11:39 +0100, Pazzo Da Legare wrote: > But when I start the fifth (sometimes the forth) consumer I ran into > problem: which are the limitation of shmsrc, I wonder the use of a > global lock. There should be no limit on the number of consumers, the only limit is that they all have to keep up with the producer, otherwise they will end up stalling the other ones, as the buffers are not freed before each consumer has consumed it. > gst-launch shmsrc socket-path=/tmp/blah ! > "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, > chroma-site=(string)mpeg2,width=(int)320, height=(int)240, > framerate=(fraction)30/1" ! autovideosink > ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: > Filter caps do not completely specify the output format > Additional debug info: This is very strange.. It does it only for the 4th or 5th try ? Tbh, I haven't really tested with multiple readers much, most users up to now have had a single one. -- Olivier Crête [hidden email] _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (205 bytes) Download Attachment |
In reply to this post by Jan Spurný
Hi Jan,
Thank you for your advice. I would like to use the shared memory because I want to decode once and use decoded frame from different application, dynamically added application. pz 2012/3/6 Jan Spurný <[hidden email]>: > Hi, > > just an idea - maybe you can try a different approach: forget about shared memory and just split the decoded stream using "tee" element, place a queue in each tee branch (which makes it run in separate thread) and you can do whatever you like in each branch.. > > sincerely, > Jan Spurny > >> ------------ Původní zpráva ------------ >> Od: Pazzo Da Legare <[hidden email]> >> Předmět: Re: shmsrc/shmsink plugin >> Datum: 06.3.2012 10:40:20 >> ---------------------------------------- >> Could you please help me? >> >> 2012/2/21 Pazzo Da Legare <[hidden email]>: >> > I'm trying to use shmsrc/shmsink to decode a video source once and use >> > decoded video from many application so I start testing the plugins >> > using videotestsrc to produce a test stream and many consumer to >> > receive it >> > >> > >> > Producer: >> > gst-launch videotestsrc ! shmsink socket-path=/tmp/dudda >> > shm-size=10000000 wait-for-connection=false preroll-queue-len=5 >> > >> > Consumers: >> > >> > gst-launch shmsrc socket-path=/tmp/dudda ! >> > "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, >> > chroma-site=(string)mpeg2,width=(int)320, height=(int)240, >> > framerate=(fraction)30/1" ! autovideosink >> > >> > But when I start the fifth (sometimes the forth) consumer I ran into >> > problem: which are the limitation of shmsrc, I wonder the use of a >> > global lock. >> > >> > The message I got is: >> > >> > gst-launch shmsrc socket-path=/tmp/blah ! >> > "video/x-raw-yuv,format=(fourcc)YUY2, color-matrix=(string)sdtv, >> > chroma-site=(string)mpeg2,width=(int)320, height=(int)240, >> > framerate=(fraction)30/1" ! autovideosink >> > Setting pipeline to PAUSED ... >> > Pipeline is PREROLLING ... >> > ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: >> > Filter caps do not completely specify the output format >> > Additional debug info: >> > gstcapsfilter.c(392): gst_capsfilter_prepare_buf (): >> > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: >> > Output caps are unfixed: EMPTY >> > ERROR: pipeline doesn't want to preroll. >> > Setting pipeline to NULL ... >> > Freeing pipeline ... >> > >> > Any clue? >> > >> > Maurizio >> _______________________________________________ >> gstreamer-devel mailing list >> [hidden email] >> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel >> >> >> > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |