|
|
|
@ -184,6 +184,10 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
|
// DisplayDimension foundRes(4000, 4000);
|
|
|
|
|
// DisplayDimension maxJPG(0, 0);
|
|
|
|
|
|
|
|
|
|
unsigned long long minRatio = -1;
|
|
|
|
|
DisplayDimension temp;
|
|
|
|
|
unsigned long long pixels = (unsigned long long)mWidth * mHeight;
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < e.count; i += 4)
|
|
|
|
|
{
|
|
|
|
|
int32_t input = e.data.i32[i + 3];
|
|
|
|
@ -193,7 +197,17 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
|
if (format == AIMAGE_FORMAT_YUV_420_888 || format == AIMAGE_FORMAT_JPEG)
|
|
|
|
|
{
|
|
|
|
|
DisplayDimension res(e.data.i32[i + 1], e.data.i32[i + 2]);
|
|
|
|
|
if (!disp.IsSameRatio(res)) continue;
|
|
|
|
|
if (!disp.IsSameRatio(res))
|
|
|
|
|
{
|
|
|
|
|
unsigned long long ps = res.width() * res.height();
|
|
|
|
|
unsigned long long ratio = (ps >= pixels) ? (ps - pixels) : (pixels - ps);
|
|
|
|
|
if (ratio < minRatio)
|
|
|
|
|
{
|
|
|
|
|
temp = res;
|
|
|
|
|
minRatio = ratio;
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (format == AIMAGE_FORMAT_YUV_420_888 && res > disp)
|
|
|
|
|
{
|
|
|
|
@ -204,6 +218,12 @@ int NdkCamera::open(const std::string& cameraId) {
|
|
|
|
|
}*/
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!foundIt)
|
|
|
|
|
{
|
|
|
|
|
foundRes = temp;
|
|
|
|
|
foundIt = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
@ -723,15 +743,21 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (m_imagesCaptured != 0)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
val = { 0 };
|
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_EXPOSURE_TIME, &val);
|
|
|
|
|
int64_t exTime = (status == ACAMERA_OK) ? val.data.i64[0] : -1;
|
|
|
|
|
mResult.exposureTime = exTime;
|
|
|
|
|
|
|
|
|
|
val = { 0 };
|
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AE_MODE, &val);
|
|
|
|
|
uint8_t aeMode = (status == ACAMERA_OK) ? val.data.u8[0] : 0;
|
|
|
|
|
// ACaptureRequest_setEntry_i32(capture_request, ACAMERA_SENSOR_SENSITIVITY, 1, &sensitivity_);
|
|
|
|
|
|
|
|
|
|
mResult.autoExposure = aeMode;
|
|
|
|
|
|
|
|
|
|
val = { 0 };
|
|
|
|
|
float focusDistance = NAN;
|
|
|
|
@ -743,6 +769,15 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
|
|
|
|
|
focusDistance = *val.data.f;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
mResult.FocusDistance = focusDistance;
|
|
|
|
|
|
|
|
|
|
val = {0};
|
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_SENSITIVITY, &val);
|
|
|
|
|
mResult.sensitibity = *(val.data.i32);
|
|
|
|
|
|
|
|
|
|
val = {0};
|
|
|
|
|
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_SCENE_MODE, &val);
|
|
|
|
|
mResult.hdrMode = (*(val.data.u8) == ACAMERA_CONTROL_SCENE_MODE_HDR) ? 1 : 0;
|
|
|
|
|
|
|
|
|
|
ALOGD("onCaptureCompleted EXPOSURE_TIME=%lld, FocusDis=%f camera id=%s, AE=%s AF_STATE=%u", exTime, focusDistance, mCameraId.c_str(), ((aeMode == 1) ? "ON" : "OFF"), afState);
|
|
|
|
|
|
|
|
|
|