gdppay / gdpdepay usage

Vasilis Liaskovitis vliaskov at gmail.com
Thu May 29 06:45:57 PDT 2014


Hi,

I have an issue using gdppay/gdpdepay and shmsink/shmsrc. The writer side uses
uridecodebin and then gdppay and shmsink.  On the reader side "could not create
 caps from GDP packet":

writer:
GST_DEBUG=3 gst-launch-1.0 uridecodebin uri=file:////opt/Videos/test.avi  !
gdppay ! shmsink socket-path=/tmp/test  shm-size=100000000
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
 
reader:
GST_DEBUG=3 gst-launch-1.0  shmsrc socket-path=/tmp/test20 is-live=1 ! gdpdepay ! xvimagesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
0:00:00.020068273  4755       0x919e80 FIXME                default
gstutils.c:3648:gst_pad_create_stream_id_printf_valist:<shmsrc0:src> Creating
random stream-id, consider implementing a deterministic way of creating a stream-id
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.020511645  4755       0x919e80 WARN               structure
gststructure.c:2289:priv_gst_structure_parse_fields: Failed to find delimiter, r=
0:00:00.020539229  4755       0x919e80 WARN                gdpdepay
gstgdpdepay.c:436:gst_gdp_depay_chain:<gdpdepay0> error: could not create caps from GDP packet
0:00:00.020580462  4755       0x919e80 WARN                 basesrc
gstbasesrc.c:2865:gst_base_src_loop:<shmsrc0> error: Internal data flow error.
0:00:00.020587848  4755       0x919e80 WARN                 basesrc
gstbasesrc.c:2865:gst_base_src_loop:<shmsrc0> error: streaming task paused, reason error (-5)
ERROR: from element /GstPipeline:pipeline0/GstGDPDepay:gdpdepay0: Could not decode stream.
Additional debug info:
gstgdpdepay.c(436): gst_gdp_depay_chain ():
/GstPipeline:pipeline0/GstGDPDepay:gdpdepay0:
could not create caps from GDP packet
Execution ended after 0:00:00.000298702
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...


I also inserted a videoconvert/capsfilter on writer side before gdppay, but in
this case I get a GST_FLOW_NOT_NEGOTIATED error.

writer:
GST_DEBUG=3 gst-launch-1.0 uridecodebin uri=file:////opt/Videos/test.avi !
videoconvert ! video/x-raw, format="RGBA" ! gdppay ! shmsink
socket-path=/tmp/test  shm-size=100000000
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock

reader: 
GST_DEBUG=3 gst-launch-1.0 shmsrc socket-path=/tmp/test is-live=1 ! gdpdepay ! xvimagesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
0:00:00.018524155  4795      0x12d7e80 FIXME                default
gstutils.c:3648:gst_pad_create_stream_id_printf_valist:<shmsrc0:src> Creating
random stream-id, consider implementing a deterministic way of creating a
stream-id
Setting pipeline to PLAYING ...
New clock: GstSystemClock

(gst-launch-1.0:4795): GStreamer-WARNING **:
gstpad.c:4555:store_sticky_event:<gdpdepay0:src> Sticky event misordering, got
'segment' before 'caps'

(gst-launch-1.0:4795): GStreamer-WARNING **: gst_structure_from_string did not consume whole string, but caller
 did not provide end pointer
("GstEventStreamStart,
stream-id=(string)a79153c13a7e78a6cf674639f28e81f8db0fa20c4ac7caacde49ea7a68f47502/001,
flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;\u0001")

(gst-launch-1.0:4795): GStreamer-WARNING **:
gstpad.c:4555:store_sticky_event:<gdpdepay0:src> Sticky event misordering, got 'caps' before 'stream-start'

(gst-launch-1.0:4795): GStreamer-WARNING **:
gstpad.c:4555:store_sticky_event:<xvimagesink0:sink> Sticky event misordering, got 'segment' before 'stream-start'
0:00:00.022704341  4795      0x12d7e80 WARN                gdpdepay
gstgdpdepay.c:430:gst_gdp_depay_chain:<gdpdepay0> pushing depayloaded buffer returned -4
0:00:00.022738811  4795      0x12d7e80 WARN                 basesrc
gstbasesrc.c:2865:gst_base_src_loop:<shmsrc0> error: Internal data flow error.
0:00:00.022745888  4795      0x12d7e80 WARN                 basesrc
gstbasesrc.c:2865:gst_base_src_loop:<shmsrc0> error: streaming task paused, reason not-negotiated (-4)
ERROR: from element /GstPipeline:pipeline0/GstShmSrc:shmsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2865): gst_base_src_loop ():
/GstPipeline:pipeline0/GstShmSrc:shmsrc0:
streaming task paused, reason not-negotiated (-4)
Execution ended after 0:00:00.004142949
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...


How should caps be correctly inserted in gdppay?

On the other hand if the writer pipeline starts with videotessrc, reader seems to
display the video fine, although there is "no caps in config" on writer side, and
there's  a critical message on the reader side about an invalid GstStructure:

writer:
GST_DEBUG=3 gst-launch-1.0 videotestsrc ! gdppay ! shmsink
socket-path=/tmp/test
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.020837375  7582      0x2009d40 FIXME                default
gstutils.c:3648:gst_pad_create_stream_id_printf_valist:<videotestsrc0:src>
Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.021066001  7582      0x2009d40 WARN                 default
gstvideopool.c:171:video_buffer_pool_set_config:<videobufferpool0> no caps in config
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
 
reader:
GST_DEBUG=3 gst-launch-1.0  shmsrc socket-path=/tmp/test17 is-live=1 ! gdpdepay
! xvimagesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
0:00:00.023007447  4716      0x1cb1e80 FIXME                default
gstutils.c:3648:gst_pad_create_stream_id_printf_valist:<shmsrc0:src> Creating
random stream-id, consider implementing a deterministic way of creating a stream-id
Setting pipeline to PLAYING ...
New clock: GstSystemClock

(gst-launch-1.0:4716): GStreamer-WARNING **:
gstpad.c:4555:store_sticky_event:<gdpdepay0:src> Sticky event misordering, got 'segment' before 'caps'

(gst-launch-1.0:4716): GStreamer-WARNING **:
gstpad.c:4555:store_sticky_event:<xvimagesink0:sink> Sticky event misordering, got 'segment' before 'caps'
0:00:00.023990018  4716      0x1cb1e80 WARN               structure
gststructure.c:2131:gst_structure_parse_field: failed to parse value
group-id=(uin

0:00:00.024001812  4716      0x1cb1e80 WARN               structure
gststructure.c:2299:priv_gst_structure_parse_fields: Failed to parse field, r=group-id=(uin

(gst-launch-1.0:4716): GStreamer-WARNING **:
gstpad.c:4555:store_sticky_event:<gdpdepay0:src> Sticky event misordering, got 'caps' before 'stream-start'

(gst-launch-1.0:4716): GStreamer-CRITICAL **: gst_structure_id_get: assertion 'GST_IS_STRUCTURE (structure)' failed
0:00:00.024037886  4716      0x1cb1e80 FIXME               basesink
gstbasesink.c:3022:gst_base_sink_default_event:<xvimagesink0> stream-start event
without group-id. Consider implementing group-id handling in the upstream elements

(gst-launch-1.0:4716): GStreamer-WARNING **:
gstpad.c:4555:store_sticky_event:<xvimagesink0:sink> Sticky event misordering, got 'caps' before 'stream-start'




I am using gstreamer1.0-0 (1.2.3-1 package on ubuntu 14.04), but I can also try master.


thanks,

- Vasilis


More information about the gstreamer-devel mailing list