Two pipelines - link them - merge them - easy handling...
Martin Vachovski
Martin.Vachovski at skytek.com
Thu Apr 12 16:02:52 UTC 2018
Hi Martin,
Sounds like you can use something like
intervideosrc? / intervideosink
interaudiosrc / interaudiosink
elements, which allow you to communicate audio or video data between different pipelines
which run in the same process.
Or in a more general setting, you can try
appsink / appsrc
elements.
These allow you to extract data (in terms of GstBuffer* objects) from a running pipeline into your app's memory
and then to inject it into another running pipeline
Hope one of these helps you
Martin
________________________________
From: gstreamer-devel <gstreamer-devel-bounces at lists.freedesktop.org> on behalf of Maurer, Martin <martin2.maurer at zeiss.com>
Sent: Thursday, April 12, 2018 4:58 PM
To: Discussion of the development of and with GStreamer
Subject: AW: Two pipelines - link them - merge them - easy handling...
Additional notice:
Pipe1 alone is a fully functional pipeline, contain a tee.
Pipe2 is then attached to a new pad of the tee.
So not possible to just concatenate the both strings, convert it together again via gst_parse_launch
and work with the newly created pipeline. Sorry.
Von: gstreamer-devel [mailto:gstreamer-devel-bounces at lists.freedesktop.org] Im Auftrag von Maurer, Martin
Gesendet: Donnerstag, 12. April 2018 17:40
An: gstreamer-devel at lists.freedesktop.org
Betreff: Two pipelines - link them - merge them - easy handling...
Hello,
I have two (sub-) pipelines, which I create via two gst_parse_launch calls.
pipe1 = gst_parse_launch("...");
pipe2 = gst_parse_launch("...");
I have different pipe2 pipelines, which I create for different use cases.
Now I want to dynamically link them together, so I get a big pipeline out of the two smaller ones.
Just link the end of the first pipeline with the beginning of the second pipeline.
I assume this is only possible if all my elements are inside one pipeline? Not distributed over two pipelines. Is this correct?
So is there perhaps some function to merge pipe2 into pipe1 (and all link info also taken over)?
Some enumeration over all elements of pipe2 and calling add/link for pipe1?
(ok, problem could be, if and how I can remove the added part, how to identify what was pipe2 inside pipe1,
but this is a secondary problem, perhaps I can live without it)
Or some function call similar to gst_parse_launch, where I can insert an already existing pipeline?
A solution, which could perhaps be possible, to use appsink at end of pipe 1 and appsrc in the beginning of pipe2.
But then I must forward the buffers (and more) by hand...
Or gst-interpipe? https://github.com/RidgeRun/gst-interpipe
But in my opinion these last both are (too) heavy things for just the problem of basic (easy?) pipeline/element handling.
I know it is possible to use gst_element_factory_make, gst_bin_add_many, gst_element_link_many, ...
but this is not as comfortable and easy to use like the pipeline strings in gst_parse_launch.
(reading what element was added, which were linked in which order,
and modifying it: e.g. adding/removing a new element doesn't affect multiple places)
Best regards,
Marie
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20180412/7154495a/attachment.html>
More information about the gstreamer-devel
mailing list