[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