Dynamic pipeline with tee

Fabien FELIO fabien.felio at softathome.com
Fri Jul 24 05:02:49 PDT 2015


Hi,

I am trying to send a live channel on different sockets and I am using tee to duplicate data but i have some issues :

1. When I tried to create tee pads dynamicaly, I could create the first part of my pipeline (and it worked) : 
	dvbsrc -> tee -> queue -> multisocketsink (OK)

When i wanted to add a second pad to tee, it created the pipeline well (all elements are in playing state etc) :
			-> queue -> multisocketsink (OK)
		      /
	dvbsrc -> tee 
		      \
			-> queue -> multisocketsink (Error)

but the second multisocketsink send back the error : "GLib-GIO-CRITICAL **: g_socket_send_with_blocking: assertion 'G_IS_SOCKET (socket) && buffer != NULL' failed"

2. The second try was to create static pads. I created two pads I linked to a queue and a fakesink :
			-> queue -> fakesink
		      /
	dvbsrc -> tee 
		      \
			-> queue -> fakesink

To replace a fakesink with a multisocketsink, i added a probe (GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM) to the first tee source pad, unlinked queue and fakesink, linked queue and multisocketsink, removed the probe. As the first try, there was no problem for the first change.
			-> queue -> multisocketsink (OK)
		      /
	dvbsrc -> tee 
		      \
			-> queue -> fakesink

But when i tried to replace the second one (same way as the first one), the multisocketsink element send me back the same error : "GLib-GIO-CRITICAL **: g_socket_send_with_blocking: assertion 'G_IS_SOCKET (socket) && buffer != NULL' failed"

What does the multiscoketsink's error mean ? And why have I this error everytime I change the pipeline ? 


More information about the gstreamer-devel mailing list