summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/common
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2013-10-11 09:51:09 -0700
committerEino-Ville Talvala <etalvala@google.com>2013-11-06 18:22:22 -0800
commitfd6ecdd39bd83ea020f78b425e96310380d66c35 (patch)
tree74b1aaa8fdcbf75681f72fb93b96db4ab48fa34c /services/camera/libcameraservice/common
parent48b6cd98b23b2cf9dee88f075f7575ecb5aaf545 (diff)
downloadframeworks_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.cpp9
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",