diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 64697eae..92f5882e 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1200,7 +1200,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" : "ns"); char str[128] = { 0 }; - snprintf(str, sizeof(str), "AE=%u EXPS=%u%s ISO=%d AF=%u LDR=%d AFS=%u AES=%u SCENE=%d AWB=%u", captureResult.autoExposure, + snprintf(str, sizeof(str), "AE=%u EXPS=%u%s ISO=%d AF=%u LDR=%d AFS=%u AES=%u SCENE=%d AWB=%u %0.1fx", captureResult.autoExposure, extime, extimeunit, captureResult.sensitibity, captureResult.autoFocus, @@ -1209,12 +1209,13 @@ bool CPhoneDevice::OnImageReady(cv::Mat& mat) (unsigned int)captureResult.afState, (unsigned int)captureResult.aeState, captureResult.sceneMode, - captureResult.awbState); + captureResult.awbState, captureResult.zoomRatio); // cv::putText(mat, str, cv::Point(0, mat.rows - 20), cv::FONT_HERSHEY_COMPLEX, fontScale, scalar, thickness1, cv::LINE_AA); - textSize = ft2->getTextSize(str, fontSize, -1, &baseline); - ft2->putText(mat, str, cv::Point(0, mat.rows - fontSize - 20 * ratio), - fontSize, scalarRed, -1, cv::LINE_AA, false); + int fs = fontSize * 2 / 3; + textSize = ft2->getTextSize(str, fs, -1, &baseline); + ft2->putText(mat, str, cv::Point(0, mat.rows - fs - 20 * ratio), + fs, scalarRed, -1, cv::LINE_AA, false); #endif for (vector::const_iterator it = mOsds.cbegin(); it != mOsds.cend(); ++it) diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index 5abab717..18b8419b 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -421,13 +421,6 @@ int NdkCamera::open(const std::string& cameraId) { m_imagesCaptured = 0; - if (m_params.zoom) - { - float zoomRatio = m_params.zoomRatio; - // uint8_t afMode = ACAMERA_CONTROL_AF_MODE_AUTO; - status = ACaptureRequest_setEntry_float(capture_request, ACAMERA_CONTROL_ZOOM_RATIO, 1, &zoomRatio); - - } if (afSupported && m_params.autoFocus) { // uint8_t afMode = ACAMERA_CONTROL_AF_MODE_CONTINUOUS_VIDEO; @@ -435,8 +428,11 @@ int NdkCamera::open(const std::string& cameraId) { // uint8_t afMode = ACAMERA_CONTROL_AF_MODE_AUTO; status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AF_MODE, 1, &afMode); - uint8_t trig = ACAMERA_CONTROL_AF_TRIGGER_START; - status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AF_TRIGGER, 1, &trig); + if (!m_params.zoom) + { + uint8_t trig = ACAMERA_CONTROL_AF_TRIGGER_START; + status = ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AF_TRIGGER, 1, &trig); + } if (status == ACAMERA_OK) { m_imagesCaptured = ~0; @@ -500,6 +496,19 @@ int NdkCamera::open(const std::string& cameraId) { status = ACaptureRequest_addTarget(capture_request, image_reader_target); } + if (m_params.zoom) + { + float zoomRatio = m_params.zoomRatio; + // uint8_t afMode = ACAMERA_CONTROL_AF_MODE_AUTO; + status = ACaptureRequest_setEntry_float(capture_request, ACAMERA_CONTROL_ZOOM_RATIO, 1, &zoomRatio); + if (status != ACAMERA_OK) + { +#ifdef _DEBUG + int aa = 0; +#endif + } + } + // capture session { ACameraCaptureSession_stateCallbacks camera_capture_session_state_callbacks; @@ -998,6 +1007,13 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque } mResult.FocusDistance = focusDistance; + val = { 0 }; + status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_ZOOM_RATIO, &val); + if (status == ACAMERA_OK) + { + mResult.zoomRatio = *val.data.f; + } + val = { 0 }; status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AF_STATE, &val); mResult.afState = *(val.data.u8); diff --git a/app/src/main/cpp/camera2/ndkcamera.h b/app/src/main/cpp/camera2/ndkcamera.h index 91b580d3..72fd6d33 100644 --- a/app/src/main/cpp/camera2/ndkcamera.h +++ b/app/src/main/cpp/camera2/ndkcamera.h @@ -92,6 +92,7 @@ public: float FocusDistance; int32_t sensitibity; uint8_t sceneMode; + float zoomRatio; };