|
|
|
@ -118,6 +118,7 @@ NdkCamera::NdkCamera(int32_t width, int32_t height, const NdkCamera::CAMERA_PARA
|
|
|
|
|
m_imagesCaptured = ~0;
|
|
|
|
|
|
|
|
|
|
afSupported = false;
|
|
|
|
|
awbMode = ACAMERA_CONTROL_AWB_MODE_AUTO;
|
|
|
|
|
aeLockAvailable = false;
|
|
|
|
|
awbLockAvailable = false;
|
|
|
|
|
|
|
|
|
@ -275,7 +276,7 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
ACameraMetadata_const_entry e = {0};
|
|
|
|
|
camera_status_t status = ACameraMetadata_getConstEntry(camera_metadata,ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS, &e);
|
|
|
|
|
status = ACameraMetadata_getConstEntry(camera_metadata,ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS, &e);
|
|
|
|
|
// format of the data: format, width, height, input?, type int32
|
|
|
|
|
|
|
|
|
|
// DisplayDimension foundRes(4000, 4000);
|
|
|
|
@ -383,9 +384,9 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
|
{
|
|
|
|
|
for (int idx = 0; idx < e.count; idx++)
|
|
|
|
|
{
|
|
|
|
|
if (ACAMERA_CONTROL_AWB_MODE_AUTO == e.data.u8[idx])
|
|
|
|
|
if (m_params.awbMode == e.data.u8[idx])
|
|
|
|
|
{
|
|
|
|
|
awbSupported = true;
|
|
|
|
|
awbMode = m_params.awbMode;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
// unsigned int m = e.data.u8[idx];
|
|
|
|
@ -592,8 +593,8 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
|
uint8_t edgeMode = ACAMERA_EDGE_MODE_FAST;
|
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_EDGE_MODE, 1, &edgeMode);
|
|
|
|
|
|
|
|
|
|
if (afSupported && m_params.autoFocus) {
|
|
|
|
|
|
|
|
|
|
if (afSupported && m_params.autoFocus)
|
|
|
|
|
{
|
|
|
|
|
if (!m_params.zoom)
|
|
|
|
|
{
|
|
|
|
|
if (maxRegions[2] > 0)
|
|
|
|
@ -715,9 +716,9 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
|
// TODO:
|
|
|
|
|
// m_imagesCaptured = 0;
|
|
|
|
|
|
|
|
|
|
if (awbSupported)
|
|
|
|
|
// if (awbSupported)
|
|
|
|
|
{
|
|
|
|
|
uint8_t awbMode = ACAMERA_CONTROL_AWB_MODE_AUTO;
|
|
|
|
|
// uint8_t awbMode = ACAMERA_CONTROL_AWB_MODE_AUTO;
|
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AWB_MODE, 1, &awbMode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1214,12 +1215,17 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AF_STATE, &val);
|
|
|
|
|
mResult.afState = (status == ACAMERA_OK) ? *(val.data.u8) : ACAMERA_CONTROL_AF_STATE_INACTIVE;
|
|
|
|
|
|
|
|
|
|
ALOGW("3ASTATE: ae=%u awb=%u af=%u", (uint32_t)mResult.aeState, (uint32_t)mResult.awbState, (uint32_t)mResult.afState);
|
|
|
|
|
val = { 0 };
|
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AWB_MODE, &val);
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
if (awbSupported && awbLockAvailable && mResult.awbState == ACAMERA_CONTROL_AWB_STATE_CONVERGED)
|
|
|
|
|
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)
|
|
|
|
@ -1230,10 +1236,11 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER, 1, &aePrecatureTrigger);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (aeLockAvailable && (mResult.aeState == ACAMERA_CONTROL_AE_STATE_CONVERGED || mResult.aeState == ACAMERA_CONTROL_AE_STATE_FLASH_REQUIRED))
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1267,7 +1274,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (awbSupported)
|
|
|
|
|
if (awbMode == ACAMERA_CONTROL_AWB_MODE_AUTO)
|
|
|
|
|
{
|
|
|
|
|
if (m_params.wait3ALocked)
|
|
|
|
|
{
|
|
|
|
@ -1278,7 +1285,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (mResult.awbState != ACAMERA_CONTROL_AWB_STATE_CONVERGED)
|
|
|
|
|
if (mResult.awbState != ACAMERA_CONTROL_AWB_STATE_CONVERGED && mResult.awbState != ACAMERA_CONTROL_AWB_STATE_LOCKED)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -1296,7 +1303,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (mResult.aeState != ACAMERA_CONTROL_AE_STATE_CONVERGED && mResult.aeState != ACAMERA_CONTROL_AE_STATE_FLASH_REQUIRED)
|
|
|
|
|
if (mResult.aeState != ACAMERA_CONTROL_AE_STATE_CONVERGED && mResult.aeState != ACAMERA_CONTROL_AE_STATE_FLASH_REQUIRED && mResult.aeState != ACAMERA_CONTROL_AE_STATE_LOCKED)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|