Does `shmsrc` / `shmsink` have a "stable" protocol?

Greg Kennedy kennedy.greg at gmail.com
Sun Sep 17 18:18:26 UTC 2023


I am trying to write an app that inserts frames into an external
gstreamer pipeline, but without marshalling through a socket or
container format.  I hit upon the idea of sharing the framebuffer via
shm IPC, avoiding a copy entirely.

So I considered writing a plugin for this, but it occurred to me that
there is already shmsrc in plugins-bad, and it does exactly what I
would want: getting frames from shared mem and pushing them into a
pipeline, plus supporting other gstreamer features like changing caps
midstream.

Normally of course shmsrc needs a matching shmsink; my question is
somewhat of a hack but I am curious if this could work:

* Modify my app to "look like" an shmsink - exposing framebuffer and
control info just like shmsink would
* Run a pipeline with shmsrc reading from my app's masquerading interface

I am curious how "stable" the interface is between shmsrc / shmsink.
If it changes frequently, this will be fragile - but if it's
well-defined, then I should be able to do it, and maybe it could be
documented (or spun off into a header) so others can do the same.

Thoughts?


More information about the gstreamer-devel mailing list