Cross Process YUV buffers

I have a problem that requires two process that deal with YUV data.
One process will capture the data via CSI, perform some analysis, processing and must be very stable.
This YUV data will then potentially be encoded and further in a second process which may be more prone to error and has been known to crash at times. Also, the handoff between processes needs to be low overhead (zero memcopy).

I’ve looked in to the various examples of EGL streams producer/consumer it seems that YUV is not supported. Is there an example that configures EGL to use EGL_YUV_BUFFER_EXT? Or is there another way outside of EGL that I can transfer NvBuff between process?


Here is a post about EGLStream producer/consumer:
Problems getting EGL Stream transferred to another process on same machine - #7 by DaneLLL

But it is not YUV buffers. On Jetpack 4.6, there is functions defined in nvbuf_utils.h for sharing NvBuffers between processes, but the sample is not ready yet.
Here is a relevant post:
How to share the buffer in process context? - #8 by DaneLLL

Thanks. Do you have the name of any of these functions? I tried creating an NvBuffer and sending it’s fd through a socket (same way it’s done for sharing the EGL stream fd), but that didn’t seem to work.

Edit: oh, are you referring to the various NvBuffer*Ex() (e.g. NvBufferMemMapEx()) functions?
Now I just have to get our system updated to 4.6