Video Buffer Management - 2023.1 English

Zynq UltraScale+ MPSoC ZCU106 Video Codec Unit Targeted Reference Design User Guide (UG1250)

Document ID
UG1250
Release Date
2023-05-16
Version
2023.1 English

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 ).

Figure 3-19: Buffer Sharing

X-Ref Target - Figure 3-19

X19445-buffer-sharing.jpg

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.