|
|
@ -871,47 +871,52 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
// ACameraMetadata_getConstEntry(result, )
|
|
|
|
// ACameraMetadata_getConstEntry(result, )
|
|
|
|
ACameraMetadata_const_entry val = { 0 };
|
|
|
|
ACameraMetadata_const_entry val = { 0 };
|
|
|
|
camera_status_t status = ACAMERA_ERROR_BASE;
|
|
|
|
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_imagesCaptured == ~0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (m_params.autoExposure != 0)
|
|
|
|
unsigned long long ts = GetMicroTimeStamp();
|
|
|
|
|
|
|
|
if (ts - m_startTime >= m_params.focusTimeout)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
val = { 0 };
|
|
|
|
ALOGD("onCaptureCompleted Timeout for AF/AE And will Capture AFS=%u AES=%u", (unsigned int)mResult.afState, (unsigned int)mResult.aeState);
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AE_STATE, &val);
|
|
|
|
m_imagesCaptured = 0;
|
|
|
|
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;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
if (afSupported && (m_params.autoFocus != 0))
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
val = { 0 };
|
|
|
|
if (m_params.autoExposure != 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)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
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();
|
|
|
|
ALOGD("onCaptureCompleted AF_STATE=%u", (unsigned int)mResult.afState);
|
|
|
|
if (ts - m_startTime >= m_params.focusTimeout)
|
|
|
|
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;
|
|
|
|
m_imagesCaptured = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
m_imagesCaptured = 0;
|
|
|
|
m_imagesCaptured = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -920,8 +925,6 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val = { 0 };
|
|
|
|
val = { 0 };
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_EXPOSURE_TIME, &val);
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_EXPOSURE_TIME, &val);
|
|
|
|
int64_t exTime = (status == ACAMERA_OK) ? val.data.i64[0] : -1;
|
|
|
|
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);
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AF_STATE, &val);
|
|
|
|
mResult.afState = *(val.data.u8);
|
|
|
|
mResult.afState = *(val.data.u8);
|
|
|
|
|
|
|
|
|
|
|
|
ALOGD("onCaptureCompleted AF_STATE=%u", (unsigned int)afState);
|
|
|
|
ALOGD("onCaptureCompleted AFS=%u", (unsigned int)mResult.afState);
|
|
|
|
|
|
|
|
|
|
|
|
val = {0};
|
|
|
|
val = {0};
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_SENSITIVITY, &val);
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_SENSITIVITY, &val);
|
|
|
|