Cross process gestreamer pipeline using EGLStreams for inter process communcation

I have a Nvidia Xavier AGX that is connected to a 4K video camera streaming uncompressed at 30FPS.

On the AGX, I have several different applications (Linux processes) that need to consume this video.
Because of the very high bandwidth of video-data, I would like to share the video between the applications in a copy-free way. EGLStreams seem perfect for this purpose.

Application A is connected directly to the camera. It is responsible for extracting the video data and publishing it to an EGLStream.

Application B,C and D are not connected to the camera, but would each like to consume the EGLStream for processing.

It would be ideal if all the applications could use GStreamer as the framework to do this. That would require the following architectures:

Application A (simplified):
gst-launch-1.0 nvarguscamerasrc ! ... ! nveglstreamsink

Application B,C,D (simplified):
gst-launch-1.0 nveglstreamsrc ! ... ! appsink
  1. Is this possible to implement with the currently available GStreamer building blocks supplied by NVidia?
  2. I am not able to find any way to create an EGLStream Producer using GStreamer?

Any pointers or insight is greatly appreciated!

Hi,
Do you use Jetapck 4 or Jetpack 5? For Jetpack 4, we would suggest use NvBuffer APIs fo r sharing NvBuffer between processes. Please take a look at
How to share the buffer in process context? - #11 by DaneLLL

Thanks for the advice. I am using jetpack 5.