[libcamera-devel] [PATCH] android: camera_device: Set AE precapture trigger according to request

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Jan 27 11:32:50 CET 2021


Hi Paul,

Thank you for the patch.

On Wed, Jan 27, 2021 at 07:14:35PM +0900, Paul Elder wrote:
> Set the AE precapture triggler tag in the android result metadata
> according to what was passed in the request metadata.
> 
> This allows the following CTS test to pass:
> - android.hardware.camera2.cts.StillCaptureTest#testAePrecaptureTriggerCancelJpegCapture
> 
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> ---
>  src/android/camera_device.cpp | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
> index 82bf0d3a..941e89a8 100644
> --- a/src/android/camera_device.cpp
> +++ b/src/android/camera_device.cpp
> @@ -1806,6 +1806,13 @@ void CameraDevice::requestComplete(Request *request)
>  	uint64_t timestamp = buffers.begin()->second->metadata().timestamp;
>  	resultMetadata = getResultMetadata(descriptor, timestamp);
>  
> +	camera_metadata_ro_entry_t entry;
> +	/* \todo Handle IPA appropriately */
> +	int ret = descriptor->settings_.getEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER, &entry);
> +	if (ret)
> +		resultMetadata->updateEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
> +					    entry.data.u8, 1);

Should this be moved to getResultMetadata() and replace the existing
code that sets ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER ?

> +
>  	/* Handle any JPEG compression. */
>  	for (unsigned int i = 0; i < descriptor->numBuffers_; ++i) {
>  		CameraStream *cameraStream =
> @@ -1832,9 +1839,9 @@ void CameraDevice::requestComplete(Request *request)
>  			continue;
>  		}
>  
> -		int ret = cameraStream->process(*buffer, &mapped,
> -						descriptor->settings_,
> -						resultMetadata.get());
> +		ret = cameraStream->process(*buffer, &mapped,
> +					    descriptor->settings_,
> +					    resultMetadata.get());
>  		if (ret) {
>  			status = CAMERA3_BUFFER_STATUS_ERROR;
>  			continue;

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list