Camera: Override AE pre-capture trigger cancel
CameraHal version 3.2 doesn't support cancel AE pre-capture
trigger. Camera request metadata that contains this value
needs to be overriden respectively. The corresponding results
also require the same kind of modification.
Bug: 34392075
Test: runtest -x
cts/tests/camera/src/android/hardware/camera2/cts/StillCaptureTest.java
-m testAePrecaptureTriggerCancelJpegCapture
Change-Id: If8bcf7e97ca8691cf890d5d6306d49dc3ddd087a
diff --git a/camera/device/3.2/default/CameraDeviceSession.h b/camera/device/3.2/default/CameraDeviceSession.h
index 51e978e..c08ed90 100644
--- a/camera/device/3.2/default/CameraDeviceSession.h
+++ b/camera/device/3.2/default/CameraDeviceSession.h
@@ -111,8 +111,17 @@
// Set by CameraDevice (when external camera is disconnected)
bool mDisconnected = false;
+ struct AETriggerCancelOverride {
+ bool applyAeLock;
+ uint8_t aeLock;
+ bool applyAePrecaptureTrigger;
+ uint8_t aePrecaptureTrigger;
+ };
+
camera3_device_t* mDevice;
uint32_t mDeviceVersion;
+ bool mIsAELockAvailable;
+ uint32_t mNumPartialResults;
// Stream ID -> Camera3Stream cache
std::map<int, Camera3Stream> mStreamMap;
@@ -120,6 +129,10 @@
// (streamID, frameNumber) -> inflight buffer cache
std::map<std::pair<int, uint32_t>, camera3_stream_buffer_t> mInflightBuffers;
+ // (frameNumber, AETriggerOverride) -> inflight request AETriggerOverrides
+ std::map<uint32_t, AETriggerCancelOverride> mInflightAETriggerOverrides;
+ ::android::hardware::camera::common::V1_0::helper::CameraMetadata mOverridenResult;
+
// buffers currently ciculating between HAL and camera service
// key: bufferId sent via HIDL interface
// value: imported buffer_handle_t
@@ -262,6 +275,15 @@
android_dataspace mapToLegacyDataspace(
android_dataspace dataSpace) const;
+ bool handleAePrecaptureCancelRequestLocked(
+ const camera3_capture_request_t &halRequest,
+ android::hardware::camera::common::V1_0::helper::CameraMetadata *settings /*out*/,
+ AETriggerCancelOverride *override /*out*/);
+
+ void overrideResultForPrecaptureCancelLocked(
+ const AETriggerCancelOverride &aeTriggerCancelOverride,
+ ::android::hardware::camera::common::V1_0::helper::CameraMetadata *settings /*out*/);
+
Status processOneCaptureRequest(const CaptureRequest& request);
/**
* Static callback forwarding methods from HAL to instance