diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2013-07-18 19:15:17 -0700 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2013-07-18 19:36:00 -0700 |
commit | 46910bdc57c35ac36bd4adcbb76f4f3a590e3f21 (patch) | |
tree | 61f2b1567b83c436650e098f89527ec261a3d9aa /services/camera/libcameraservice/camera2/FrameProcessor.h | |
parent | a2520db02bead68d4980783c41500ae96511bdf8 (diff) | |
download | frameworks_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.h | 19 |
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); |