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
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 @@
* 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 @@
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 @@
// 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 @@
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 @@
if (!request.partialResultQuirk.haveSent3A) {
request.partialResultQuirk.haveSent3A =
processPartial3AQuirk(frameNumber,
- request.partialResultQuirk.collectedResult);
+ request.requestId,
+ request.partialResultQuirk.collectedResult);
}
}
}