Hi,
On our custom board, Orin NX, JP5.1.2
We have two cameras connected to CSI -1 and CSI -3 respectively.
video0 - CSI 1 - 1280x720 (50 fps)
video2 - CSI 2 - 1920x1080 (25fps)
We are unable to stream these simultaneously.
In ov5693_mode_tbls.h :
When i define only 1280x720 under enum , i am able to see the video0 in 720p and also video2 in 720p (while video2 is configured for 1080p in the device tree)
When i define only 1920x1080 under enum , i am able to see video2 in 1080p and also video0 in 1080p (while video0 is configured for 720p in the device tree)
Independently both 720p and 1080p configurations work completely fine.
but if both are define in the mode tables, any v4l2 command for 1080p fails, cause kernel to crash even though there is video dump for 1080p.
While defining both modes:
enum {
OV5693_MODE_1920X1080,
OV5693_MODE_1280X720_120FPS,
OV5693_MODE_START_STREAM,
OV5693_MODE_STOP_STREAM,
OV5693_MODE_TEST_PATTERN
};
#ifdef I2C_ENB
static const ov5693_reg *mode_table[] = {
[OV5693_MODE_2592X1944] = mode_2592x1944,
[OV5693_MODE_2592X1458] = mode_2592x1458,
[OV5693_MODE_1280X720_120FPS] = mode_1280x720_120fps,
[OV5693_MODE_640X480] = mode_640x480,
[OV5693_MODE_1920X1080] = mode_1920x1080,
[OV5693_MODE_2592X1944_HDR] = mode_2592x1944_HDR_24fps,
[OV5693_MODE_1920X1080_HDR] = mode_1920x1080_HDR_30fps,
[OV5693_MODE_2592x1944_15FPS] = mode_2592x1944_one_lane_15fps,
[OV5693_MODE_START_STREAM] = ov5693_start,
[OV5693_MODE_STOP_STREAM] = ov5693_stop,
[OV5693_MODE_TEST_PATTERN] = tp_colorbars,
};
#endif
static const int ov5693_15fps[] = {
15,
};
static const int ov5693_24fps[] = {
24,
};
static const int ov5693_30fps[] = {
30,
};
static const int ov5693_120fps[] = {
120,
};
static const struct camera_common_frmfmt ov5693_frmfmt[] = {
{{1280, 720}, ov5693_120fps, 1, 0, OV5693_MODE_1280X720_120FPS},
{{1920, 1080}, ov5693_30fps, 1, 0, OV5693_MODE_1920X1080},
};
With the above settings, 720p works completely fine on video0, but while trying to stream 1080p on video2 the kernel crashes.
There is video dump on cat /dev/video2.
But gstreamer does not show any video and the kernel crashes.
we tried the below pipelines:
GST_DEBUG=3 gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw, width=1920, height=1080 ! videoconvert ! autovideosink -v
GST_DEBUG=3 gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw, width=1920, height=1080 ! videoconvert ! ximagesink -v
The above pipeline gives kernel panic and we have to hard reset the Orin.
$ v4l2-ctl -d /dev/video2 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 1280x720
Interval: Discrete 0.008s (120.000 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
[1]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 1280x720
Interval: Discrete 0.008s (120.000 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
We are able to have 1280x720 and 640x480 simultaneously but not 720p and 1080p.
Device tree:
compiled.dts.txt (419.3 KB)
Please assist.
Thanks.