diff options
| author | Eino-Ville Talvala <etalvala@google.com> | 2012-10-05 11:22:13 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2012-10-05 11:22:13 -0700 |
| commit | e5f4024bad9875e96cefbe3fe81172d166d52154 (patch) | |
| tree | 2e3c71350fb4521e87f846bdd3fc6a45e57f01bf | |
| parent | 577ac8a74e8af7fcc7bc714874b8da21f57989b5 (diff) | |
| parent | 95069fefbdf54d87a624c2ac73727fce1c38545e (diff) | |
| download | frameworks_av-e5f4024bad9875e96cefbe3fe81172d166d52154.zip frameworks_av-e5f4024bad9875e96cefbe3fe81172d166d52154.tar.gz frameworks_av-e5f4024bad9875e96cefbe3fe81172d166d52154.tar.bz2 | |
am 95069fef: Camera2: Use the triggerAfWithAuto quirk
* commit '95069fefbdf54d87a624c2ac73727fce1c38545e':
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 7740df2..b05cdaf 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 a85500f..53ddf99 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; |
