<div dir="ltr"><div dir="ltr">Hi Kieran,<div><br></div><div>Thank you for the review.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 18 Dec 2020 at 12:44, Kieran Bingham <<a href="mailto:kieran.bingham@ideasonboard.com">kieran.bingham@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Naush,<br>
<br>
On 18/12/2020 10:06, Naushir Patuck wrote:<br>
> Add an int64_t array control (controls::FrameDurations) to specify the<br>
> minimum and maximum (in that order) frame duration to be used by the<br>
> camera sensor.<br>
> <br>
> Signed-off-by: Naushir Patuck <<a href="mailto:naush@raspberrypi.com" target="_blank">naush@raspberrypi.com</a>><br>
> Reviewed-by: David Plowman <<a href="mailto:david.plowman@raspberrypi.com" target="_blank">david.plowman@raspberrypi.com</a>><br>
> Tested-by: David Plowman <<a href="mailto:david.plowman@raspberrypi.com" target="_blank">david.plowman@raspberrypi.com</a>><br>
> Reviewed-by: Jacopo Mondi <<a href="mailto:jacopo@jmondi.org" target="_blank">jacopo@jmondi.org</a>><br>
> ---<br>
>Â src/libcamera/control_ids.yaml | 41 ++++++++++++++++++++++++++++++++++<br>
>Â 1 file changed, 41 insertions(+)<br>
> <br>
> diff --git a/src/libcamera/control_ids.yaml b/src/libcamera/control_ids.yaml<br>
> index 6d6f0fee..a58bff18 100644<br>
> --- a/src/libcamera/control_ids.yaml<br>
> +++ b/src/libcamera/control_ids.yaml<br>
> @@ -306,6 +306,47 @@ controls:<br>
>Â Â Â Â Â maximum valid value is given by the properties::ScalerCropMaximum<br>
>Â Â Â Â Â property, and the two can be used to implement digital zoom.<br>
>Â <br>
> +Â - FrameDurations:<br>
> +Â Â Â type: int64_t<br>
> +Â Â Â description: |<br>
> +Â Â Â Â Â The minimum and maximum (in that order) frame duration,<br>
> +Â Â Â Â Â expressed in micro-seconds.<br>
> +<br>
> +Â Â Â Â Â When provided by applications, the control specifies the sensor frame<br>
> +Â Â Â Â Â duration interval the pipeline has to use. This could also limit the<br>
> +Â Â Â Â Â largest exposure time the sensor can use. For example, if a maximum<br>
> +Â Â Â Â Â frame duration of 33ms is requested (corresponding to 30 frames per<br>
> +Â Â Â Â Â second), the sensor will not be able to raise the exposure time above<br>
> +Â Â Â Â Â 33ms. A fixed frame duration is achieved by setting the minimum and<br>
> +Â Â Â Â Â maximum values to be the same.<br>
> +<br>
> +Â Â Â Â Â The maximum frame duration provides the absolute limit to the shutter<br>
> +Â Â Â Â Â speed computed by the AE algorithm and it overrides any exposure mode<br>
> +Â Â Â Â Â setting specified with controls::AeExposureMode. Similarly, when a<br>
> +Â Â Â Â Â manual exposure time is set through controls::ExposureTime, it also<br>
> +Â Â Â Â Â gets clipped to the limits set by this control.<br>
> +<br>
> +Â Â Â Â Â \sa AeExposureMode<br>
> +Â Â Â Â Â \sa ExposureTime<br>
> +<br>
> +Â Â Â Â Â \todo Refer to the frame duration limits property to describe how<br>
> +Â Â Â Â Â application-provided values gets clipped and reset.<br>
> +<br>
> +Â Â Â Â Â When reported by pipelines, the control expresses the minimum and<br>
> +Â Â Â Â Â maximum frame durations used after being clipped to what the current<br>
> +Â Â Â Â Â sensor mode supports, and what is achievable based on the exposure<br>
> +Â Â Â Â Â mode setting specified with controls::AeExposureMode or manual<br>
> +Â Â Â Â Â exposure time set through controls::ExposureTime. The sensor frame<br>
> +Â Â Â Â Â duration is one of the parameter that defines the capture frame rate<br>
<br>
s/parameter/parameters/ <fixable while applying I expect><br>
<br>
> +Â Â Â Â Â but it does not alone provide enough information to fully calculate it<br>
> +Â Â Â Â Â as it does not account for pipeline processing delays.<br>
> +<br>
> +Â Â Â Â Â \todo Define how to calculate the capture frame rate by<br>
> +Â Â Â Â Â defining controls to report additional delays introduced by<br>
> +Â Â Â Â Â the capture pipeline or post-processing stages (ie JPEG<br>
> +Â Â Â Â Â conversion, frame scaling).<br>
<br>
Presumably, the frame rate becomes a function of<br>
 max(FrameDuration, OtherSteps)<br></blockquote><div><br></div><div>That's right. The tricky bit is fully defining OtherSteps :-)</div><div><br></div><div>Regards,</div><div>Naush</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
<br>
Reviewed-by: Kieran Bingham <<a href="mailto:kieran.bingham@ideasonboard.com" target="_blank">kieran.bingham@ideasonboard.com</a>><br>
<br>
<br>
> +Â Â Â size: [2]<br>
> +<br>
>Â Â # ----------------------------------------------------------------------------<br>
>Â Â # Draft controls section<br>
>Â <br>
> <br>
<br>
-- <br>
Regards<br>
--<br>
Kieran<br>
</blockquote></div></div>