From 9d399cd8e08460cb5ac820af59c0c775f077b2bb Mon Sep 17 00:00:00 2001 From: Matthew Date: Sat, 11 May 2024 10:47:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0Y=E5=88=86=E9=87=8F=E7=9A=84?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 4 ++-- app/src/main/cpp/camera2/ndkcamera.cpp | 8 ++++++++ app/src/main/cpp/camera2/ndkcamera.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 5dc5b482..62072b95 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1237,12 +1237,12 @@ 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(%d) ISO=%d AF=%u LDR=%d AFS=%u AES=%u SCENE=%d AWB=%u %0.1fx", 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 AWB=%u %0.1fx", captureResult.autoExposure, extime, extimeunit, captureResult.compensation, captureResult.sensitibity, captureResult.autoFocus, // isnan(captureResult.FocusDistance) ? 0 : captureResult.FocusDistance, - GpioControl::getLightAdc(), + GpioControl::getLightAdc(), (unsigned int)captureResult.avgY, (unsigned int)captureResult.afState, (unsigned int)captureResult.aeState, captureResult.sceneMode, diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index 6259a7bd..b4c4993e 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -738,6 +739,13 @@ void NdkCamera::onImageAvailable(AImageReader* reader) AImage_getPlaneData(image, 1, &u_data, &u_len); AImage_getPlaneData(image, 2, &v_data, &v_len); +#if __cplusplus >= 201703L + uint64_t avgy = std::reduce(y_data, y_data + y_len, 0) / y_len; +#else + uint64_t avgy = std::accumulate(y_data, y_data + y_len, 0) / y_len; +#endif + mResult.avgY = avgy; + 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 :) diff --git a/app/src/main/cpp/camera2/ndkcamera.h b/app/src/main/cpp/camera2/ndkcamera.h index 0c943cda..10533858 100644 --- a/app/src/main/cpp/camera2/ndkcamera.h +++ b/app/src/main/cpp/camera2/ndkcamera.h @@ -95,6 +95,7 @@ public: int32_t compensation; uint8_t sceneMode; float zoomRatio; + uint8_t avgY; }; NdkCamera(int32_t width, int32_t height, const CAMERA_PARAMS& params);