GstInterpipe: Difference between revisions

m
Line 41: Line 41:
* Replace tee and selector elements allowing dynamic pipeline flow control with GStreamer Daemon
* Replace tee and selector elements allowing dynamic pipeline flow control with GStreamer Daemon


=== Features ===
The principal features the plug-in exposes are the following. These ones are explained with further detail later.
The principal features the plug-in exposes are the following. These ones are explained with further detail later.


;Buffer transfer
* '''Buffer transfer''' <br>Interpipesink will transfer automagically the buffers it receives to all the interpipesrcs that are currently listening to it.
:Interpipesink will transfer automagically the buffers it receives to all the interpipesrcs that are currently listening to it.


;Dynamic switching
*'''Dynamic switching''' <br> 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...
:Interpipesrcs 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
*'''Caps negotiation''' <br> 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).
: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
*'''Event forwarding''' <br> Similar to buffers, events may be forwarded from the interpipesinks to the interpipesrcs, and viceversa. The project takes into account downstream and upstream events, as well as in-bounds and out-of-bands events.
:Similar to buffers, events may be forwarded from the interpipesinks to the interpipesrcs, and viceversa. The project takes into account downstream and upstream events, as well as in-bounds and out-of-bands events.


;Timestamp synchronization
*'''Timestamp synchronization''' <br> 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.
: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.


=== Limitations ===
=== Limitations ===