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:
For better advice, you may better tell your case. Please provide details from your camera source with:
# Here assuming /dev/video0 for your 4K camera:
v4l2-ctl -d0 --list-formats-ext
You may also say if you need full video quality or if some compression is affordable.
For using shmsrc/shmink, it may require do-timestamp=1 for shmsink and you would have to manage deletion of the socket depending on if customer pipeline closed later than producer.
Depending on your filesystem, you may also try fifos such as here