Designing dynamic decoupled pipelines

I want to design a system as shown in below image, where i have various video analytics running as separate pipelines and video sources as separate pipelines. Video sources can be dynamically attached or detached to a video analytics pipeline, one video source can be attached to multiple analytic pipelines at a given time.

What i have tried:

I added video source and analytic bin (represented by streammux and fakesink here) in a single bin and it works fine.

Now when i separate them in different bins and link them it dosen’t work:

bin linked using link_element_to_streammux_sink_pad(analyticBin.streammux, src_bin_0, 0);

  1. i get a warning : GStreamer-WARNING **: 17:30:26.116: Trying to link elements src_bin_0 and streammux that don’t share a common ancestor: src_bin_0 hasn’t been added to a bin or pipeline, but streammux is in analytic_pipeline1

  2. i don’t see anything on the eglsink in src_bin_0, and there is no flow of data i saw it by attaching probes to sink pads of tee, eglsink.

I am new to gstreamer and i want to know whether it is possible to do something like this, is it ok to have such a design and what kind of issues might occur in such design, what are the things that i should know or keep in mind while creating such pipelines ?
How should i proceed designing such a application?
Any Pointers to any resources or open source apps which do such dynamic decoupled pipelines are also welcome.

Found gst-interpipe from RidgeRun which seems like can help me achieve what i am trying.

Hi pawany16

You can use gst-interpipe along with the GStreamer Daemon. This combination really speeds up the development of applications that involve multiples pipelines and dynamic changes to each other.



GStreamer Daemon Documentation

GStreamer Interpipe Documentation

@aphillipso thanks to you guys for releasing gst-interpipe to the community.

Just to add to what @aphillipso said, we have an example application that is pretty close to what you need: