Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c843702 authored by Eino-Ville Talvala's avatar Eino-Ville Talvala Committed by Android (Google) Code Review
Browse files

Camera2: Use the triggerAfWithAuto quirk

When this quirk is set, and a scene mode is enabled, do AF calls with
AF mode AUTO instead of whatever the scene more override AF mode is.

Bug: 7159577
Change-Id: I3ea6b8386abc0968047fc9bba3a35c5db5bdcfd3
parent 4c9eb718
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -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();

+3 −0
Original line number Diff line number Diff line
@@ -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));
+3 −0
Original line number Diff line number Diff line
@@ -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;