diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index 0e654359..1fd81c1e 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -871,47 +871,52 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque // ACameraMetadata_getConstEntry(result, ) ACameraMetadata_const_entry val = { 0 }; camera_status_t status = ACAMERA_ERROR_BASE; - uint8_t afState = 0; + mResult.afState = ACAMERA_CONTROL_AF_STATE_INACTIVE; + + val = { 0 }; + status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AE_STATE, &val); + mResult.aeState = (status == ACAMERA_OK) ? *(val.data.u8) : ACAMERA_CONTROL_AE_STATE_INACTIVE; + + if (afSupported && (m_params.autoFocus != 0)) + { + val = { 0 }; + status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AF_STATE, &val); + mResult.afState = *(val.data.u8); + } if (m_imagesCaptured == ~0) { - if (m_params.autoExposure != 0) + unsigned long long ts = GetMicroTimeStamp(); + if (ts - m_startTime >= m_params.focusTimeout) { - val = { 0 }; - status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AE_STATE, &val); - mResult.aeState = (status == ACAMERA_OK) ? val.data.u8[0] : ACAMERA_CONTROL_AE_STATE_INACTIVE; - if (mResult.aeState == ACAMERA_CONTROL_AE_STATE_PRECAPTURE) - { - uint8_t aePrecatureTrigger = ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_START; - status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER, 1, &aePrecatureTrigger); - return; - } + ALOGD("onCaptureCompleted Timeout for AF/AE And will Capture AFS=%u AES=%u", (unsigned int)mResult.afState, (unsigned int)mResult.aeState); + m_imagesCaptured = 0; } - - if (afSupported && (m_params.autoFocus != 0)) + else { - val = { 0 }; - status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AF_STATE, &val); - afState = *(val.data.u8); - ALOGD("onCaptureCompleted AF_STATE=%u", (unsigned int)afState); - if (afState == ACAMERA_CONTROL_AF_STATE_PASSIVE_FOCUSED || afState == ACAMERA_CONTROL_AF_STATE_FOCUSED_LOCKED) - // if (afState != ACAMERA_CONTROL_AF_STATE_INACTIVE) + if (m_params.autoExposure != 0) { - m_imagesCaptured = 0; + if (mResult.aeState == ACAMERA_CONTROL_AE_STATE_SEARCHING || mResult.aeState == ACAMERA_CONTROL_AE_STATE_PRECAPTURE) + { + uint8_t aePrecatureTrigger = ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_START; + status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER, 1, &aePrecatureTrigger); + return; + } } - else + + if (afSupported && (m_params.autoFocus != 0)) { - unsigned long long ts = GetMicroTimeStamp(); - if (ts - m_startTime >= m_params.focusTimeout) + ALOGD("onCaptureCompleted AF_STATE=%u", (unsigned int)mResult.afState); + if (mResult.afState == ACAMERA_CONTROL_AF_STATE_PASSIVE_FOCUSED || mResult.afState == ACAMERA_CONTROL_AF_STATE_FOCUSED_LOCKED) + // if (afState != ACAMERA_CONTROL_AF_STATE_INACTIVE) { - ALOGD("onCaptureCompleted Timeout for AutoFocus And will Capture AF_STATE=%u", (unsigned int)afState); m_imagesCaptured = 0; } } - } - else - { - m_imagesCaptured = 0; + else + { + m_imagesCaptured = 0; + } } } @@ -920,8 +925,6 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque return; } - - val = { 0 }; status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_EXPOSURE_TIME, &val); int64_t exTime = (status == ACAMERA_OK) ? val.data.i64[0] : -1; @@ -949,7 +952,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AF_STATE, &val); mResult.afState = *(val.data.u8); - ALOGD("onCaptureCompleted AF_STATE=%u", (unsigned int)afState); + ALOGD("onCaptureCompleted AFS=%u", (unsigned int)mResult.afState); val = {0}; status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_SENSITIVITY, &val);