增加3A总控开关的设置

hdrplus
Matthew 11 months ago
parent 71bc235fb1
commit fbc9b1a53d

@ -1554,7 +1554,7 @@ bool CPhoneDevice::OnImageReady(cv::Mat& mat)
unsigned int extime = (captureResult.exposureTime >= 1000000) ? ((unsigned int)(captureResult.exposureTime / 1000000)) : ((unsigned int)(captureResult.exposureTime / 1000));
strcpy(extimeunit, (captureResult.exposureTime >= 1000000) ? "ms" : "μs");
char str[128] = { 0 };
snprintf(str, sizeof(str), "AE=%u EXPS=%u%s(%d) ISO=%d AF=%u LDR=%d(%u) AFS=%u AES=%u SCENE=%d AWBS=%u %0.1fx T=%u", captureResult.autoExposure,
snprintf(str, sizeof(str), "AE=%u EXPS=%u%s(%d) ISO=%d AF=%u LDR=%d(%u) AFS=%u AES=%u SCENE=%d AWBS=%u %0.1fx T=%u FD=%lld", captureResult.autoExposure,
extime, extimeunit, captureResult.compensation,
captureResult.sensitivity,
captureResult.autoFocus,
@ -1563,7 +1563,8 @@ bool CPhoneDevice::OnImageReady(cv::Mat& mat)
(unsigned int)captureResult.afState,
(unsigned int)captureResult.aeState,
captureResult.sceneMode,
captureResult.awbState, captureResult.zoomRatio, (uint32_t)captureResult.duration);
captureResult.awbState, captureResult.zoomRatio, (uint32_t)captureResult.duration,
captureResult.frameDuration);
// cv::putText(mat, str, cv::Point(0, mat.rows - 20), cv::FONT_HERSHEY_COMPLEX, fontScale, scalar, thickness1, cv::LINE_AA);
int fs = fontSize * 2 / 3;

@ -117,6 +117,7 @@ NdkCamera::NdkCamera(int32_t width, int32_t height, const NdkCamera::CAMERA_PARA
m_imagesCaptured = ~0;
maxFrameDuration = 0;
afSupported = false;
awbMode = ACAMERA_CONTROL_AWB_MODE_AUTO;
aeLockAvailable = false;
@ -483,6 +484,12 @@ int NdkCamera::open(const std::string& cameraId) {
}
}
{
ACameraMetadata_const_entry e = {0};
status = ACameraMetadata_getConstEntry(camera_metadata,ACAMERA_SENSOR_INFO_MAX_FRAME_DURATION, &e);
maxFrameDuration = (status == ACAMERA_OK) ? *e.data.i64 : 0;
}
{
ACameraMetadata_const_entry val = {0};
status = ACameraMetadata_getConstEntry(camera_metadata,ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE, &val);
@ -587,6 +594,9 @@ int NdkCamera::open(const std::string& cameraId) {
status = ACaptureRequest_setEntry_i32(capture_request, ACAMERA_CONTROL_AE_TARGET_FPS_RANGE,2,fpsRange);
}
uint8_t ctrlMode = sceneModeSupported ? ACAMERA_CONTROL_MODE_USE_SCENE_MODE : ACAMERA_CONTROL_MODE_AUTO;
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_MODE, 1, &ctrlMode);
uint8_t flashMode = ACAMERA_FLASH_MODE_OFF;
status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_FLASH_MODE, 1, &flashMode);
@ -730,6 +740,10 @@ int NdkCamera::open(const std::string& cameraId) {
status = ACaptureRequest_setEntry_i64(capture_request, ACAMERA_SENSOR_EXPOSURE_TIME, 1, &exposureTime);
}
int64_t frameDuration = maxFrameDuration / 2;
status = ACaptureRequest_setEntry_i64(capture_request, ACAMERA_SENSOR_FRAME_DURATION, 1, &frameDuration);
}
// TODO:
// m_imagesCaptured = 0;
@ -951,11 +965,19 @@ void NdkCamera::onImageAvailable(AImageReader* reader)
// XYLOG(XYLOG_SEVERITY_DEBUG, "m_imagesCaptured=%u wait for next image", m_imagesCaptured);
// Not Ready Or Taken
AImage_delete(image);
/* if (m_imagesCaptured != ~0)
{
XYLOG(XYLOG_SEVERITY_DEBUG, "Skip Image index=%u", m_imagesCaptured);
m_imagesCaptured++;
}
*/
return;
}
mResult.duration = GetMicroTimeStamp() - m_startTime;
mFinalResult = mResult;
int32_t format;
AImage_getFormat(image, &format);
@ -1408,12 +1430,20 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
int64_t exTime = (status == ACAMERA_OK) ? val.data.i64[0] : -1;
mResult.exposureTime = exTime;
val = {0};
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AF_MODE, &val);
mResult.autoFocus = (status == ACAMERA_OK) ? *(val.data.u8) : 0;
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 };
status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_FRAME_DURATION, &val);
int64_t frameDuration = (status == ACAMERA_OK) ? val.data.i64[0] : 0;
mResult.frameDuration = frameDuration;
val = { 0 };
float focusDistance = NAN;
if (afSupported && (m_params.autoFocus != 0))

@ -105,6 +105,7 @@ public:
float zoomRatio;
uint8_t avgY;
uint64_t duration;
int64_t frameDuration;
uint8_t awbLockSetted : 1;
uint8_t aeLockSetted : 1;
@ -134,7 +135,7 @@ public:
const CAPTURE_RESULT& getCaptureResult() const
{
return mResult;
return mFinalResult;
}
bool IsCameraAvailable(const std::string& cameraId);
@ -152,6 +153,7 @@ protected:
int32_t mHeight;
std::string mCameraId;
int64_t maxFrameDuration;
bool sceneModeSupported;
bool afSupported;
uint8_t awbMode;
@ -174,6 +176,7 @@ protected:
unsigned int m_imagesCaptured;
CAPTURE_RESULT mResult;
CAPTURE_RESULT mFinalResult;
unsigned long long m_startTime;
protected:

Loading…
Cancel
Save