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?