[libcamera-devel,04/12] android: camera_device: Register EXPOSURE_TIME_RANGE
diff mbox series

Message ID 20210105190522.682324-5-jacopo@jmondi.org
State Accepted
Delegated to: Jacopo Mondi
Headers show
Series
  • android: Exposure times + scaler crop + android metadata
Related show

Commit Message

Jacopo Mondi Jan. 5, 2021, 7:05 p.m. UTC
Register the EXPOSURE_TIME_RANGE static metadata inspecting the
ExposureTime control limits as reported by the camera.

If such information is not available, do not register the property.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
---
 src/android/camera_device.cpp | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

Comments

Laurent Pinchart Jan. 10, 2021, 10:25 p.m. UTC | #1
Hi Jacopo,

Thank you for the patch.

On Tue, Jan 05, 2021 at 08:05:14PM +0100, Jacopo Mondi wrote:
> Register the EXPOSURE_TIME_RANGE static metadata inspecting the
> ExposureTime control limits as reported by the camera.
> 
> If such information is not available, do not register the property.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
> ---
>  src/android/camera_device.cpp | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index a136f8e33843..de3ead275e91 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -888,11 +888,15 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
>  					  &filterArr, 1);
>  	}
>  
> -	int64_t exposureTimeRange[] = {
> -		100000, 200000000,
> -	};
> -	staticMetadata_->addEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
> -				  &exposureTimeRange, 2);
> +	const auto &exposureInfo = controlsInfo.find(&controls::ExposureTime);
> +	if (exposureInfo != controlsInfo.end()) {
> +		int64_t exposureTimeRange[2] = {
> +			exposureInfo->second.min().get<int32_t>() * 1000,
> +			exposureInfo->second.max().get<int32_t>() * 1000,

1000ULL to avoid a potential overflow.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> +		};
> +		staticMetadata_->addEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
> +					  &exposureTimeRange, 2);
> +	}
>  
>  	staticMetadata_->addEntry(ANDROID_SENSOR_ORIENTATION, &orientation_, 1);
>
Niklas Söderlund Jan. 18, 2021, 3:18 p.m. UTC | #2
Hi Jacopo,

Thanks for your work.

On 2021-01-05 20:05:14 +0100, Jacopo Mondi wrote:
> Register the EXPOSURE_TIME_RANGE static metadata inspecting the
> ExposureTime control limits as reported by the camera.
> 
> If such information is not available, do not register the property.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

> ---
>  src/android/camera_device.cpp | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index a136f8e33843..de3ead275e91 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -888,11 +888,15 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
>  					  &filterArr, 1);
>  	}
>  
> -	int64_t exposureTimeRange[] = {
> -		100000, 200000000,
> -	};
> -	staticMetadata_->addEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
> -				  &exposureTimeRange, 2);
> +	const auto &exposureInfo = controlsInfo.find(&controls::ExposureTime);
> +	if (exposureInfo != controlsInfo.end()) {
> +		int64_t exposureTimeRange[2] = {
> +			exposureInfo->second.min().get<int32_t>() * 1000,
> +			exposureInfo->second.max().get<int32_t>() * 1000,
> +		};
> +		staticMetadata_->addEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
> +					  &exposureTimeRange, 2);
> +	}
>  
>  	staticMetadata_->addEntry(ANDROID_SENSOR_ORIENTATION, &orientation_, 1);
>  
> -- 
> 2.29.2
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

Patch
diff mbox series

diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index a136f8e33843..de3ead275e91 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -888,11 +888,15 @@  const camera_metadata_t *CameraDevice::getStaticMetadata()
 					  &filterArr, 1);
 	}
 
-	int64_t exposureTimeRange[] = {
-		100000, 200000000,
-	};
-	staticMetadata_->addEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
-				  &exposureTimeRange, 2);
+	const auto &exposureInfo = controlsInfo.find(&controls::ExposureTime);
+	if (exposureInfo != controlsInfo.end()) {
+		int64_t exposureTimeRange[2] = {
+			exposureInfo->second.min().get<int32_t>() * 1000,
+			exposureInfo->second.max().get<int32_t>() * 1000,
+		};
+		staticMetadata_->addEntry(ANDROID_SENSOR_INFO_EXPOSURE_TIME_RANGE,
+					  &exposureTimeRange, 2);
+	}
 
 	staticMetadata_->addEntry(ANDROID_SENSOR_ORIENTATION, &orientation_, 1);