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.