Nvarguscamerasrc Frame Rate Limit

Is there a frame rate limit on nvarguscamerasrc? According to gst-inspect-1.0, the maximum frame rate allowed is 2147483647 fps. However, if I call gst-launch-1.0 nvarguscamerasrc on a custom camera running at 150 fps, GStreamer halts and generates the following error: ERROR: from element /GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0: TIMEOUT. Thanks in advance!

hello jgrasp20,

there’s no frame rate limitation, in theory.
could you please check your stream stability with v4l2 IOCTL.
for instance,
please examine sensor capability, $ v4l2-ctl -d /dev/video0 --list-formats-ext
you may also try following command-line to fetch camera stream, it’ll report average frame-rate for every second.
$ v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=900

Thanks for the quick turnaround!
If I am not mistaken, $ v4l2-ctl -d /dev/video0 --list-formats-ext ultimately depends on what is implemented in the mode table.
I have verified resolution and frame rate of the sensor through v4l2-ctl, but I kept getting tegra194-isp5 14800000.isp: no reply from camera processor for gst-launch-1.0.

hello jgrasp20,

it’s v4l2 IOCTL to examine your stream stability,
typically, it’s an issue with your sensor mode device tree settings if you’re able to fetch stream via v4l2 but not Argus.
please refer to developer gudie, Debugging Tips section for troubleshooting.

furthermore,
you may also give it a try by boosting all the VI/CSI/ISP clocks.
for instance,

sudo su
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/emc/rate

I went through the Debugging Tips section, but nothing stood out. Could you point me to specific property-value pairs that I should pay attention to?
Boosting the clocks didn’t help either.

hello jgrasp20,

as mentioned in previous comment #3, could you please share your v4l pipeline to confirm sensor side it’s outputting frame correctly?

I used v4l2-ctl -d0 --set-ctrl=bypass_mode=0 --set-fmt-video=width=528,height=402,pixelformat=Y10 --stream-count=300 --stream-mmap --stream-to=video.Y10 and it reported 150 fps.

hello jgrasp20,

may I double confirm what’s your sensor output formats.
please refer to Camera Architecture Stack, nvarguscamerasrc plugin it went through libargus, which only supported with bayer raw camera sensors.

It’s RAW10.
What confuses me the most is that nvarguscamerasrc works with 30, 60, 90, and 120 but not 150 fps.

hello jgrasp20,

may I double confirm the Jetpack release version you’ve working with.
you may check the release tag, $ cat /etc/nv_tegra_release for confirmation.
besides, could you please also share your gst pipeline, and also the complete error logs for reference.

I’ve been working with R32.6.1, a relatively old version supported by the manufacturer of a custom carrier board.
I used gst-launch-1.0 nvarguscamerasrc sensor-mode=4 ! 'video/x-raw(memory:NVMM), width=(int)528, height=(int)402, format=(string)NV12, framerate=(fraction)150/1' ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)GRAY8' ! nvvidconv ! 'video/x-raw(memory:NVMM), format=(string)I420' ! nvoverlaysink.
Here is the error log: err_log.txt (2.4 KB).

hello jgrasp20,

this is very old release version.
IIRC, gstnvarguscamerasrc did had frame rate limitation, we’ve removed that 120-fps frame rate upper bound limitation already.
please dig into gstnvarguscamerasrc.cpp, please check whether you’ve below patch included.
for instance,

diff --git a/gst-nvarguscamera/gstnvarguscamerasrc.cpp b/gst-nvarguscamera/gstnvarguscamerasrc.cpp
index 6d7df3e..29e4f06 100644
@@ -47,7 +47,7 @@
   "width = (int) [ 1, MAX ], " \
   "height = (int) [ 1, MAX ], " \
   "format = (string) { NV12 }, " \
-  "framerate = (fraction) [ 0/1, 120/1 ];"
+  "framerate = (fraction) [ 0, MAX ];"

if that’s feasible.
please moving to the latest Jetpack release version for verification.
here’s the latest JP-5 release, jetson-linux-r3550 which support Xavier NX.

I can verify that this patch has been included in R32.6.1.
On a separate note, I stumbled into this post. Is it possible that the resolution is the issue here?

hello jgrasp20,

there’re some test results, you may see-also Topic 245656 for reference.
please further narrow down the issue regrading to your pipeline, you may try below of 150-fps mode streaming.
for instance,
$ gst-launch-1.0 nvarguscamerasrc sensor-mode=4 ! 'video/x-raw(memory:NVMM),width=528, height=402, framerate=150/1, format=NV12' ! nvvidconv ! 'video/x-raw(memory:NVMM),format=I420' ! fpsdisplaysink text-overlay=0 video-sink=fakesink sync=0 -v

I tested the GStreamer command you provided and it threw the same TIMEOUT error. I will conclude this thread by recommending newer versions of Jetson Linux where there is no minimum resolution requirement running nvarguscamerasrc.