Coarse Time control doesn't change with nvcamerasrc and autoexposure enabled

Hi all,

I am implementing a camera Driver, I want to know what do I need to implement in order to get nvcamerasrc managing the V4L coarse time control, I already implemented the coarse time control, and gain control. Right now with Nvcamerasrc and auto-exposure enabled, the V4L gain control changes according the light condition but the coarse time is not working. It only works if I set manually a value using v4l2-ctl.

        .ops            = &camera_ctrl_ops,
        .id             = TEGRA_CAMERA_CID_COARSE_TIME,
        .name           = "Coarse Time",
        .type           = V4L2_CTRL_TYPE_INTEGER,
        .flags          = V4L2_CTRL_FLAG_SLIDER,
        .min            = CAMERA_COARSE_INT_TIME_MIN,
        .max            = CAMERA_COARSE_INT_TIME_MAX,
        .def            = CAMERA_COARSE_INT_TIME_DEF,
        .step           = 1,

At the first I was seeing the same behavior for the gain, so I added the TEGRA_CAMERA_CID_GROUP_HOLD control to the camera driver and the gain now is working as expected.

I also notice that the values on the gain and exposure-time min-max on the dtb affects the behavior of the controls (min and max control values) when the auto-exposure is enabled running nvcamerasrc.

.			min_gain_val = "1.0";
			max_gain_val = "180";
			min_hdr_ratio = "1";
			max_hdr_ratio = "64";
			min_framerate = "1.462526";
			max_framerate = "60";
			min_exp_time = "4";
			max_exp_time = "165770";

Do you know what else do I need to implement to get the coarse time changing automatically by nvcamerasrc? Is the DTB values could be affecting the coarse time control?


Change the frame rate the coarse time should be changed.
Try use argus_camera to change the frame rate to check.

Do you know which part of nvcamerasrc manages the controls? I mean gain is working properly but coarse_time only changes one time when the capture starts, so what nvcamerasrc needs to do the loopback with coarse_time at same as it is doing with the gain? What needs nvcamerasrc implemented to manage the coarse_time control? I also changed the maximum and minimun values on the coarse_time and frame_length controls but anything changed. I also verified that the control id are the same that the ov5693. I also noticed the value changes to the maximum value of the coarse_time control (default value 450, current value when capturing 672, this is the maximum value of the control)


coarse_time is about the frame rate control. Try below command and check the coarse time in kernel driver.

gst-launch-1.0 nvcamerasrc fpsRange=“15.0 15.0” ! ‘video/x-raw(memory:NVMM)’ ! nvoverlaysink -e