[libcamera-devel] [RFC PATCH] android: Do not cap those minFrameDuration nearabout 30fps

Umang Jain umang.jain at ideasonboard.com
Thu Dec 2 14:32:32 CET 2021


On 12/2/21 6:51 PM, Umang Jain wrote:
> We have some stream resolution which can provide slightly better
> frame duration than what we cap (i.e. 1/30 fps). The problem with
> this is CTS complains if the camera goes faster during the test
> than minFrameDuration reported for that stream. For instance,
>
> 1080p minFrameDuration:
> 	- Nautilus : 33282000
> 	- Soraka   : 33147000
>
> Both are less than capped minFrameDuration (3333333).
>
> This patch considers this situation and doesn't cap the
> minFrameDuration if the hardware can provide frame durations slightly
> better. The delta considered is 1% only from the cap.
>
> Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
> ---
> On LIMITED level - no regressions were found : 230/231 pass rate
>
> On FULL level - this fixes the test:
> android.hardware.camera2.cts.SurfaceViewPreviewTest#testPreviewFpsRange
> ---
>   src/android/camera_capabilities.cpp | 13 +++++++++++--
>   1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/src/android/camera_capabilities.cpp b/src/android/camera_capabilities.cpp
> index 3e566755..6421456a 100644
> --- a/src/android/camera_capabilities.cpp
> +++ b/src/android/camera_capabilities.cpp
> @@ -810,8 +810,17 @@ int CameraCapabilities::initializeStreamConfigurations()
>   			 * control to be specified for each Request. Defer this
>   			 * to the in-development configuration API rework.
>   			 */
> -			if (minFrameDuration < 1e9 / 30.0)
> -				minFrameDuration = 1e9 / 30.0;
> +			int64_t capMinFrameDuration = 1e9 / 30.0;
> +			if (minFrameDuration < capMinFrameDuration) {
> +				float delta = (capMinFrameDuration - minFrameDuration) * 100 / capMinFrameDuration;
> +
> +				/*
> +				 * If the delta is less than 1%, do not cap the
> +				 * frame duration.
> +				 */
> +				if (delta > 0.01)
oops. this should be delta > 1
> +					minFrameDuration = capMinFrameDuration;
> +			}
>   
>   			streamConfigurations_.push_back({
>   				res, androidFormat, minFrameDuration, maxFrameDuration,


More information about the libcamera-devel mailing list