diff options
| author | Eino-Ville Talvala <etalvala@google.com> | 2012-10-05 11:24:09 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2012-10-05 11:24:09 -0700 |
| commit | a148eabd26157cdd68035734b52f837c305c8a36 (patch) | |
| tree | 32d66a1d3ba94123f03a933a2577962ba5befd64 | |
| parent | 16e0e1f5568cb530416641f28835adf21f0ec88b (diff) | |
| parent | e5f4024bad9875e96cefbe3fe81172d166d52154 (diff) | |
| download | frameworks_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.cpp | 20 | ||||
| -rw-r--r-- | services/camera/libcameraservice/camera2/Parameters.cpp | 3 | ||||
| -rw-r--r-- | services/camera/libcameraservice/camera2/Parameters.h | 3 |
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; |
