We are running 3 camera GStreamer setup (https://www.e-consystems.com/three-synchronized-4k-cameras-for-nvidia-jetson-tx2.asp) on our Jetson TX2 with the following pipeline:
gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720" ! nvvidconv output-buffers=50 ! omxh264enc control-rate=2 bitrate=600000 ! 'video/x-h264, width=1280, height=720, stream-format=(string)byte-stream' ! queue ! h264parse ! queue ! rtph264pay mtu=800 ! udpsink host=192.168.1.3 port=5000 sync=false
The pipeline runs with 100FPS.
After triggering all three pipelines at the same time, we can observe noticeable latency increase after 10 seconds period. We have managed to capture this strange behavior using GST Shark: https://1drv.ms/u/s!As2zxTr-3RwhhLFsLYWGM3dme-pdRQ . We can see that omxh264enc after 10 seconds cannot keep up with the incoming frames.
In the Jetson TX2 datasheet, we were able to see suggested resolutions for H264:
2160p60 | (3x) 2160p30 | (7x) 1080p60 | (14x) 1080p30
So we’re confident that hardware can handle this flow, but it’s rather the GStreamer pipeline which is not optimized.
Any ideas on how we can increase the efficiency of the hardware encoder in our pipeline?