I’m trying to run several gstreamer encoding pipelines on a TX2 on a custom board with 6 GMSL cameras using nvv4l2h265enc using 1280x720@30fps (this is what the sensors are outputting, using UYVY). I’ve encountered some performance issues and I used Ridgerun’s excellent gst-shark tool for profiling.
The pipeline looks like this per camera / stream:
gst-launch-1.0 nvv4l2camerasrc device=/dev/videoX ! “video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, format=(string)UYVY, framerate=(fraction)30/1” ! queue max-size-buffers=1 leaky=2 ! nvvidconv ! queue max-size-buffers=1 leaky=2 ! nvv4l2h265enc maxperf-enable=1 insert-sps-pps=1 bitrate=1000000 ! queue max-size-buffers=1 leaky=2 ! udpsink host=Y port=Z -e
All graphs are profiling a single pipeline from the multi-pipeline setting (1 gst-launch process per pipeline).
When using 4 cameras we get good performance and latency as shown in the attached images with 4cams in their name.
When using 6 cameras, the processing time and latency of the nvv4l2h265enc component is much higher and much less uniform and this is a problem for us as we’re trying to keep the encoding latency as low as possible.
I ran jetson_clocks.sh, set the power mode to 0 etc.
Is there anything I’m doing wrong here? Do you have any tips that might point me in the right direction?
Any help would be appreciated!!