summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/camera2/FrameProcessor.h
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2013-07-18 19:15:17 -0700
committerEino-Ville Talvala <etalvala@google.com>2013-07-18 19:36:00 -0700
commit46910bdc57c35ac36bd4adcbb76f4f3a590e3f21 (patch)
tree61f2b1567b83c436650e098f89527ec261a3d9aa /services/camera/libcameraservice/camera2/FrameProcessor.h
parenta2520db02bead68d4980783c41500ae96511bdf8 (diff)
downloadframeworks_av-46910bdc57c35ac36bd4adcbb76f4f3a590e3f21.zip
frameworks_av-46910bdc57c35ac36bd4adcbb76f4f3a590e3f21.tar.gz
frameworks_av-46910bdc57c35ac36bd4adcbb76f4f3a590e3f21.tar.bz2
Camera2/3: Fix deadlock when starting recording before preview.
Move 3A notification synthesis for HAL3 devices from Camera3Device::processCaptureResult to Camera2Client's FrameProcessor. This will ensure that calls to processCaptureResult from HAL can never block on Camera2Client internal mutexes. Bug: 9923891 Change-Id: I5184649bf45c0807babe6b8c0e1239e959cd3480
Diffstat (limited to 'services/camera/libcameraservice/camera2/FrameProcessor.h')
-rw-r--r--services/camera/libcameraservice/camera2/FrameProcessor.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/camera2/FrameProcessor.h b/services/camera/libcameraservice/camera2/FrameProcessor.h
index 27ed8f6..f480c55 100644
--- a/services/camera/libcameraservice/camera2/FrameProcessor.h
+++ b/services/camera/libcameraservice/camera2/FrameProcessor.h
@@ -44,6 +44,9 @@ class FrameProcessor : public ProFrameProcessor {
private:
wp<Camera2Client> mClient;
+
+ bool mSynthesize3ANotify;
+
int mLastFrameNumberOfFaces;
void processNewFrames(const sp<Camera2Client> &client);
@@ -54,6 +57,22 @@ class FrameProcessor : public ProFrameProcessor {
status_t processFaceDetect(const CameraMetadata &frame,
const sp<Camera2Client> &client);
+ // Send 3A state change notifications to client based on frame metadata
+ status_t process3aState(const CameraMetadata &frame,
+ const sp<Camera2Client> &client);
+
+ struct AlgState {
+ camera_metadata_enum_android_control_ae_state aeState;
+ camera_metadata_enum_android_control_af_state afState;
+ camera_metadata_enum_android_control_awb_state awbState;
+
+ AlgState() :
+ aeState(ANDROID_CONTROL_AE_STATE_INACTIVE),
+ afState(ANDROID_CONTROL_AF_STATE_INACTIVE),
+ awbState(ANDROID_CONTROL_AWB_STATE_INACTIVE) {
+ }
+ } m3aState;
+
// Emit FaceDetection event to java if faces changed
void callbackFaceDetection(sp<Camera2Client> client,
const camera_frame_metadata &metadata);