Hi,
I have developed a Jetson Nano custom Kernel, Device Tree and Driver for AR0234 camera sensor connected through CSI interface.
dpkg-query --show nvidia-l4t-core
nvidia-l4t-core 32.7.6-20241104234540
One of the camera modes if for external HW triggers. I changed sources/kernel/nvidia/drivers/media/platform/tegra/camera/vi/vi2_fops.c so it accept infinite timeout. So I need to recompile the kernel.
I want to use with nvarguscamerasrc with gstreamer to be able to use the internal ISP.
The new Kernel, DT and Driver are working fine in streaming modes with v4l2-ctl:
v4l2-ctl --stream-mmap --set-ctrl=sensor_mode=0 --stream-count=100 -d /dev/video0
And gst-launch-1.0:
gst-launch-1.0 nvarguscamerasrc sensor-id=0 sensor-mode=0
num-buffers=5 ! ‘video/x-raw(memory:NVMM)’ ! nvvidconv flip-method=0 ! ‘video
/x-raw, format=(string)I420’ ! videoconvert ! ‘video/x-raw, format=(string)RG
B’ ! pngenc ! multifilesink location=“image_%02d.png”
In external trigger mode it also works fine with v4l2-ctl command:
gst-launch-1.0 nvarguscamerasrc sensor-id=0 sensor-mode=2
It capture images as they are comming from camera sensor wich is controlled by external TRIGGER signal.
It also works with gst-launch-1.0 as long as it receive frames (triggered by extertal signal) with less time difference than 1500 ms (as expected).
To enable longer (infinite) nvarguscamerasrc timiouts I execute in different console:
$ sudo service nvargus-daemon stop
$ sudo enableCamInfiniteTimeout=1 nvargus-daemon
However when I run (camera in Trigger mode)
gst-launch-1.0 nvarguscamerasrc sensor-id=0 sensor-mode=2
num-buffers=5 ! ‘video/x-raw(memory:NVMM)’ ! nvvidconv flip-method=0 ! ‘video
/x-raw, format=(string)I420’ ! videoconvert ! ‘video/x-raw, format=(string)RG
B’ ! pngenc ! multifilesink location=“image_%02d.png”
I get following trace:
Setting pipeline to PAUSED …
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:751 Failed to create CaptureSession
Got EOS from element “pipeline0”.
Execution ended after 0:00:00.155676014
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …
Freeing pipeline …
Exiting inmediately and not capturing any frame.
Any idea where is the problem?
And how to investigate further or fix it?