Gstreamer reads data

Hi,
We design a Gstreamer plug-in and use tensorrt to accelerate the video denoising algorithm.
If the plugin uses SystemMemory, we can use gst_buffer_map to get the data.
Below is the sample code

image

We want to know if reading data using NVMM will be faster than reading data using SystemMemory?

Hi,
Please share the full gstreamer pipeline and at which you are accessing the gstBuffer. So that we can suggest next.

And you may consider user DeepStream SDK. It is with optimal performance to run deep learning inference.

Hi,

1.We customize the plug-in based on Gst-nvdsvideotemplate and access GstBuffer in the gst_denoise_submit_input_buffer function.
The implementation of gst_denoise_submit_input_buffer is as follows:

(1)、When using memory:SystemMemory, we use gst_buffer_map to access data.When using memory:NVMM, we use NvBufSurface and EglImage to access data.

(2)、Then use the video denoising interface czi_denoise implemented by tensorrt to process the data.

(3)、Finally, push the modified data to the downstream.

2.Our pipeline is to obtain a real-time video data stream from a camera, decode it, and pass the data into a custom plug-in for denoising and then push it downstream (requires real-time).

What I want to know is:
Which of the two methods of accessing data implemented above (gst_buffer_map or NvBufSurface and EglImage) is faster?
If gst_buffer_map is faster, then in my pipeline all plugins use memory:SystemMemory, otherwise all plugins use memory: NVMM.

thank you for your reply.

Hi,
It is faster to use NVMM buffer(NvBufSurface and EglImage). Hardware components can access the buffer data directly to eliminate additional data copy. If possible, we would suggest use DeepStream SDK so that it is NVMM buffer from source to sink.

Thank you very much for your reply.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.