Dear Community,
In our custom camera driver, we have following custom controls :
nvidia@ngx007-1819-xaviernx:~$ v4l2-ctl --list-ctrls-menus -d /dev/video0
Camera Controls
streaming_mode 0x009a2071 (menu) : min=0 max=2 default=0 value=0
0: Standalone
1: Sync Mode
2: External HW Sync Mode
operation_mode 0x009a2072 (menu) : min=0 max=1 default=0 value=0
0: Master Mode
1: Slave Mode
black_level 0x009a2075 (int64) : min=0 max=511 step=1 default=60 value=60 flags=slider, execute-on-write
global_shutter_mode 0x009a207b (menu) : min=0 max=1 default=0 value=0
0: Normal Mode
1: Sequential Trigger Mode
sensor_modes 0x009a2082 (int) : min=0 max=30 step=1 default=30 value=5 flags=read-only
nvidia@ngx007-1819-xaviernx:~$ v4l2-ctl --list-ctrls-menus -d /dev/video1
Camera Controls
streaming_mode 0x009a2071 (menu) : min=0 max=2 default=0 value=0
0: Standalone
1: Sync Mode
2: External HW Sync Mode
operation_mode 0x009a2072 (menu) : min=0 max=1 default=0 value=0
0: Master Mode
1: Slave Mode
black_level 0x009a2075 (int64) : min=0 max=511 step=1 default=60 value=60 flags=slider, execute-on-write
global_shutter_mode 0x009a207b (menu) : min=0 max=1 default=0 value=0
0: Normal Mode
1: Sequential Trigger Mode
sensor_modes 0x009a2082 (int) : min=0 max=30 step=1 default=30 value=5 flags=read-only
I updated some controls (operation mode and streaming mode) :
nvidia@ngx007-1819-xaviernx:~$ v4l2-ctl -c streaming_mode=1 -d /dev/video0
nvidia@ngx007-1819-xaviernx:~$ v4l2-ctl -c streaming_mode=1 -d /dev/video1
nvidia@ngx007-1819-xaviernx:~$ v4l2-ctl -c operation_mode=1 -d /dev/video1
nvidia@ngx007-1819-xaviernx:~$ v4l2-ctl --list-ctrls-menus -d /dev/video0
Camera Controls
streaming_mode 0x009a2071 (menu) : min=0 max=2 default=0 value=1
0: Standalone
1: Sync Mode
2: External HW Sync Mode
operation_mode 0x009a2072 (menu) : min=0 max=1 default=0 value=0
0: Master Mode
1: Slave Mode
black_level 0x009a2075 (int64) : min=0 max=511 step=1 default=60 value=60 flags=slider, execute-on-write
global_shutter_mode 0x009a207b (menu) : min=0 max=1 default=0 value=0
0: Normal Mode
1: Sequential Trigger Mode
sensor_modes 0x009a2082 (int) : min=0 max=30 step=1 default=30 value=5 flags=read-only
nvidia@ngx007-1819-xaviernx:~$ v4l2-ctl --list-ctrls-menus -d /dev/video1
Camera Controls
streaming_mode 0x009a2071 (menu) : min=0 max=2 default=0 value=1
0: Standalone
1: Sync Mode
2: External HW Sync Mode
operation_mode 0x009a2072 (menu) : min=0 max=1 default=0 value=1
0: Master Mode
1: Slave Mode
black_level 0x009a2075 (int64) : min=0 max=511 step=1 default=60 value=60 flags=slider, execute-on-write
global_shutter_mode 0x009a207b (menu) : min=0 max=1 default=0 value=0
0: Normal Mode
1: Sequential Trigger Mode
sensor_modes 0x009a2082 (int) : min=0 max=30 step=1 default=30 value=5 flags=read-only
The modes get updated but are NOT propagated to low-level sensor driver, however. Below are relevant callbacks in the sensor driver :
static const u32 ctrl_cid_list[] = {
TEGRA_CAMERA_CID_GAIN,
TEGRA_CAMERA_CID_EXPOSURE,
TEGRA_CAMERA_CID_FRAME_RATE,
TEGRA_CAMERA_CID_SENSOR_MODE_ID,
TEGRA_CAMERA_CID_STREAMING_MODE,
TEGRA_CAMERA_CID_OPERATION_MODE,
TEGRA_CAMERA_CID_BLACK_LEVEL,
TEGRA_CAMERA_CID_SHUTTER_MODE,
TEGRA_CAMERA_CID_TEST_PATTERN,
};
...
/**
* Set streaming mode
*/
static int imxXXX_set_streaming_mode(struct tegracam_device *tc_dev, u32 val)
{
struct imxXXX *priv = (struct imxXXX *)tc_dev->priv;
struct device *dev = tc_dev->dev;
priv->current_streaming_mode = val;
dev_dbg(dev, "%s: mode = %d\n", __func__, priv->current_streaming_mode);
return 0;
}
/**
* Set operation mode of sensor
*/
static int imxXXX_set_operation_mode(struct tegracam_device *tc_dev, u32 val)
{
struct imxXXX *priv = (struct imxXXX *)tc_dev->priv;
struct device *dev = tc_dev->dev;
priv->current_operation_mode = val;
dev_dbg(dev, "%s: mode = %d\n", __func__, priv->current_operation_mode);
return 0;
}
...
static struct tegracam_ctrl_ops imxXXX_ctrl_ops = {
.numctrls = ARRAY_SIZE(ctrl_cid_list),
.ctrl_cid_list = ctrl_cid_list,
.set_gain = imxXXX_set_gain,
.set_exposure = imxXXX_set_exposure,
.set_frame_rate = imxXXX_set_frame_rate,
.set_group_hold = imxXXX_set_group_hold,
.set_test_pattern = imxXXX_set_test_pattern,
.set_streaming_mode = imxXXX_set_streaming_mode,
.set_operation_mode = imxXXX_set_operation_mode,
.set_black_level = imxXXX_set_black_level,
.set_shutter_mode = imxXXX_set_shutter_mode,
};
I would like to know if I could add these custom controls to gst-launch command for nvarguscamera, please ?
Best Regards.
Khang