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

Commit 33f5b8c4 authored by Emilian Peev's avatar Emilian Peev
Browse files

Camera: Don't skip ZSL frames for fixed focus sensors

ZSL frames were getting completely discarded in case of fixed
focus camera sensors. This can have performance impact for
legacy camera clients.

Bug: 80482772
Test: Manual using application,
Camera CTS
Change-Id: Ic98c8624226e960cffdcbfcee0b3e34adaf720fb
parent 7e821462
Loading
Loading
Loading
Loading
+18 −22
Original line number Diff line number Diff line
@@ -802,15 +802,10 @@ nsecs_t ZslProcessor::getCandidateTimestampLocked(size_t* metadataIdx) const {
                            __FUNCTION__);
                    continue;
                }
                uint8_t afMode = entry.data.u8[0];
                if (afMode == ANDROID_CONTROL_AF_MODE_OFF) {
                    // Skip all the ZSL buffer for manual AF mode, as we don't really
                    // know the af state.
                    continue;
                }

                // Check AF state if device has focuser and focus mode isn't fixed
                if (mHasFocuser && !isFixedFocusMode(afMode)) {
                if (mHasFocuser) {
                    uint8_t afMode = entry.data.u8[0];
                    if (!isFixedFocusMode(afMode)) {
                        // Make sure the candidate frame has good focus.
                        entry = frame.find(ANDROID_CONTROL_AF_STATE);
                        if (entry.count == 0) {
@@ -822,11 +817,12 @@ nsecs_t ZslProcessor::getCandidateTimestampLocked(size_t* metadataIdx) const {
                        if (afState != ANDROID_CONTROL_AF_STATE_PASSIVE_FOCUSED &&
                                afState != ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED &&
                                afState != ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED) {
                        ALOGVV("%s: ZSL queue frame AF state is %d is not good for capture, skip it",
                                __FUNCTION__, afState);
                            ALOGVV("%s: ZSL queue frame AF state is %d is not good for capture,"
                                    " skip it", __FUNCTION__, afState);
                            continue;
                        }
                    }
                }

                minTimestamp = frameTimestamp;
                idx = j;