[gst-devel] Custom Source Element
Casimiro Daniel NPRI
CasimiroD at Npt.NUWC.Navy.Mil
Thu Aug 31 15:56:06 CEST 2006
Hi,
I am developing a custom source element that uses SCTP to stream data over the network. I have based my element on the TCP Client Source from CVS.
Anyway, my element is starting to take shape and I can use it to stream ogg vorbis files with this pipeline:
'sctpclientsrc name=source ! oggdemux name=demuxer ! vorbisdec name=decoder ! audioconvert ! osssink'
However, my source element fails when I try to playback mpeg4 video. Gstreamer is able to play the file when I substitute my source with the filesrc. Here is the pipeline (just video) that I am trying:
gst-launch-0.10 --gst-debug-no-color sctpclientsrc ! avidemux ! queue ! ffdec_mpeg4 ! sdlvideosink
This produces the following (snipped) output:
DEBUG (0x50a910 - 0:00:00.828660000) default(20425) gstelement.c(2300):gst_element_pads_activate:<avidemux0> pads_activate with active 1
LOG (0x50a910 - 0:00:00.828688000) GST_REFCOUNTING(20425) gstobject.c(325):gst_object_ref:<avidemux0> 0x627a40 ref 3->4
LOG (0x50a910 - 0:00:00.828715000) GST_REFCOUNTING(20425) gstobject.c(352):gst_object_unref:<avidemux0> 0x627a40 unref 4->3
LOG (0x50a910 - 0:00:00.828743000) GST_REFCOUNTING(20425) gstobject.c(325):gst_object_ref:<avidemux0> 0x627a40 ref 3->4
LOG (0x50a910 - 0:00:00.828770000) GST_REFCOUNTING(20425) gstobject.c(325):gst_object_ref:<avidemux0:sink> 0x54d170 ref 1->2
LOG (0x50a910 - 0:00:00.828803000) GST_REFCOUNTING(20425) gstobject.c(325):gst_object_ref:<sctp0:src> 0x54d000 ref 1->2
LOG (0x50a910 - 0:00:00.828832000) GST_SCHEDULING(20425) gstpad.c(3417):gst_pad_check_pull_range:<avidemux0:sink> calling checkgetrangefunc gst_base_src_pad_check_get_range of peer pad sctp0:src
LOG (0x50a910 - 0:00:00.828865000) GST_REFCOUNTING(20425) gstobject.c(325):gst_object_ref:<sctp0> 0x618000 ref 3->4
LOG (0x50a910 - 0:00:00.828893000) basesrc(20425) gstbasesrc.c(1362):gst_base_src_pad_check_get_range:<sctp0> gst_push_src_check_get_range() returned 0
LOG (0x50a910 - 0:00:00.828921000) GST_REFCOUNTING(20425) gstobject.c(352):gst_object_unref:<sctp0> 0x618000 unref 4->3
LOG (0x50a910 - 0:00:00.828947000) GST_REFCOUNTING(20425) gstobject.c(352):gst_object_unref:<sctp0:src> 0x54d000 unref 2->1
LOG (0x50a910 - 0:00:00.828974000) GST_REFCOUNTING(20425) gstobject.c(352):gst_object_unref:<avidemux0:sink> 0x54d170 unref 2->1
LOG (0x50a910 - 0:00:00.829001000) GST_REFCOUNTING(20425) gstobject.c(352):gst_object_unref:<avidemux0> 0x627a40 unref 4->3
DEBUG (0x50a910 - 0:00:00.829027000) default(20425) gstelement.c(2325):gst_element_pads_activate:<avidemux0> pads_activate failed
INFO (0x50a910 - 0:00:00.829053000) GST_STATES(20425) gstelement.c(2184):gst_element_change_state:<avidemux0> have FAILURE change_state return
INFO (0x50a910 - 0:00:00.829083000) GST_STATES(20425) gstelement.c(1835):gst_element_abort_state:<avidemux0> aborting state from READY to PAUSED
LOG (0x50a910 - 0:00:00.829110000) GST_STATES(20425) gstelement.c(2223):gst_element_change_state:<avidemux0> exit state change 0
DEBUG (0x50a910 - 0:00:00.829136000) GST_STATES(20425) gstelement.c(2143):gst_element_set_state_func:<avidemux0> returned 0
INFO (0x50a910 - 0:00:00.829162000) GST_STATES(20425) gstbin.c(1845):gst_bin_change_state_func:<pipeline0> child 'avidemux0' failed to go to state 3(PAUSED)
LOG (0x50a910 - 0:00:00.829225000) GST_REFCOUNTING(20425) gstobject.c(352):gst_object_unref:<avidemux0> 0x627a40 unref 3->2
DEBUG (0x50a910 - 0:00:00.829253000) bin(20425) gstbin.c(1668):gst_bin_sort_iterator_free:<pipeline0> free
LOG (0x50a910 - 0:00:00.829280000) GST_REFCOUNTING(20425) gstobject.c(352):gst_object_unref:<sctp0> 0x618000 unref 3->2
LOG (0x50a910 - 0:00:00.829310000) GST_REFCOUNTING(20425) gstobject.c(352):gst_object_unref:<pipeline0> 0x6f20c0 unref 3->2
DEBUG (0x50a910 - 0:00:00.829337000) GST_STATES(20425) gstbin.c(1892):gst_bin_change_state_func:<pipeline0> done changing bin's state from READY to PAUSED, now in READY, ret 0
DEBUG (0x50a910 - 0:00:00.829370000) pipeline(20425) gstpipeline.c(610):gst_pipeline_set_new_stream_time:<pipeline0> set new stream_time to 0:00:00.000000000
INFO (0x50a910 - 0:00:00.829399000) GST_STATES(20425) gstelement.c(2184):gst_element_change_state:<pipeline0> have FAILURE change_state return
INFO (0x50a910 - 0:00:00.829426000) GST_STATES(20425) gstelement.c(1835):gst_element_abort_state:<pipeline0> aborting state from READY to PAUSED
LOG (0x50a910 - 0:00:00.829453000) GST_STATES(20425) gstelement.c(2223):gst_element_change_state:<pipeline0> exit state change 0
LOG (0x50a910 - 0:00:00.829478000) GST_STATES(20425) gstelement.c(2223):gst_element_change_state:<pipeline0> exit state change 0
DEBUG (0x50a910 - 0:00:00.829504000) GST_STATES(20425) gstelement.c(2143):gst_element_set_state_func:<pipeline0> returned 0
For some reason, the pads activate fails. I am not sure of the reason. Can anyone shed any insight?
Currently, my element connects to a default server and initiates a transfer. Using ethereal/wireshark, I see that the element never initiates the transfer when I try the video pipeline. I have attached the source code for my source element to this email. I warn you that it is not even close to ready yet.
Thanks,
Dan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gstsctp.h
Type: application/octet-stream
Size: 3588 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20060831/6655dd55/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gstsctp.c
Type: application/octet-stream
Size: 19197 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20060831/6655dd55/attachment-0001.obj>
More information about the gstreamer-devel
mailing list