I’m trying to pull the frames data out of the buffer and use them in the CPU by using
n_frame=pyds.get_nvds_buf_surface. The function runs without any problem, but when I try to access the data inside the
n_frame I encounter the SIGSEV error. After some search, according to Python DeepStream documentation and also deepstream-imagedata-multistream, I set the nvbuf-memory-type to cuda unified memory. The error changed to Bus error (core dumped) instead, which I believe is due to the fact that the CPU does not recognize the address type of the output.
Here is the pipeline I’m using:
gst-launch-1.0 filesrc location= $SRC/samples/streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder cudadec-memtype=2 ! m.sink_0 nvstreammux name=m batch-size=1 width=1920 height=1080 nvbuf-memory-type=3 ! nvinfer config-file-path= $SRC/samples/configs/deepstream-app/config_infer_primary.txt batch-size=1 unique-id=1 ! nvtracker ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_mot_klt.so ! nvvideoconvert nvbuf-memory-type=3 ! ‘video/x-raw(memory:NVMM), format=RGBA’ ! nvvideoconvert nvbuf-memory-type=3 ! my_element
and in my_element (which is a sink element) I run these lines of code:
n_frame = pyds.get_nvds_buf_surface(hash(buffer), frame_meta.batch_id)
The function only works for one frame and then the bus error happens.
• Hardware Platform: GPU
• DeepStream Version: 5.1
• NVIDIA GPU Driver Version: 460.27.04
• Issue Type: bugs
I appreciate it if you could help me to fix the issue.
Thanks a lot.