I am running L4T 35.3.1
I am facing an issue with my Jetson system. When I boot my device, I can capture raw frames with
v4l2-ctl just fine. I can also capture frames using GStreamer and
nvarguscamerasrc without any problem.
However, I have noticed that after using GStreamer with
nvarguscamerasrc, I am no longer able to use
v4l2-ctl with this camera.
For example, when doing in order:
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=-1 --stream-to=- => Success
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! fakesink dump=true => Success
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=-1 --stream-to=- => FAILURE (the command hangs without any error message)
This issue happens consistently every time I run these commands in this order, a reboot allows
v4l2-ctl to capture raw frames again.
I suspect that Argus is instructing the VI to direct the frames to the Argus pipeline, leaving
v4l2-ctl unable to access the frames.
My question is: is there a way to revert this action and access the raw frames with
v4l2-ctl after running GStreamer with
Note that when using V4L for direct access to sensor without Argus, you may disable bypass (add
--set-ctrl=bypass_mode=0 to your v4l2-ctl command), otherwise it might fool Argus.
Hey @Honey_Patouceul , thanks for your prompt answer.
--set-ctrl=bypass_mode=0 to the
v4l2-ctl command solved the issue. Could you explain me what this does or direct me to some documentation that does ?
I found this sentence in the Sensor Software Driver Programming Guide:
TEGRA_CAMERA_CID_VI_BYPASS_MODE† : A Boolean; true bypasses VI settings in the kernel driver. Default is true when using camera core library.
But I don´t really understand what it means,
I’m unable to point out at any documentation, someone from NVIDIA may provide more accurate data.
My understanding is that the camera driver may be used in two different ways;
By default, to be used by Argus, a bypass in the driver will make Argus able to get raw bayer frames from sensor driver into ISP for debayering, auto-tuning gains,exposure,wb,… and providing YUV (NV12) frames into NVMM memory for further processing with VIC, GPU, Video encoders or decoders…
When using that mode, trying to acquire frames from V4L may lead to Argus being fooled.
If you want to get direct bayer frames from V4L API, don’t concurrently use same camera from Argus capture, and be sure to disable the bypass, so that Argus won’t receive any frame from your own V4L command.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.