How to connect intervideosink and intervideosrc for IPC pipelines

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

How to connect intervideosink and intervideosrc for IPC pipelines

avinashgst
Hi All,

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)

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

Thanks,
Avinash





--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to connect intervideosink and intervideosrc for IPC pipelines

Yasushi SHOJI-2
Hi,

On Mon, Sep 11, 2017 at 1:30 PM, avinashgst <[hidden email]> 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.
--
              yashi
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to connect intervideosink and intervideosrc for IPC pipelines

Michael MacIntosh
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 <[hidden email]> 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.

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to connect intervideosink and intervideosrc for IPC pipelines

Tim Müller
On Mon, 2017-09-11 at 11:55 -0700, Michael MacIntosh wrote:

Hi,

There also shmsink and shmsrc to pass data between processes (or the
new ipcpipeline plugin that just landed in git master).

Cheers
-Tim

--
Tim Müller, Centricular Ltd - http://www.centricular.com

Join us at the GStreamer Conference!
21-22 October 2017 in Prague, Czech Republic
http://gstreamer.freedesktop.org/conference/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to connect intervideosink and intervideosrc for IPC pipelines

avinashgst
In reply to this post by Michael MacIntosh
Thanks Michael,
I will check your suggestions



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to connect intervideosink and intervideosrc for IPC pipelines

avinashgst
In reply to this post by Tim Müller
Thanks Tim,

>> There also shmsink and shmsrc to pass data between processes
i will check shmsink and shmsrc



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel