|
|
|
@ -802,29 +802,25 @@ 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)) {
|
|
|
|
|
// Make sure the candidate frame has good focus.
|
|
|
|
|
entry = frame.find(ANDROID_CONTROL_AF_STATE);
|
|
|
|
|
if (entry.count == 0) {
|
|
|
|
|
ALOGW("%s: ZSL queue frame has no AF state field!",
|
|
|
|
|
__FUNCTION__);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
uint8_t afState = entry.data.u8[0];
|
|
|
|
|
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);
|
|
|
|
|
continue;
|
|
|
|
|
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) {
|
|
|
|
|
ALOGW("%s: ZSL queue frame has no AF state field!",
|
|
|
|
|
__FUNCTION__);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
uint8_t afState = entry.data.u8[0];
|
|
|
|
|
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);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|