Skip to content

nvmmalloc

A GstAllocator for NvBufSurface (NVMM) memory — there is no stock one. It provides NVMM-backed GstMemory so buffer pools and elements can allocate, map, share, and pass Tegra NVMM surfaces through the standard allocator interface, with RAII lifetimes (NvBufSurfaceCreate/Destroy, map/unmap).

It underpins the other elements (nvmmconvert, nvmmsink, nvmmappsrc, the inference graph) and the buffer-pool plumbing. It is not a pipeline element and has no GObject properties; it is configured through the standard GstAllocationParams / video-info path.

Memory is share-capable: gst_buffer_make_writable after a tee performs a shallow copy — a new GstBuffer and meta list referencing the same NvBufSurface — so per-branch metadata can be attached without duplicating pixels.

DeepStream interop

DeepStream allocates the same NvBufSurface type through its own internal pools, so buffers allocated here flow into DeepStream elements (nvstreammux, nvinfer, …) without a copy. On Orin NX (JP6 / DeepStream 7.1) the suite builds against DeepStream's own NvBufSurface and co-registers in one GStreamer registry alongside nvinfer/nvstreammux/nvdsosd; see the interop sections of nvmmconvert, nvmmsink, and nvmmappsrc.