summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/device3
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2013-11-07 15:13:16 -0800
committerEino-Ville Talvala <etalvala@google.com>2013-11-12 10:24:42 -0800
commit184dfe4ea5e2ba33951bed2b1366007aee0ce3da (patch)
treeada678fb9d95fed7b4b25aead2615eaa4f003495 /services/camera/libcameraservice/device3
parentcaee8747b7df3b1119426594d4ba1c0e300ff6db (diff)
downloadframeworks_av-184dfe4ea5e2ba33951bed2b1366007aee0ce3da.zip
frameworks_av-184dfe4ea5e2ba33951bed2b1366007aee0ce3da.tar.gz
frameworks_av-184dfe4ea5e2ba33951bed2b1366007aee0ce3da.tar.bz2
Camera API2: Add support for partial result quirk
- Camera3Device: Include requestId in partial 3A results - FrameProcessorBase: Add support for partial result listeners - CameraDeviceClient: Listen and forward partial results to client Bug: 11115603 Change-Id: If1cc6bbc32932742ac142c058688761ebf6a8024
Diffstat (limited to 'services/camera/libcameraservice/device3')
-rw-r--r--services/camera/libcameraservice/device3/Camera3Device.cpp18
-rw-r--r--services/camera/libcameraservice/device3/Camera3Device.h3
2 files changed, 15 insertions, 6 deletions
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index cb72e0e..3dbc1b0 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -1405,7 +1405,8 @@ status_t Camera3Device::registerInFlight(int32_t frameNumber,
* Check if all 3A fields are ready, and send off a partial 3A-only result
* to the output frame queue
*/
-bool Camera3Device::processPartial3AQuirk(int32_t frameNumber,
+bool Camera3Device::processPartial3AQuirk(
+ int32_t frameNumber, int32_t requestId,
const CameraMetadata& partial) {
// Check if all 3A states are present
@@ -1452,10 +1453,10 @@ bool Camera3Device::processPartial3AQuirk(int32_t frameNumber,
if (!gotAllStates) return false;
- ALOGVV("%s: Camera %d: Frame %d: AF mode %d, AWB mode %d, "
+ ALOGVV("%s: Camera %d: Frame %d, Request ID %d: AF mode %d, AWB mode %d, "
"AF state %d, AE state %d, AWB state %d, "
"AF trigger %d, AE precapture trigger %d",
- __FUNCTION__, mId, frameNumber,
+ __FUNCTION__, mId, frameNumber, requestId,
afMode, awbMode,
afState, aeState, awbState,
afTriggerId, aeTriggerId);
@@ -1463,9 +1464,10 @@ bool Camera3Device::processPartial3AQuirk(int32_t frameNumber,
// Got all states, so construct a minimal result to send
// In addition to the above fields, this means adding in
// android.request.frameCount
+ // android.request.requestId
// android.quirks.partialResult
- const size_t kMinimal3AResultEntries = 7;
+ const size_t kMinimal3AResultEntries = 10;
Mutex::Autolock l(mOutputLock);
@@ -1479,6 +1481,11 @@ bool Camera3Device::processPartial3AQuirk(int32_t frameNumber,
return false;
}
+ if (!insert3AResult(min3AResult, ANDROID_REQUEST_ID,
+ &requestId, frameNumber)) {
+ return false;
+ }
+
static const uint8_t partialResult = ANDROID_QUIRKS_PARTIAL_RESULT_PARTIAL;
if (!insert3AResult(min3AResult, ANDROID_QUIRKS_PARTIAL_RESULT,
&partialResult, frameNumber)) {
@@ -1615,7 +1622,8 @@ void Camera3Device::processCaptureResult(const camera3_capture_result *result) {
if (!request.partialResultQuirk.haveSent3A) {
request.partialResultQuirk.haveSent3A =
processPartial3AQuirk(frameNumber,
- request.partialResultQuirk.collectedResult);
+ request.requestId,
+ request.partialResultQuirk.collectedResult);
}
}
}
diff --git a/services/camera/libcameraservice/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h
index 4a24a88..468f641 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.h
+++ b/services/camera/libcameraservice/device3/Camera3Device.h
@@ -491,7 +491,8 @@ class Camera3Device :
* and if so, queue up 3A-only result to the client. Returns true if 3A
* is sent.
*/
- bool processPartial3AQuirk(int32_t frameNumber, const CameraMetadata& partial);
+ bool processPartial3AQuirk(int32_t frameNumber, int32_t requestId,
+ const CameraMetadata& partial);
// Helpers for reading and writing 3A metadata into to/from partial results
template<typename T>