[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