Efficient GStreamer and Visionworks Pipeline

I have been looking into passing data efficiently from a GStreamer pipeline to a VisionWorks application. I am expecting to have six 5 megapixel streams, so there is a lot of data to be transferred. While a couple of topics have mentioned zero-copy between LibArgus and Cuda (https://devtalk.nvidia.com/default/topic/1047563/jetson-tx2/libargus-eglstream-to-nvivafilter/post/5319890/#5319890), the Visionworks example nvgstcamera_capture appears to call cudaMemcpy2DFromArrayAsync in GStreamerEGLStreamSinkFrameSourceImpl.cpp. Is this a limitation of the VisionWorks graph pipeline, or is there any way to avoid this copy?

In addition, is there an optimal point in the pipeline when the images could be downsampled? Is there any specific hardware that could be used as part of a GStreamer pipeline to do this, or would it be more efficient to do so after the image is in VisionWorks?


VisionWorks doesn’t support Argus and we already move on to other frameworks.
To get an optimized camera pipeline, it’s recommended to use DeepStream, which is also based on the GStreamer:


Hi AastaLLL,
Is VisionWorks currently supported by NVIDIA? Or is it dead? Should we prefer DeepStream for both Argus and GStreamer based applications?


Hi andrea_id_ttc,

Not sure your use case, but we have DeepStream SDK 4.0 release recently, it’s recommended now, see https://developer.nvidia.com/deepstream-sdk