My appsource will copy the gpu buffer in pipeline 0 to another region in the GPU memory, for example, I would copy the gpu buffer data from pipeline 0 to a cv::GpuMat and my pipeline 1 will process the data in the cv::GpuMat. In this scenario, will pipeline 1 run asynchronously w.r.t pipeline 0. I know that it is possible to do so in Gstreamer pipelines that don’t use the Deepstream SDK and in that case it would be a H2H copy, where as in my case it would be a Device to Device copy.
Thank you for your response. I guess my question wasn’t clear. My question is more about whether the two pipelines can run in async , if pipeline 0 uses the gstreamer elements from the Deepstream SDK and pipeline 1 only uses gstreamer elements from the gstreamer library.
Hi,
If the plugins in second pipeline support CUDA buffers, you may use NvBufSurf APIs to demonstrate device to device memory copy. If the plugins support CPU buffers only, you need to have device to host memory copy.
Running two pipelines simultaneously in one process should work. Once concern is that metadata can be lost in certain condition. A condition is discussed in the post: