[libcamera-devel] [PATCH v3] android: camera_device: Set AE precapture trigger according to request
Paul Elder
paul.elder at ideasonboard.com
Fri Jan 29 07:02:55 CET 2021
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>
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
---
Changes in v3:
- fix updateEntry to addEntry
- move camera_metadata_ro_entry_t entry to top of the function
Changes in v2:
- move setting the tag to getResultMetadata()
---
src/android/camera_device.cpp | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 82bf0d3a..741dc8cf 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -1927,6 +1927,7 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
int64_t timestamp)
{
const ControlList &metadata = descriptor->request_->metadata();
+ camera_metadata_ro_entry_t entry;
/*
* \todo Keep this in sync with the actual number of entries.
@@ -1965,8 +1966,10 @@ 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);
resultMetadata->addEntry(ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER,
- &value, 1);
+ ret ? entry.data.u8 : &value, 1);
value = ANDROID_CONTROL_AE_STATE_CONVERGED;
resultMetadata->addEntry(ANDROID_CONTROL_AE_STATE, &value, 1);
@@ -2010,8 +2013,7 @@ CameraDevice::getResultMetadata(Camera3RequestDescriptor *descriptor,
value = ANDROID_FLASH_STATE_UNAVAILABLE;
resultMetadata->addEntry(ANDROID_FLASH_STATE, &value, 1);
- camera_metadata_ro_entry_t entry;
- int ret = descriptor->settings_.getEntry(ANDROID_LENS_APERTURE, &entry);
+ ret = descriptor->settings_.getEntry(ANDROID_LENS_APERTURE, &entry);
if (ret)
resultMetadata->addEntry(ANDROID_LENS_APERTURE, entry.data.f, 1);
--
2.27.0
More information about the libcamera-devel
mailing list