Autoexposure works really nicely most of the time, but especially indoors it will start to alternate between two set values. For example:
[ 3664.814707] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 1160
[ 3665.014769] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 580
[ 3665.348054] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 1160
[ 3665.548162] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 580
[ 3665.848173] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 1160
[ 3666.048151] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 580
[ 3666.381359] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 1160
[ 3666.581458] daxc02 0-0010: daxc02_s_ctrl: V4L2_CID_COARSE_TIME - 580
This is not only annoying, but it causes issues for things like disparity mapping using two cameras.
Is there an easy way to do any of the following?
- Reduce the sensitivity or increase the hysteresis of the auto-exposure to avoid the flashing
- Have the same auto-exposure algorithm control both sensors
- Have one sensor in manual mode and set it with the values of the other
I attempted #3 myself using ioctl. But the only way I could figure out how to disable autoexposure was IAutoControlSettings->setAeLock, but that literally locks the value. So changing with ioctl just causes it to change right back.
@Atrer
It seems like the exposure value received from user mode core library is already jumpy. Can you make sure the exposure min/max settings are set correctly in kernel DT?
I couldn’t find any information on how to calculate/set those values. So I’ve been using the default from the ov5693 example:
min_exp_time = “34”;
max_exp_time = “550385”;
Should I try reducing that minimum down to 1?
@Atrer
min_exp_time
Specifies the minimum exposure time limit for the mode, in microseconds. Ceiling function to integer.
The equation to calculate this value is as follows:
min_exp_time = (minimum coarse integration time) * line_ length / pix_clk_hz * 1000000
minimum coarse integration time is the minimum exposure intervals. Unit in lines.
max_exp_time
Specifies the maximum exposure time limit for the mode in microseconds. Ceiling function to integer.
The equation to calculate this value is as follows:
min_exp_time = (maximum coarse integration time) * line_length / pix_clk_hz * 1000000
Perfect, thanks! Where was that information by the way?
Will public soon with next release in the l4t document sensor programing guide.