In the case of a raw/processed pipeline, the video capture device (v4l2src), video processing accelerator (VCU element), and kmssink plugin use DMABUF framework for sharing buffers between peer elements (see This Figure).
The following steps are performed in DMA buffer sharing.
In the capture-encode side:
1.The V4L2 capture device (the client driver) allocates buffer.
2.The v4l2src plug-in exports/imports the DMA buffer to the gst-omx plug-in.
3.The gst-omx plug-in passes the file descriptor to the encoder driver.
4.The encoder driver uses the DMA_BUF framework and reads the kernel buffer for encoding.
In the playback side:
1.The decoder driver allocates DMA buffer.
2.The gst-omx plug-in exports the file descriptor (FD) to the kmssink plug-in.
3.The kmssink plug-in passes the file descriptor to the DisplayPort controller driver.
4.The DisplayPort driver uses the kernel DMA_BUF framework to know the decoder buffer location.
5.The DisplayPort DMA reads the decoded buffer without copying the buffer in kernel memory.