[libcamera-devel] [PATCH] android: CameraDevice: Report proper min and max frame durations

Hirokazu Honda hiroh at chromium.org
Wed Mar 31 08:55:37 CEST 2021


Hi Paul, thanks for the patch.

On Tue, Mar 30, 2021 at 6:50 PM Paul Elder <paul.elder at ideasonboard.com> wrote:
>
> The HAL layer was getting the min and max frame durations from from the

nit: durations from the

> camera, then rounding it to fps to report as available fps ranges. The
> same min and max frame durations were then being reported as min and max
> frame durations. Since the fps are integer values while the frame
> durations are in ns, this caused a rounding error making it seem like we
> were reporting an available max fps that was higher than was was allowed
> by the minimum frame duration.
>

It might be nice to have one example of the case.

> Fix this by recalculating the frame durations based on the rounded fps
> values.
>
> This allows the following CTS test to pass:
> - android.hardware.camera2.cts.SurfaceViewPreviewTest#testPreviewFpsRange
>
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> ---
>  src/android/camera_device.cpp | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 931e9f37..91d4e8d4 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -799,6 +799,10 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
>                 int32_t minFps = std::round(1e9 / maxFrameDurationNsec);
>                 minFps = std::max(1, minFps);
>
> +               /* Avoid rounding errors when we reuse these variables later */
> +               minFrameDurationNsec = 1e9 / maxFps;
> +               maxFrameDurationNsec = 1e9 / minFps;
> +
>                 /*
>                  * Register to the camera service {min, max} and {max, max}
>                  * intervals as requested by the metadata documentation.
> --
> 2.27.0
>

Reviewed-by: Hirokazu Honda <hiroh at chromium.org>

> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel


More information about the libcamera-devel mailing list