[libcamera-devel] [PATCH 3/3] android: camera_device: Use reference to settings

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Mon Feb 1 03:52:24 CET 2021


Hi Jacopo,

On Fri, Jan 29, 2021 at 03:26:15PM +0100, Jacopo Mondi wrote:
> In preparation to use the keys part of a capture request to
> fill in the result metadata, instantiate a reference to
> descriptor_->settings_ and use it.
> 
> While at it, move the 'ret' variable declaration to the beginning of
> the function and rename it in 'found', as it will be used in many
> places and move the \todo comment up as it applies to all metadata
> whose value is copied from settings.
> 
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  src/android/camera_device.cpp | 16 +++++++++++-----
>  1 file changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index b66e7c71884a..0c424978838d 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -1936,7 +1936,9 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
>  				int64_t timestamp)
>  {
>  	const ControlList &metadata = descriptor->request_->metadata();
> +	const CameraMetadata &settings = descriptor->settings_;
>  	camera_metadata_ro_entry_t entry;
> +	bool found;
>  
>  	/*
>  	 * \todo Keep this in sync with the actual number of entries.
> @@ -1961,6 +1963,12 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
>  		return nullptr;
>  	}
>  
> +	/*
> +	 * \todo The value of the results metadata copied from the settings
> +	 * will have to be passed to the libcamera::Camera and extracted
> +	 * from libcamera::Request::metadata.
> +	 */
> +
>  	uint8_t value = ANDROID_CONTROL_AE_ANTIBANDING_MODE_OFF;
>  	resultMetadata->addEntry(ANDROID_CONTROL_AE_ANTIBANDING_MODE, &value, 1);
>  
> @@ -1975,10 +1983,9 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
>  				 aeFpsTarget.data(), aeFpsTarget.size());
>  
>  	value = ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER_IDLE;
> -	/* \todo Handle IPA appropriately */
> -	bool ret = descriptor->settings_.getEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, &entry);
> +	found = settings.getEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, &entry);
>  	resultMetadata->addEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
> -				 ret ? entry.data.u8 : &value, 1);
> +				 found ? entry.data.u8 : &value, 1);
>  
>  	value = ANDROID_CONTROL_AE_STATE_CONVERGED;
>  	resultMetadata->addEntry(ANDROID_CONTROL_AE_STATE, &value, 1);
> @@ -2022,8 +2029,7 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
>  	value = ANDROID_FLASH_STATE_UNAVAILABLE;
>  	resultMetadata->addEntry(ANDROID_FLASH_STATE, &value, 1);
>  
> -	ret = descriptor->settings_.getEntry(ANDROID_LENS_APERTURE, &entry);
> -	if (ret)
> +	if (settings.getEntry(ANDROID_LENS_APERTURE, &entry))
>  		resultMetadata->addEntry(ANDROID_LENS_APERTURE, entry.data.f, 1);
>  
>  	float focal_length = 1.0;
> -- 
> 2.30.0
> 
> _______________________________________________
> 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