The doc for line_length is as follows:
Pixel line width horizontal timing size for the sensor mode. Used to calibrate the features in the camera stack. The value must be greater than or equal to active_w.
Unfortunately, the IMX-678 software reference datasheet defines frame line length differently (register is VMAX in MASTER mode) and that value is significantly less than active_w for 4k@30Hz. Is that OK?
Next, the IMX678 has a calculated integration time based on the shutter sweep speed. I have made changes to both the device tree and driver to adhere to formula outlined in the spec.
However, when I am testing it, I am seeing weird behavior between gst/nvarguscamerasrc and the driver. Namely, the value passed to my imx678_set_exposure function:
GST_ARGUS: 3856 x 2180 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 0.000000, max 72.000000; Exposure Range min 21459000, max 16073194000;
No matter what values I put in for exposuretimerange
with aelock=True
I always see the value passed into the driver as 21459
.
Device tree settings are as follows:
max_exp_time "14612"
min_exp_time "6"
default_exp_time "6"
line_length "2250"
step_exp_time "1"
exposure_factor "1"
For example, if I pass exposuretimerange 20000 20000 aelock=True
within my record pipeline, my driver sees for an exposure value 3333
when I would expect 20
(I assume it converts ns to us) and then the correct value for the shutter sweep speed is wrong. If put in 14612000
I get a value passed to my function of 13507
.
This is on a Jetson Nanon (JP 32.5.1) and one IMX-678 camera.
I noticed that “25” seems to be the floor.
EDIT: Another question I have is the minimum and maximum course integration time is in line units right, not microseconds? (same as version 1.0)