How to connect intervideosink and intervideosrc for IPC pipelines

Michael MacIntosh mmacintosh at linear-systems.com
Mon Sep 11 18:55:39 UTC 2017


Intervideosrc and intervideosink are for internal process communication, 
as in, to pass frames from one pipeline to another that is in a 
different pipeline.  Not an external process.  There is a proprietary 
plugin for it that does what you want:

https://developer.ridgerun.com/wiki/index.php?title=GstInterpipe

However, passing raw frames from one process to another is expensive, 
and can be problematic.  Also you would just be offloading video 
decoding and demultiplexing, which are inherently not very intensive  
(compared to video encoding).  If you just want your pipeline to use 
multiple threads, use the queue element.

https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-queue.html

The real advantage you would get from multiprocess is the ability where 
if one process crashes, the other can continue without interruption 
(hopefully).

If you really need multiprocess, then I would suggest something like RTP 
or RTSP.  And if you are only opening files, RTSP should be relatively 
straightforward to setup, just be sure to reference the examples.

Hope that helps.

Cheers,
Michael.


On 9/11/2017 2:21 AM, Yasushi SHOJI wrote:
> Hi,
>
> On Mon, Sep 11, 2017 at 1:30 PM, avinashgst <aviec07 at gmail.com> wrote:
>> I want to use the gstreamer pipeline for 2 different process.
>> 1st process : it should able to decode video and give data to sink
>> 2nd process : Take the decoded data and give to renderer (native window or
>> framebuffer)
> Do you have to run two different "processes", for each CPU?
> GStreamer is highly threaded framework and your OS scheduler
> might be good enough to select a thread for your available CPUs.
>
>> I came across intervideosink/intervideosrc for this purpose "Virtual video
>> sink/src for internal process communication"
>>
>> In 1st process pipeline seems to be like this:
>> gst-launch-1.0 playbin uri=file:///home/user/testdata/testVideo.mp4
>> video-sink=intervideosink
>>
>> In 2nd process its
>> gst-launch-1.0 intervideosrc ! autovideosink
>>
>> Need a suggestion how i can make a connection between intervideosink --->
>> intervideosrc
> there is a good test code for it.
>
> https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/gst/inter/gstintertest.c
>
> And there is a comment, in gstintervideosink, saying:
>
>> The intervideosink element cannot be used effectively with
>> gst-launch-1.0, as it requires a second pipeline in the application to
>> send video to.  See the gstintertest.c example in the gst-plugins-bad
>> source code for more details.



More information about the gstreamer-devel mailing list