|
|
@ -590,7 +590,7 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
templateId = (ACameraDevice_request_template)m_params.requestTemplate;
|
|
|
|
templateId = (ACameraDevice_request_template)m_params.requestTemplate;
|
|
|
|
status = ACameraDevice_createCaptureRequest(camera_device, templateId, &capture_request);
|
|
|
|
status = ACameraDevice_createCaptureRequest(camera_device, templateId, &capture_request);
|
|
|
|
|
|
|
|
|
|
|
|
int32_t fpsRange[2] = {1, 5};
|
|
|
|
int32_t fpsRange[2] = {5, 15};
|
|
|
|
// status = ACaptureRequest_setEntry_i32(capture_request, ACAMERA_CONTROL_AE_TARGET_FPS_RANGE, 2, fpsRange);
|
|
|
|
// status = ACaptureRequest_setEntry_i32(capture_request, ACAMERA_CONTROL_AE_TARGET_FPS_RANGE, 2, fpsRange);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -713,6 +713,8 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
uint8_t aeLock = ACAMERA_CONTROL_AE_LOCK_OFF;
|
|
|
|
|
|
|
|
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_LOCK, 1,&aeLock);
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "AE_Lock Not Supported");
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "AE_Lock Not Supported");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -724,8 +726,6 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
m_imagesCaptured = ~0;
|
|
|
|
m_imagesCaptured = ~0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_LOCK, 1, &aeLockOff);
|
|
|
|
// ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_LOCK, 1, &aeLockOff);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
@ -940,6 +940,7 @@ void NdkCamera::onImageAvailable(AImageReader* reader)
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
avgY = avgY / (uint64_t)y_len;
|
|
|
|
avgY = avgY / (uint64_t)y_len;
|
|
|
|
mResult.avgY = avgY;
|
|
|
|
mResult.avgY = avgY;
|
|
|
|
|
|
|
|
mFinalResult.avgY = avgY;
|
|
|
|
#if 1
|
|
|
|
#if 1
|
|
|
|
if (avgY < 50)
|
|
|
|
if (avgY < 50)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -964,7 +965,7 @@ void NdkCamera::onImageAvailable(AImageReader* reader)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
if (m_imagesCaptured == ~0 || m_imagesCaptured != 1)
|
|
|
|
if (m_imagesCaptured == ~0 || m_imagesCaptured != 0)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// XYLOG(XYLOG_SEVERITY_DEBUG, "m_imagesCaptured=%u wait for next image", m_imagesCaptured);
|
|
|
|
// XYLOG(XYLOG_SEVERITY_DEBUG, "m_imagesCaptured=%u wait for next image", m_imagesCaptured);
|
|
|
|
// Not Ready Or Taken
|
|
|
|
// Not Ready Or Taken
|
|
|
@ -977,7 +978,9 @@ void NdkCamera::onImageAvailable(AImageReader* reader)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
mResult.duration = GetMicroTimeStamp() - m_startTime;
|
|
|
|
XYLOG(XYLOG_SEVERITY_INFO, "Photo Taken: AES=%u AFS=%u AWBS=%u", (uint32_t)mFinalResult.aeState, (uint32_t)mFinalResult.awbState, (uint32_t)mFinalResult.afState);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mFinalResult.duration = GetMicroTimeStamp() - m_startTime;
|
|
|
|
|
|
|
|
|
|
|
|
int32_t format;
|
|
|
|
int32_t format;
|
|
|
|
AImage_getFormat(image, &format);
|
|
|
|
AImage_getFormat(image, &format);
|
|
|
@ -1020,10 +1023,9 @@ void NdkCamera::onImageAvailable(AImageReader* reader)
|
|
|
|
uint64_t avgY = std::accumulate(y_data, y_data + y_len, 0);
|
|
|
|
uint64_t avgY = std::accumulate(y_data, y_data + y_len, 0);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
mResult.avgY = avgY / y_len;
|
|
|
|
mResult.avgY = avgY / y_len;
|
|
|
|
|
|
|
|
mFinalResult.avgY = mResult.avgY;
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
mFinalResult = mResult;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (u_data == v_data + 1 && v_data == y_data + width * height && y_pixelStride == 1 && u_pixelStride == 2 && v_pixelStride == 2 && y_rowStride == width && u_rowStride == width && v_rowStride == width)
|
|
|
|
if (u_data == v_data + 1 && v_data == y_data + width * height && y_pixelStride == 1 && u_pixelStride == 2 && v_pixelStride == 2 && y_rowStride == width && u_rowStride == width && v_rowStride == width)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// already nv21 :)
|
|
|
|
// already nv21 :)
|
|
|
@ -1506,9 +1508,17 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION, &val);
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION, &val);
|
|
|
|
mResult.compensation = (status == ACAMERA_OK) ? *(val.data.i32) : 0;
|
|
|
|
mResult.compensation = (status == ACAMERA_OK) ? *(val.data.i32) : 0;
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
if (m_imagesCaptured == 0)
|
|
|
|
ALOGD("onCaptureCompleted EXPO=%lld, FD=%f camera id=%s, AE=%s AFS=%u AES=%u", exTime, focusDistance, mCameraId.c_str(), ((aeMode == 1) ? "ON" : "OFF"), mResult.afState, mResult.aeState);
|
|
|
|
{
|
|
|
|
#endif
|
|
|
|
mFinalResult = mResult;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (m_imagesCaptured != ~0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
XYLOG(XYLOG_SEVERITY_DEBUG, "onCaptureCompleted 3ASTATE: AES=%u AWBS=%u AFS=%u EXPO=%lld m_imagesCaptured=%u",
|
|
|
|
|
|
|
|
(uint32_t)mResult.aeState, (uint32_t)mResult.awbState, (uint32_t)mResult.afState, mResult.exposureTime, m_imagesCaptured);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// __android_log_print(ANDROID_LOG_WARN, "NdkCamera", "onCaptureCompleted %p %p %p", session, request, result);
|
|
|
|
// __android_log_print(ANDROID_LOG_WARN, "NdkCamera", "onCaptureCompleted %p %p %p", session, request, result);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|