summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2012-10-05 11:24:09 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-10-05 11:24:09 -0700
commita148eabd26157cdd68035734b52f837c305c8a36 (patch)
tree32d66a1d3ba94123f03a933a2577962ba5befd64
parent16e0e1f5568cb530416641f28835adf21f0ec88b (diff)
parente5f4024bad9875e96cefbe3fe81172d166d52154 (diff)
downloadframeworks_av-a148eabd26157cdd68035734b52f837c305c8a36.zip
frameworks_av-a148eabd26157cdd68035734b52f837c305c8a36.tar.gz
frameworks_av-a148eabd26157cdd68035734b52f837c305c8a36.tar.bz2
am e5f4024b: am 95069fef: Camera2: Use the triggerAfWithAuto quirk
* commit 'e5f4024bad9875e96cefbe3fe81172d166d52154': Camera2: Use the triggerAfWithAuto quirk
-rw-r--r--services/camera/libcameraservice/Camera2Client.cpp20
-rw-r--r--services/camera/libcameraservice/camera2/Parameters.cpp3
-rw-r--r--services/camera/libcameraservice/camera2/Parameters.h3
3 files changed, 26 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp
index 9bcaef1..ed4567e 100644
--- a/services/camera/libcameraservice/Camera2Client.cpp
+++ b/services/camera/libcameraservice/Camera2Client.cpp
@@ -956,6 +956,16 @@ status_t Camera2Client::autoFocus() {
return INVALID_OPERATION;
}
+ if (l.mParameters.quirks.triggerAfWithAuto &&
+ l.mParameters.sceneMode != ANDROID_CONTROL_SCENE_MODE_UNSUPPORTED &&
+ l.mParameters.focusMode != Parameters::FOCUS_MODE_AUTO) {
+ ALOGV("%s: Quirk: Switching from focusMode %d to AUTO",
+ __FUNCTION__, l.mParameters.focusMode);
+ l.mParameters.shadowFocusMode = l.mParameters.focusMode;
+ l.mParameters.focusMode = Parameters::FOCUS_MODE_AUTO;
+ updateRequests(l.mParameters);
+ }
+
l.mParameters.currentAfTriggerId = ++l.mParameters.afTriggerCounter;
triggerId = l.mParameters.currentAfTriggerId;
}
@@ -977,6 +987,16 @@ status_t Camera2Client::cancelAutoFocus() {
{
SharedParameters::Lock l(mParameters);
triggerId = ++l.mParameters.afTriggerCounter;
+
+ // When using triggerAfWithAuto quirk, may need to reset focus mode to
+ // the real state at this point.
+ if (l.mParameters.shadowFocusMode != Parameters::FOCUS_MODE_INVALID) {
+ ALOGV("%s: Quirk: Restoring focus mode to %d", __FUNCTION__,
+ l.mParameters.shadowFocusMode);
+ l.mParameters.focusMode = l.mParameters.shadowFocusMode;
+ l.mParameters.shadowFocusMode = Parameters::FOCUS_MODE_INVALID;
+ updateRequests(l.mParameters);
+ }
}
syncWithDevice();
diff --git a/services/camera/libcameraservice/camera2/Parameters.cpp b/services/camera/libcameraservice/camera2/Parameters.cpp
index 687d7cf..b623d1a 100644
--- a/services/camera/libcameraservice/camera2/Parameters.cpp
+++ b/services/camera/libcameraservice/camera2/Parameters.cpp
@@ -607,6 +607,7 @@ status_t Parameters::initialize(const CameraMetadata *info) {
params.set(CameraParameters::KEY_SUPPORTED_FOCUS_MODES,
supportedFocusModes);
}
+ shadowFocusMode = FOCUS_MODE_INVALID;
camera_metadata_ro_entry_t max3aRegions =
staticInfo(ANDROID_CONTROL_MAX_REGIONS, 1, 1);
@@ -1363,6 +1364,8 @@ status_t Parameters::set(const String8& paramString) {
}
}
}
+ // Always reset shadow focus mode to avoid reverting settings
+ shadowFocusMode = FOCUS_MODE_INVALID;
// Update in case of override
newParams.set(CameraParameters::KEY_FOCUS_MODE,
focusModeEnumToString(validatedParams.focusMode));
diff --git a/services/camera/libcameraservice/camera2/Parameters.h b/services/camera/libcameraservice/camera2/Parameters.h
index 6c14a5b..2408e98 100644
--- a/services/camera/libcameraservice/camera2/Parameters.h
+++ b/services/camera/libcameraservice/camera2/Parameters.h
@@ -88,6 +88,9 @@ struct Parameters {
FOCUS_MODE_INVALID = -1
} focusMode;
+ // For use with triggerAfWithAuto quirk
+ focusMode_t shadowFocusMode;
+
struct Area {
int left, top, right, bottom;
int weight;