We’ve got the following configuration defined:
- csi 4 lane ar0231 sensor
- GMSL2 SerDes to CSI-2 interface
- Xavier running r31.1 release
- raw 12 bayer pattern GRBG
With the help of fellow DevTalk community member Greg Rowe, we are able to capture single and multiple frames reliably using v4l2-ctl. (ref: https://devtalk.nvidia.com/default/topic/1051117/jetson-agx-xavier/csi-camera-capture-crash-causes-quot-vi-capture-dequeue-status-failed-quot-/?offset=2#5334740)
Example single frame capture:
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1928,height=1208,pixelformat=BA12 --set-ctrl=sensor_mode=0 --stream-mmap --stream-count=1 --set-ctrl bypass_mode=0 --stream-to=ar0231.raw
Example 90 frame capture:
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1928,height=1208,pixelformat=BA12 --set-ctrl=sensor_mode=0 --stream-mmap --stream-count=90 --set-ctrl bypass_mode=0 --stream-to=ar0231.raw
Converting this from Bayer format to RGB using raw2rgbpnm (ref: git://salottisipuli.retiisi.org.uk/~sailus/raw2rgbpnm.git) gives us results that we expect.
When we try to use gstreamer, however, we encounter an “Internal data stream error.” I’ve reduced the command to the bare minimum and still see the problem. Here’s a capture with GST_DEBUG="*:2":
nvidia@jetson-0423418010090:~$ gst-launch-1.0 -v v4l2src device="/dev/video0" ! fakesink Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... 0:00:00.083802415 18524 0x5587c52230 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<v4l2src0> error: Internal data stream error. 0:00:00.083892755 18524 0x5587c52230 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<v4l2src0> error: streaming stopped, reason not-negotiated (-4) ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error. Additional debug info: gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: streaming stopped, reason not-negotiated (-4) ERROR: pipeline doesn't want to preroll. Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... Freeing pipeline ...
Since v4l2-ctl works, I assumed the v4l2src plugin would work. But, that does not seem to be the case.
I’ve found similar issues described here on the Community forums, but none of the threads so far have been much help. I’ve double-checked that the devname under the tegra-camera-platform node is matches the device. I’m less sure about the various configuration settings (max_pixel_rate, isp_bw_margin_pct, etc).
Can anyone share their insight on what may be the source of this problem?