[gst-devel] Seeking

Wesley J. Miller WMiller at sdr.com
Tue Apr 6 14:03:05 CEST 2010


Many, many thanks, Ron.

Comments inserted below.  

-----Original Message-----
From: Ron McOuat [mailto:rmcouat at smartt.com] 

>>    // souphttpsrc ! multipartdemux ! jpegdec ! ffmpegcolorspace ! autovideosink
>>    

> What happens when you put the pipeline above into the gst-launch command 
> with -v and -m as options
> to provide extra status messaging? 

==============================================================================
I did some column alignment to me read it.....
Can these same -v and -m flags be set from a compiled program?  Requires callbacks?

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Got message #8 from element  "autovideosink0"   (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #9 from element  "ffmpegcsp0"       (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #10 from element "jpegdec0"         (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #11 from element "multipartdemux0"  (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #12 from element "souphttpsrc0"     (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #13 from element "pipeline0"        (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
Got message #16 from element "ffmpegcsp0"       (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #17 from element "jpegdec0"         (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #18 from element "multipartdemux0"  (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #21 from pad     "souphttpsrc0:src" (stream-status): GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstSoupHTTPSrc\)\ souphttpsrc0", object=(GstTask)"\(GstTask\)\ task0";
Got message #22 from element "souphttpsrc0"     (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #23 from element "pipeline0"        (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Setting pipeline to PLAYING ...
Got message #24 from element "pipeline0"        (new-clock): GstMessageNewClock, clock=(GstClock)"\(GstSystemClock\)\ GstSystemClock";
New clock: GstSystemClock
Got message #25 from element "ffmpegcsp0"       (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #26 from element "jpegdec0"         (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #27 from element "multipartdemux0"  (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #28 from element "souphttpsrc0"     (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #29 from pad     "souphttpsrc0:src" (stream-status): GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstSoupHTTPSrc\)\ souphttpsrc0", object=(GstTask)"\(GstTask\)\ task0";

/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = image/jpeg
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)704, height=(int)480, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = video/x-raw-yuv, width=(int)704, height=(int)480, framerate=(fraction)0/1, format=(fourcc)YV12
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)704, height=(int)480, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstDshowVideoSink:autovideosink0-actual-sink-dshowvideo.GstPad:sink: caps = video/x-raw-yuv, width=(int)704, height=(int)480, framerate=(fraction)0/1, format=(fourcc)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink: caps = video/x-raw-yuv, width=(int)704, height=(int)480, framerate=(fraction)0/1, format=(fourcc)YV12
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw-yuv, width=(int)704, height=(int)480, framerate=(fraction)0/1, format=(fourcc)YV12

Got message #34 from element "autovideosink0-actual-sink-dshowvideo" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #37 from element "autovideosink0"                        (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #38 from element "pipeline0"                             (async-done): no message details
Got message #40 from element "autovideosink0-actual-sink-dshowvideo" (element): prepare-xwindow-id;
Got message #41 from element "autovideosink0-actual-sink-dshowvideo" (element): have-xwindow-id, xwindow-id=(gulong)264922;
Got message #42 from element "autovideosink0-actual-sink-dshowvideo" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #43 from element "autovideosink0"                        (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #44 from element "pipeline0"                             (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;

==============================================================================




> Your pipeline looks right for display of MJPEG provided the device at
> souphttpsrc location="URL of decice in MJPEG mode" is cooperating.

As you can see, the camera is working fine.

> The state change is asynchronous and the return status is not checked to 
> be sure the call was accepted.

Next things to learn.

>>    g_main_loop_run( loop );
>>

    
> This does not return until g_main_loop_quit is called from another 
> thread such as in the Error / EOS handler you should have
> set up for the pipeline as a message callback.
> There should also be a callback to set up the association between the 
> video sink and the window you need to provide as part
> of the program GUI for the video to be rendered in.

More to learn about.

> I can see that you are using C but this documentation for Python will 
> give you a good idea of how a program
> needs to be set up to link a pipeline to a video playback window and to 
> handle the end of stream. It adds another layer
> with the GTK GUI library but looking at the overall structure should 
> help you. I don't know what system you are on
> so unless you use a somewhat system agnostic GUI library how you 
> actually get the window ID will differ
> significantly between system types.

> Here is the Python tutorial URL:
> http://pygstdocs.berlios.de/pygst-tutorial/index.html
> with several example programs.

Thanks!





More information about the gstreamer-devel mailing list