diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2013-10-11 09:51:09 -0700 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2013-11-06 18:22:22 -0800 |
commit | fd6ecdd39bd83ea020f78b425e96310380d66c35 (patch) | |
tree | 74b1aaa8fdcbf75681f72fb93b96db4ab48fa34c /services/camera/libcameraservice/common | |
parent | 48b6cd98b23b2cf9dee88f075f7575ecb5aaf545 (diff) | |
download | frameworks_av-fd6ecdd39bd83ea020f78b425e96310380d66c35.zip frameworks_av-fd6ecdd39bd83ea020f78b425e96310380d66c35.tar.gz frameworks_av-fd6ecdd39bd83ea020f78b425e96310380d66c35.tar.bz2 |
Camera HAL3/API1: Add support for the partial result quirk.
- Camera2Client:
- Detect partial result quirk
- Camera3Device:
- Accumulate all partial results together
- Fire off 3A-only result once all 3A states are available
- FrameProcessorBase:
- Filter out partials, don't send to listeners
- FrameProcessor:
- Skip face detect on partials
- Make sure to only handle a 3A update for a given frame once
- Trigger AF notifications when AF mode or trigger changes, to
properly detect all AF transitions.
Bug: 11115603
Change-Id: Iea8aa73c568701562a46071f7ea100624251d10b
Diffstat (limited to 'services/camera/libcameraservice/common')
-rw-r--r-- | services/camera/libcameraservice/common/FrameProcessorBase.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/common/FrameProcessorBase.cpp b/services/camera/libcameraservice/common/FrameProcessorBase.cpp index 52906ee..b2c9b33 100644 --- a/services/camera/libcameraservice/common/FrameProcessorBase.cpp +++ b/services/camera/libcameraservice/common/FrameProcessorBase.cpp @@ -145,6 +145,15 @@ status_t FrameProcessorBase::processListeners(const CameraMetadata &frame, ATRACE_CALL(); camera_metadata_ro_entry_t entry; + // Quirks: Don't deliver partial results to listeners + entry = frame.find(ANDROID_QUIRKS_PARTIAL_RESULT); + if (entry.count != 0 && + entry.data.u8[0] == ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL) { + ALOGV("%s: Camera %d: Not forwarding partial result to listeners", + __FUNCTION__, device->getId()); + return OK; + } + entry = frame.find(ANDROID_REQUEST_ID); if (entry.count == 0) { ALOGE("%s: Camera %d: Error reading frame id", |