We have a system where I launch 6 gstreamer pipelines for 6 cameras with nvarguscamerasrc. The pipleines are started programmatically in a loop.
This was working with R32.4.3, but with R32.5.0, only 5 out of the 6 pipelines start correctly.
The following errors are output on stdout/stderr:
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD… Exiting…
This can be reproduced with a simple example from the command line:
gst-launch-1.0
nvarguscamerasrc sensor-id=0 ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! fakesink
nvarguscamerasrc sensor-id=1 ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! fakesink
nvarguscamerasrc sensor-id=2 ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! fakesink
nvarguscamerasrc sensor-id=3 ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! fakesink
nvarguscamerasrc sensor-id=4 ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! fakesink
nvarguscamerasrc sensor-id=5 ! ‘video/x-raw(memory:NVMM),format=(string)NV12’ ! fakesink
Setting pipeline to PAUSED …
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD… Exiting…
ERROR: from element /GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc3: TIMEOUT
Additional debug info:
Argus Error Status
Execution ended after 0:00:01.967467680
Setting pipeline to PAUSED …
Setting pipeline to READY …
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD… Exiting…
Setting pipeline to NULL …
Freeing pipeline …
We have found that inserting a one-second delay between starting each pipeline can work-around the problem, but adds additional start-up latency for our product. Also, without knowing the root cause, it is hard to have confidence in a “delay work-around.”
Is this a known issue? Are there new timing requirements in R32.5 for starting nvarguscamerasrc pipelines?