[libcamera-devel] [PATCH v2 6/6] android: camera_device: Return AE FPS range
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Feb 9 02:40:40 CET 2021
Hi Jacopo,
Thank you for the patch.
On Tue, Jan 26, 2021 at 06:30:08PM +0100, Jacopo Mondi wrote:
> The result metadata reported an arbitrary {30, 30} FPS range for the
s/reported/reports/
> AE algorithm.
>
> The actual FPS range should be returned in the Request::metadata, but
> as libcamera currently does not support that feature temporary work
s/temporary/temporarily/
> around the issue and return the FPS range requested by the camera
> framework.
>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
> src/android/camera_device.cpp | 19 ++++++++++++++++---
> 1 file changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index f3f59f7dcb77..6339ef257906 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -1951,6 +1951,7 @@ std::unique_ptr<CameraMetadata>
> CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
> int64_t timestamp)
> {
> + const CameraMetadata &settings = descriptor->settings_;
> const ControlList &metadata = descriptor->request_->metadata();
>
> /*
> @@ -1977,9 +1978,21 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
> value = ANDROID_CONTROL_AE_MODE_ON;
> resultMetadata->addEntry(ANDROID_CONTROL_AE_MODE, &value, 1);
>
> - std::vector<int32_t> aeFpsTarget = { 30, 30 };
> - resultMetadata->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
> - aeFpsTarget.data(), aeFpsTarget.size());
> + camera_metadata_ro_entry_t entry;
> + bool found = settings.getEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE, &entry);
> + if (found) {
> + /*
> + * \todo Retrieve the AE FPS range from the libcamera metadata.
> + * As libcamera does not support that control, as a temporary
> + * workaround return what the framework asked.
> + */
> + const int32_t *data = entry.data.i32;
> + std::vector<int32_t> aeFpsTarget = {
> + data[0], data[1],
> + };
> + resultMetadata->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
> + aeFpsTarget.data(), aeFpsTarget.size());
resultMetadata->addEntry(ANDROID_CONTROL_AE_TARGET_FPS_RANGE,
entry.data.i32, 2);
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> + }
>
> value = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE;
> resultMetadata->addEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list