GstInterpipe: Difference between revisions

From RidgeRun Developer Wiki
No edit summary
mNo edit summary
 
(98 intermediate revisions by 5 users not shown)
Line 1: Line 1:
= Introduction =
{{GstInterpipe/Head| | next=GstInterpipe Overview|metakeywords=}}


GstInterpipe is a Gstreamer plug-in that allows communication between two independent pipelines. The plug-in consists of two elements:
* interpipesink
* interpipesrc


Generally speaking, the idea is that given a source pipeline:
The following table of contents offers all you need to know about GstInterpipe project.
<pre style="background:#d6e4f1">
v4l2src ! interpipesink name=video_src
</pre>


Various sink pipelines may listen to it by:
<br>
<pre style="background:#d6e4f1">
<br>
interpipesrc name=live_preview listen-to=video_src ! xvimagesink
<table>
interpipesrc name=snapshot listen-to-video_src num-buffers=1 ! jpegenc ! filesink location=snapshot.jpeg
<tr>
</pre>  
<td><div class="clear; float:right">__TOC__</div></td>
<td>
{{Sponsor Button}}
<td>
</tr>
</table>


The state of each pipeline is independent, each one can manage events by their own and 
==Quick Overview==
GstInterpipe is a RidgeRun open source [https://www.ridgerun.com/gstreamer GStreamer] plug-in that enables pipeline buffers and events to flow between two or more independent pipelines. It consists of two elements: interpipesink and interpipesrc. The interpipesrc connects with an interpipesink, from which it receives buffers and events.


GstInterpipe is intended to reduce a big complex pipeline system into smaller and simpler independent pipelines. You can view and handle the independent pipelines as different blocks that can be controlled independently.  Each pipeline change state, have element properties modified, and can connect or disconnect with other pipelines at runtime. GstInterpipe allows you to have multiple source and sink pipelines in an application.  The connections between source pipelines and sink pipelines can dynamically change at runtime. Is like if you have a set of different pipes that you can plug and unplug between them at runtime, so the system changes its behaviour according to the pipe interconnection configuration.


==Promo/Demo Video==


The concept behind the Interpipes Project is to simplify the construction of GStreamer applications, which often has the complexity of requiring dynamic pipelines. It transforms the construction process from low level pad probe manipulation to the higher level setting an element's parameter value.  Application developers don't get mired down in stalled pipelines because one branch of a complex pipeline changed state.
'''GStreamer Conference-2017 talk from RidgeRun''' : '''[[GStreamer_Daemon | GStreamer Daemon]] - building a media server in under 30 minutes'''


For example, take a look in a complex pipeline like the one in the figure 1:
*[https://vimeo.com/240547523 vimeo version] (may have better lipsync)
*embedvideo (below)
<center>
<embedvideo service="vimeo">https://vimeo.com/240547523</embedvideo>
</center>


[[File:Complex_pipeline.png|thumb|center|800px|Figure 1: Complex Pipeline]]
== Getting Started ==
Start navigating this wiki by going to the [[GstInterpipe - GstInterpipe Overview|GstInterpipe Overview]] page in the table of contents.


The complex pipeline of figure 1 can be constructed into smaller, independent pipelines using interpipe elements as it is illustrated in the figure 2:
{{ContactUs}}


[[File:Interpipe_pipeline.png|thumb|center|800px|Figure 2: Pipeline using Interpipes]]
{{GstInterpipe/Foot | | next= GstInterpipe Overview}}
 
This way the stream flow in a complex pipeline is reduced to simply set the correct listeners in the interpipe elements taking away the complexity of re-configuring pads or some other complex and error-prone logic.
 
 
 
== GStreamer Plug-In ==
 
The Interpipe plug-in
 
= Getting the Software =
 
GstInterpipe is an open source project and can be downloaded from GitHub. The project is hosted at:
TODO
 
As with every open source project, there's an open invitation to provide feedback to the maintainers as bug reports, feature requests and even source code collaborations. The following table summarizes the recommended methods to collaborate with RidgeRun:
 
{| class="wikitable"
|-
! Collaboration !! Method
|-
| Bug report || GitHub's issue tracker
|-
| Feature request || GitHub's issue tracker
|-
| Patch Submission || Pull request
|}
 
= Installation Guide=
== Dependencies==
=== GStreamer 1.0.0===
== Building the project ==
== Installing the plugin ==
 
=User Guide=
 
== Features ==
 
=== Buffer Forwarding ===
 
=== Dynamic Switching ===
 
=== Caps Negotiation ===
 
=== Event Forwarding ===
 
=== Timestamp Synchronization ===
 
== Properties ==
=== GstInterPipeSink ===
=== GstInterPipeSrc ===
 
==
 
=Releases=

Latest revision as of 19:29, 25 January 2024




  Index Next: GstInterpipe Overview





The following table of contents offers all you need to know about GstInterpipe project.



Quick Overview

GstInterpipe is a RidgeRun open source GStreamer plug-in that enables pipeline buffers and events to flow between two or more independent pipelines. It consists of two elements: interpipesink and interpipesrc. The interpipesrc connects with an interpipesink, from which it receives buffers and events.

GstInterpipe is intended to reduce a big complex pipeline system into smaller and simpler independent pipelines. You can view and handle the independent pipelines as different blocks that can be controlled independently. Each pipeline change state, have element properties modified, and can connect or disconnect with other pipelines at runtime. GstInterpipe allows you to have multiple source and sink pipelines in an application. The connections between source pipelines and sink pipelines can dynamically change at runtime. Is like if you have a set of different pipes that you can plug and unplug between them at runtime, so the system changes its behaviour according to the pipe interconnection configuration.

Promo/Demo Video

GStreamer Conference-2017 talk from RidgeRun : GStreamer Daemon - building a media server in under 30 minutes

Getting Started

Start navigating this wiki by going to the GstInterpipe Overview page in the table of contents.


RidgeRun Resources

Quick Start Client Engagement Process RidgeRun Blog Homepage
Technical and Sales Support RidgeRun Online Store RidgeRun Videos Contact Us
RidgeRun.ai: Artificial Intelligence | Generative AI | Machine Learning

Contact Us

Visit our Main Website for the RidgeRun Products and Online Store. RidgeRun Engineering information is available at RidgeRun Engineering Services, RidgeRun Professional Services, RidgeRun Subscription Model and Client Engagement Process wiki pages. Please email to support@ridgerun.com for technical questions and contactus@ridgerun.com for other queries. Contact details for sponsoring the RidgeRun GStreamer projects are available in Sponsor Projects page.


  Index Next: GstInterpipe Overview