Difference between revisions of "GstInterpipe - Features and Limitations"

From RidgeRun Developer Connection
Jump to: navigation, search
Line 1: Line 1:
 
{{GstInterpipe Page|  
 
{{GstInterpipe Page|  
 
[[GstInterpipe - GstInterpipe Overview|GstInterpipe Overview]]|
 
[[GstInterpipe - GstInterpipe Overview|GstInterpipe Overview]]|
[[Gstd-1.0 - Quick Start Guide|Quick Start Guide]]|
+
[[GstInterpipe - Building and Installation Guide|Building and Installation Guide]]|
  
 
This page describes the GstInterpipe features and limitations.
 
This page describes the GstInterpipe features and limitations.

Revision as of 19:23, 28 June 2017


GstInterpipe Overview


Home

Building and Installation Guide



This page describes the GstInterpipe features and limitations.

GstInterpipe project characteristics

The GstInterpipe project exposes the following characteristics:

  • Inspired by intervideosrc/intervideosink
  • Uses appsrc and appsink as a base
  • Generic data handling
  • Multiple dynamic interpipesink - interpipesrc connections
  • Replace tee and selector elements allowing dynamic pipeline flow control with Gstd-1.0


Key Features

The principle list of plug-in features include:

  • Buffer transfer
    Interpipesink will transfer automagically the buffers it receives to all the interpipesrcs that are currently listening to it. There is no data copy.
  • Dynamic switching
    Interpipesrc can switch the interpipesink they are listening to at any time just by setting the property to the new value. No need to worry about the pipeline's state, dangerous events like EOS, pad probes, valves, selectors, pad links, etc...
  • Caps negotiation
    Even though interpipes break a big pipeline into smaller ones, the caps negotiation process takes into account all of them. This means that it is guaranteed that the negotiated caps will be supported by the source and all its listeners (or fail due to missing valid intersection).
  • Event forwarding
    Similar to buffers, events may be forwarded from the interpipesinks to the interpipesrcs, and vice versa. The project takes into account downstream and upstream events, as well as in-bounds and out-of-bands events.
  • Timestamp synchronization
    The base times of independent pipelines will likely be different. Given that a buffer will be transferred from one pipe to another, this may represent a problem in situations where synchronization is a must. GstInterpipe takes care of this situation by compensating the buffer's timestamps according to the pipeline's base time, ensuring appropriate synchronization.
  • New node notification
    An interpipesrc may be set to listen to an inexistent node-name. If this is the case, the interpipesrc will be registered to receive a notification when the desired interpipesink is created. At this point, the connection will be made and the buffer flow will start.


Limitations

The current release exposes the following limitations and known bugs:

  • Specialized clocks
    For the time being, pipelines negotiate their clock independently. If a pipeline uses a special clock (i.e.: GstAudioSinkClock), the associated pipes (being independent) may negotiate different clocks, typically GstSystemClock. This could be a big problem if, for example, synchronization between streams is required. It is currently responsibility of the application to set the special clock in all the involved pipes by calling gst_pipeline_set_clock.




GstInterpipe Overview


Home

Building and Installation Guide