GstInterpipe plug-in for interpipeline communication
Submitted by Michael Gruner
Link to original bug (#765820)
Description
Hi
At RidgeRun we have developed this set of elements for inter-pipeline communication over the past few years. We developed them to simplify supporting our customer's custom GStreamer based applications. A key requirement for these applications was dynamic control. Typical use cases included:
- Switching between multiple source feeds.
- Activate/deactivate buffer flow through different branches
- Manage the state of the different branches individually
- Handle 'some' events in individual branches (EOS typically)
Meeting these requirements using existing solutions, would require the use of pad probes, valves, input/output selectors, bins, unlink parts of the pipeline, flush, etc... This required a lot of careful work and was very error prone. We continued with this approach for many iterations, but it was not robust.
Then RidgeRun discovered intervideosink/src, interaudiosink/src and intersubsink/src. Immediately we recognized their potential. However, they did not completely fulfilled our requirements due to the restricted caps support and internal functionality.
Inspired by this approach, we designed a generic buffer transmission plug-in which effectively solved the limitations which still existed. We have just ported this project to the GStreamer 1.0 API version, and want to share them with the community.
Can you evaluate them and provide feedback? We want to take it to the state were it can be included in the GStreamer project.
The project is hosted at:
https://github.com/RidgeRun/gst-interpipe
The documentation is held here:
http://developer.ridgerun.com/wiki/index.php?title=GstInterpipe
Thanks!
Michael Grüner