After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 765820 - GstInterpipe plug-in for interpipeline communication
GstInterpipe plug-in for interpipeline communication
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
unspecified
Other All
: Normal enhancement
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-04-29 19:30 UTC by Michael Gruner
Modified: 2018-11-03 13:50 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Add support for GstInterpipe (226.15 KB, patch)
2016-05-03 20:11 UTC, Michael Gruner
none Details | Review

Description Michael Gruner 2016-04-29 19:30:49 UTC
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
Comment 1 Sebastian Dröge (slomo) 2016-04-30 06:36:05 UTC
Can you provide a patch against gst-plugins-bad? This sounds very useful, but there are also a few other patches in Bugzilla going into the same direction. Bug #743510 and bug #752214 at least
Comment 2 Michael Gruner 2016-05-03 20:11:06 UTC
Created attachment 327250 [details] [review]
Add support for GstInterpipe

This patch integrates the GstInterpipe plug-in to the gst-plugins-bad package. The latest Git available version (1.9.0.1) was used. The patch includes:
- GstInterpipe plug-in
- Unit tests for tests/check
- GtkDoc integration
Comment 3 Michael Gruner 2016-05-03 23:16:25 UTC
(In reply to Sebastian Dröge (slomo) from comment #1)
> Can you provide a patch against gst-plugins-bad? This sounds very useful,
> but there are also a few other patches in Bugzilla going into the same
> direction. Bug #743510 and bug #752214 at least

Thanks Sebastian, I attached the patch to the thread. 

I also took a look at the other patches, they do seem to seek for similar functionality. I never really liked the surface approach though, specially for the framerate decoupling part. Besides we still need the inter-pipeline caps negotiation, event forwarding (up/down stream and in/out of bounds), timestamp compensation, etc... 

Let me know your thoughts
Comment 4 Sebastian Dröge (slomo) 2016-05-05 06:51:54 UTC
The "surface" part and the decoupling of framerates is actually what makes the inter elements useful in quite a few scenarios :) That said, it's not always useful/wanted and also a problem when trying to handle non-raw streams.
Comment 5 Michael Gruner 2016-05-05 08:12:55 UTC
(In reply to Sebastian Dröge (slomo) from comment #4)
> The "surface" part and the decoupling of framerates is actually what makes
> the inter elements useful in quite a few scenarios :) That said, it's not
> always useful/wanted and also a problem when trying to handle non-raw
> streams.

Thanks Sebastian. 

How can we help you pushing this into the project?
Comment 6 Sebastian Dröge (slomo) 2016-05-05 08:48:21 UTC
It needs someone spending the time on reviewing it all. As the patch is quite big, this will probably take a while. Maybe I or someone else feels like reviewing it during the GStreamer hackfest in 2 weeks, or otherwise has time for doing that. I'm currently busy with other things and don't have time to review such a big patch.
Comment 7 Olivier Crête 2016-05-18 19:18:29 UTC
Did you have a look at #752214, how do you feel you approach differs from ours? I haven't had time to look at your code yet in details,but when designing our code, I think I had a quick look at yours and somehow it didn't fit.
Comment 8 GStreamer system administrator 2018-11-03 13:50:13 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/382.