Hello - I’ve seen a few messages in these forums about getting PosixMemMap:84 mmap failed : Cannot allocate memory
from gstreamer pipelines, and haven’t really found any answers. I’ve managed to get this error after running the following command for about 1 hour:
gst-launch-1.0 \ videotestsrc is_live=1 pattern=ball ! video/x-raw, width=3840, height=2160, format=UYVY, framerate=10/1 ! nvvidconv flip-method=2 ! video/x-raw\(memory:NVMM\) ! nvvidconv ! video/x-raw\(memory:NVMM\), format=NV12, width=320, height=180 ! nvjpegenc ! filesink location=/dev/null \
videotestsrc is_live=1 pattern=ball ! video/x-raw, width=3840, height=2160, format=UYVY, framerate=10/1 ! nvvidconv flip-method=2 ! video/x-raw\(memory:NVMM\) ! nvvidconv ! video/x-raw\(memory:NVMM\), format=NV12, width=320, height=180 ! nvjpegenc ! filesink location=/dev/null \
videotestsrc is_live=1 pattern=ball ! video/x-raw, width=3840, height=2160, format=UYVY, framerate=10/1 ! nvvidconv flip-method=2 ! video/x-raw\(memory:NVMM\) ! nvvidconv ! video/x-raw\(memory:NVMM\), format=NV12, width=320, height=180 ! nvjpegenc ! filesink location=/dev/null \
videotestsrc is_live=1 pattern=ball ! video/x-raw, width=3840, height=2160, format=UYVY, framerate=10/1 ! nvvidconv flip-method=2 ! video/x-raw\(memory:NVMM\) ! nvvidconv ! video/x-raw\(memory:NVMM\), format=NV12, width=320, height=180 ! nvjpegenc ! filesink location=/dev/null \
videotestsrc is_live=1 pattern=ball ! video/x-raw, width=3840, height=2160, format=UYVY, framerate=10/1 ! nvvidconv flip-method=2 ! video/x-raw\(memory:NVMM\) ! nvvidconv ! video/x-raw\(memory:NVMM\), format=NV12, width=320, height=180 ! nvjpegenc ! filesink location=/dev/null \
videotestsrc is_live=1 pattern=ball ! video/x-raw, width=3840, height=2160, format=UYVY, framerate=10/1 ! nvvidconv flip-method=2 ! video/x-raw\(memory:NVMM\) ! nvvidconv ! video/x-raw\(memory:NVMM\), format=NV12, width=320, height=180 ! nvjpegenc ! filesink location=/dev/null \
videotestsrc is_live=1 pattern=ball ! video/x-raw, width=3840, height=2160, format=UYVY, framerate=10/1 ! nvvidconv flip-method=2 ! video/x-raw\(memory:NVMM\) ! nvvidconv ! video/x-raw\(memory:NVMM\), format=NV12, width=320, height=180 ! nvjpegenc ! filesink location=/dev/null \
videotestsrc is_live=1 pattern=ball ! video/x-raw, width=3840, height=2160, format=UYVY, framerate=10/1 ! nvvidconv flip-method=2 ! video/x-raw\(memory:NVMM\) ! nvvidconv ! video/x-raw\(memory:NVMM\), format=NV12, width=320, height=180 ! nvjpegenc ! filesink location=/dev/null
In other words, 8 copies of an identical stream that does
videotestsrc ! nvvidconv ! nvvidconv ! nvjpegenc ! filesink
The nvvidconv elements just move memory to NVMM, rotate, and change the image format. I’m obviously not using any cameras here. It would be very helpful to understand why the stream is attempting to allocate any memory at all once it starts - I would expect each element to allocate memory up front, and then just reuse buffers with each new image that moves through the pipeline.
If you wonder why I’m doing this with 8 streams - the intent here is to use 8 cameras, and a more complicated pipeline for each, but I’m trying to narrow down the problem as much as I can.
any help would be appreciated, thanks!