[libcamera-devel,05/12] android: camera_device: Report EXPOSURE_TIME
diff mbox series

Message ID 20210105190522.682324-6-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
Instead of reporting a fake value in the dynamic metadata for the
EXPOSURE_TIME control, use the value provided by the pipeline.

The metadata is only meaningfull in FULL mode.

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

Comments

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

Thank you for the patch.

On Tue, Jan 05, 2021 at 08:05:15PM +0100, Jacopo Mondi wrote:
> Instead of reporting a fake value in the dynamic metadata for the
> EXPOSURE_TIME control, use the value provided by the pipeline.
> 
> The metadata is only meaningfull in FULL mode.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
> ---
>  src/android/camera_device.cpp | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index de3ead275e91..e6cee75581f2 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -1871,11 +1871,6 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
>  	resultMetadata->addEntry(ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,
>  				 &rolling_shutter_skew, 1);
>  
> -	/* 16.6 msec */
> -	const int64_t exposure_time = 16600000;
> -	resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME,
> -				 &exposure_time, 1);
> -
>  	const uint8_t lens_shading_map_mode =
>  				ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;
>  	resultMetadata->addEntry(ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
> @@ -1893,6 +1888,12 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
>  					 &pipeline_depth, 1);
>  	}
>  
> +	if (metadata.contains(controls::ExposureTime)) {
> +		int32_t exposure = metadata.get(controls::ExposureTime);
> +		resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME,
> +					 &exposure, 1);
> +	}

It's a small patch, it may seem trivial, but lots of effort was required
to get to this point. It's very nice to see pieces falling into place,
good work !

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

> +
>  	/*
>  	 * Return the result metadata pack even is not valid: get() will return
>  	 * nullptr.
Niklas Söderlund Jan. 18, 2021, 3:21 p.m. UTC | #2
Hi Jacopo,

Thanks for your patch.

On 2021-01-05 20:05:15 +0100, Jacopo Mondi wrote:
> Instead of reporting a fake value in the dynamic metadata for the
> EXPOSURE_TIME control, use the value provided by the pipeline.
> 
> The metadata is only meaningfull in FULL mode.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>

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

> ---
>  src/android/camera_device.cpp | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index de3ead275e91..e6cee75581f2 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -1871,11 +1871,6 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
>  	resultMetadata->addEntry(ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,
>  				 &rolling_shutter_skew, 1);
>  
> -	/* 16.6 msec */
> -	const int64_t exposure_time = 16600000;
> -	resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME,
> -				 &exposure_time, 1);
> -
>  	const uint8_t lens_shading_map_mode =
>  				ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;
>  	resultMetadata->addEntry(ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
> @@ -1893,6 +1888,12 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
>  					 &pipeline_depth, 1);
>  	}
>  
> +	if (metadata.contains(controls::ExposureTime)) {
> +		int32_t exposure = metadata.get(controls::ExposureTime);
> +		resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME,
> +					 &exposure, 1);
> +	}
> +
>  	/*
>  	 * Return the result metadata pack even is not valid: get() will return
>  	 * nullptr.
> -- 
> 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 de3ead275e91..e6cee75581f2 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -1871,11 +1871,6 @@  CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
 	resultMetadata->addEntry(ANDROID_SENSOR_ROLLING_SHUTTER_SKEW,
 				 &rolling_shutter_skew, 1);
 
-	/* 16.6 msec */
-	const int64_t exposure_time = 16600000;
-	resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME,
-				 &exposure_time, 1);
-
 	const uint8_t lens_shading_map_mode =
 				ANDROID_STATISTICS_LENS_SHADING_MAP_MODE_OFF;
 	resultMetadata->addEntry(ANDROID_STATISTICS_LENS_SHADING_MAP_MODE,
@@ -1893,6 +1888,12 @@  CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
 					 &pipeline_depth, 1);
 	}
 
+	if (metadata.contains(controls::ExposureTime)) {
+		int32_t exposure = metadata.get(controls::ExposureTime);
+		resultMetadata->addEntry(ANDROID_SENSOR_EXPOSURE_TIME,
+					 &exposure, 1);
+	}
+
 	/*
 	 * Return the result metadata pack even is not valid: get() will return
 	 * nullptr.