@stephengerdts , in majority of cameras, the exposure time of the whole frame is set as a multiple of a specific number, let's call it T0. T0 is the minimum exposure of the whole frame and you can set any other exposure values, which will get rounded to a multiple of T0 ( K*T0 ).

This T0 number is actually exactly equal to something called the Line Readout Time, which is the time it takes for the camera hardware to sample, process and send out a single line of pixels.

This may be a little confusing, but if you think about how rolling shutter camera works, it "reads out" one line at a time (it cannot store the whole image in memory, so exposure and read out of each line are staggered). Please take a look at this link that shows how exposure time relates to readout time : https://www.researchgate.net/figure/Timing-diagram-of-the-CMOS-sensor-array-shown-in-Fig-2-The-readout-times-of-the_fig2_3328923

I believe that in order to simplify the exposure timing logic, the cameras then use the readout time as a unit of increment for the exposure time.

So, the minimum exposure time reported by the voxl-camera-server is the minimum exposure time for the whole frame, which is also equal to the readout time of a single line 🙂

In case of IMX214, the line readout time is 10.449us which is also the increment for adjusting exposure. The logic inside the camera framework will take the desired exposure time from the user / voxl-camera-server and then set the correct integer number of exposure in terms of "lines" (not microseconds) in order to achieve the correct exposure duration in units of time.

Alex