[libcamera-devel] [PATCH v2 1/3] libcamera: controls: Add frame duration control
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon May 25 00:23:02 CEST 2020
Hi Naush,
Thank you for the patch.
On Wed, May 13, 2020 at 10:11:18AM +0100, Naushir Patuck wrote:
> Add a float array control (controls::FrameDurations) to specify the
> minimum and maximum (in that order) frame duration to be used by the
> camera sensor.
>
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> ---
> src/libcamera/control_ids.yaml | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml
> index 77ebc3f9..42694fc7 100644
> --- a/src/libcamera/control_ids.yaml
> +++ b/src/libcamera/control_ids.yaml
> @@ -239,4 +239,18 @@ controls:
> pixel range (as if pixels ranged from 0 to 65535). The SensorBlackLevels
> control can only be returned in metadata.
> size: [4]
> +
> + - FrameDurations:
> + type: float
Do we need sub-microsecond precision, or would a uint32_t control work ?
I'd rather have a fixed precision if possible.
> + description: |
> + Specifies the minimum and maximum (in that order) allowable frame
> + duration, in micro-seconds, for the sensor to use. This could also limit
> + the largest exposure times the sensor can use. For example, if a maximum
> + frame duration of 33ms is requested (corresponding to 30 frames per
> + second), the sensor will not be able raise the exposure time above 33ms.
> + Note that the sensor may not always be able to provide the requested
> + frame duration limits depending on its mode configuration.
This looks good to me, but I'd like to discuss the corner cases I can
already think about.
- Are there use cases for an application to specify a minimum frame
duration only, or a maximum frame duration only (that is, any frame
rate lower than a limit, or any frame rate higher than a limit) ? If
so, how should that be specified ? We could set the minimum value to 0
to mean that the maximum frame rate is unbounded, and the maximum
value to UINT32_MAX to mean that the minimum frame rate is unbounded.
Is there anything I'm overlooking ?
- Is 0 an acceptable value ? Or should 1 be the minimum value ?
- What happens if the requested frame duration isn't achievable ? Should
we specify that the camera will use a frame duration as close to the
requested range as possible ? Or could there be cases where a
different behaviour would be needed ?
- Not something we need to address now, but do you see any future
relation between this control and anti-banding (50 or 60Hz flicker
avoidance) ? Anti-banding will mostly restrict possible exposure
times, and should only indirectly interact with the frame duration if
I'm not mistaken, is that correct ?
> +
> + \sa ExposureTime
> + size: [2]
> ...
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list