|
|
@ -693,7 +693,18 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
m_imagesCaptured = ~0;
|
|
|
|
m_imagesCaptured = ~0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t aeLockOff = ACAMERA_CONTROL_AE_LOCK_OFF;
|
|
|
|
if (aeLockAvailable)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uint8_t aeLock = ACAMERA_CONTROL_AE_LOCK_ON;
|
|
|
|
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_LOCK, 1,&aeLock);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "Try to Lock AE");
|
|
|
|
|
|
|
|
mResult.aeLockSetted = 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "AE_Lock Not Supported");
|
|
|
|
|
|
|
|
}
|
|
|
|
// ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_LOCK, 1, &aeLockOff);
|
|
|
|
// ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_LOCK, 1, &aeLockOff);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
@ -716,10 +727,17 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
// TODO:
|
|
|
|
// TODO:
|
|
|
|
// m_imagesCaptured = 0;
|
|
|
|
// m_imagesCaptured = 0;
|
|
|
|
|
|
|
|
|
|
|
|
// if (awbSupported)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// uint8_t awbMode = ACAMERA_CONTROL_AWB_MODE_AUTO;
|
|
|
|
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AWB_MODE, 1, &awbMode);
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AWB_MODE, 1, &awbMode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ((awbMode == ACAMERA_CONTROL_AWB_MODE_AUTO) && awbLockAvailable)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uint8_t awbLock = ACAMERA_CONTROL_AWB_LOCK_ON;
|
|
|
|
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AWB_LOCK, 1, &awbLock);
|
|
|
|
|
|
|
|
mResult.awbLockSetted = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "Try to Lock AWB AWBS=%u", (unsigned int)mResult.awbState);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
#if 0
|
|
|
@ -1219,14 +1237,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AWB_MODE, &val);
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AWB_MODE, &val);
|
|
|
|
mResult.awbMode = (status == ACAMERA_OK) ? *(val.data.u8) : ACAMERA_CONTROL_AWB_MODE_OFF;
|
|
|
|
mResult.awbMode = (status == ACAMERA_OK) ? *(val.data.u8) : ACAMERA_CONTROL_AWB_MODE_OFF;
|
|
|
|
|
|
|
|
|
|
|
|
ALOGW("3ASTATE: AES=%u AWBS=%u AFS=%u", (uint32_t)mResult.aeState, (uint32_t)mResult.awbState, (uint32_t)mResult.afState);
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "3ASTATE: AES=%u AWBS=%u AFS=%u", (uint32_t)mResult.aeState, (uint32_t)mResult.awbState, (uint32_t)mResult.afState);
|
|
|
|
|
|
|
|
|
|
|
|
if ((mResult.awbMode == ACAMERA_CONTROL_AWB_MODE_AUTO) && awbLockAvailable && !mResult.awbLockSetted && mResult.awbState == ACAMERA_CONTROL_AWB_STATE_CONVERGED)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uint8_t awbLock = ACAMERA_CONTROL_AWB_LOCK_ON;
|
|
|
|
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AWB_LOCK, 1, &awbLock);
|
|
|
|
|
|
|
|
mResult.awbLockSetted = 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (m_params.autoExposure != 0)
|
|
|
|
if (m_params.autoExposure != 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1234,13 +1245,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
{
|
|
|
|
{
|
|
|
|
uint8_t aePrecatureTrigger = ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_START;
|
|
|
|
uint8_t aePrecatureTrigger = ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_START;
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER, 1, &aePrecatureTrigger);
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER, 1, &aePrecatureTrigger);
|
|
|
|
}
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "PreCapture AES=%u", (unsigned int)mResult.aeState);
|
|
|
|
|
|
|
|
|
|
|
|
if (aeLockAvailable && !mResult.aeLockSetted && (mResult.aeState == ACAMERA_CONTROL_AE_STATE_CONVERGED || mResult.aeState == ACAMERA_CONTROL_AE_STATE_FLASH_REQUIRED))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uint8_t aeLock = ACAMERA_CONTROL_AE_LOCK_ON;
|
|
|
|
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_LOCK, 1,&aeLock);
|
|
|
|
|
|
|
|
mResult.aeLockSetted = 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1276,12 +1281,16 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (awbMode == ACAMERA_CONTROL_AWB_MODE_AUTO)
|
|
|
|
if (awbMode == ACAMERA_CONTROL_AWB_MODE_AUTO)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (m_params.wait3ALocked)
|
|
|
|
if (awbLockAvailable && m_params.wait3ALocked)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (mResult.awbState != ACAMERA_CONTROL_AWB_STATE_LOCKED)
|
|
|
|
if (mResult.awbState != ACAMERA_CONTROL_AWB_STATE_LOCKED)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "AWB Locked");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1289,17 +1298,25 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "AWB CONVERGED Or Locked");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (m_params.autoExposure != 0)
|
|
|
|
if (m_params.autoExposure != 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (m_params.wait3ALocked)
|
|
|
|
if (aeLockAvailable && m_params.wait3ALocked)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (mResult.aeState != ACAMERA_CONTROL_AE_STATE_LOCKED)
|
|
|
|
if (mResult.aeState != ACAMERA_CONTROL_AE_STATE_LOCKED)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "AE Locked");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1307,6 +1324,10 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "AE CONVERGED Or Locked");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1328,11 +1349,13 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
if (mResult.afState == ACAMERA_CONTROL_AF_STATE_PASSIVE_FOCUSED || mResult.afState == ACAMERA_CONTROL_AF_STATE_FOCUSED_LOCKED)
|
|
|
|
if (mResult.afState == ACAMERA_CONTROL_AF_STATE_PASSIVE_FOCUSED || mResult.afState == ACAMERA_CONTROL_AF_STATE_FOCUSED_LOCKED)
|
|
|
|
// if (afState != ACAMERA_CONTROL_AF_STATE_INACTIVE)
|
|
|
|
// if (afState != ACAMERA_CONTROL_AF_STATE_INACTIVE)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "AF Enabled And Focused");
|
|
|
|
m_imagesCaptured = 0;
|
|
|
|
m_imagesCaptured = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "AF Not Supported Or AF Not Enabled");
|
|
|
|
m_imagesCaptured = 0;
|
|
|
|
m_imagesCaptured = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|