From 13cb6722f3ccf2070b7838d5d149d8a7daf93412 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 10 Apr 2025 23:19:17 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BD=BF=E7=94=A8mtk=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E7=9A=84=E5=A4=9A=E5=B8=A7=E9=99=8D=E5=99=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/camera2/ndkcamera.cpp | 60 ++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index d0fac699..517c7687 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -29,6 +29,60 @@ #include #include "DngCreator.h" +#define MTK_MFBMODE_TAG "com.mediatek.mfbmode" +#define MTK_MFNR_ENABLE_TAG "com.mediatek.3afeature.mfnrenable" + +#define MTK_VENDOR_TAG_SECTION 0x8000 +#define MTK_MFNR_FEATURE 4 +#define MTK_MFNR_FEATURE_START ((MTK_MFNR_FEATURE + MTK_VENDOR_TAG_SECTION) << 16) +#define MTK_MFNR_FEATURE_MFB_MODE MTK_MFNR_FEATURE_START +#define MTK_MFNR_FEATURE_MFB_RESULT (MTK_MFNR_FEATURE_START + 1) +#define MTK_MFNR_FEATURE_AVAILABLE_MFB_MODES (MTK_MFNR_FEATURE_START + 2) + +#define MTK_MFNR_FEATURE_MFB_AUTO 0xFF + +// #define MTK_3A_MFNR_ENABLE "com.mediatek.3afeature.mfnrenable" +#define MTK_3A_MFNR_INTENSITY_TAG "com.mediatek.3afeature.mfnrintensity" + +void SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* request) { + // 1. 设置基础的相机参数 + // ACaptureRequest_setEntry_i32(request, ACAMERA_CONTROL_MODE, 1, ACAMERA_CONTROL_MODE_AUTO); + camera_status_t status; + +#if 0 + int32_t tagCount = 0; + const uint32_t* tags = nullptr; + ACameraMetadata_getAllTags(characteristics, &tagCount, &tags); + for (int32_t i = 0; i < tagCount; i++) { + if (MTK_MFNR_FEATURE_AVAILABLE_MFB_MODES == tags[i]) + { + ALOGI("MTK_MFNR_FEATURE_AVAILABLE_MFB_MODES Tag ID: 0x%x\n", tags[i]); + } + } + + ACameraMetadata_const_entry entry; + status = ACameraMetadata_getConstEntry(characteristics, MTK_MFNR_FEATURE_AVAILABLE_MFB_MODES, &entry); + if (status == ACAMERA_OK) + { + for (int i = 0; i < entry.count; i++) + { + ALOGI("MTK_MFNR_FEATURE_AVAILABLE_MFB_MODES: 0x%x\n", entry.data.i32[i]); + } + } +#endif + + uint8_t nrMode = ACAMERA_NOISE_REDUCTION_MODE_HIGH_QUALITY; + status = ACaptureRequest_setEntry_u8(request, ACAMERA_NOISE_REDUCTION_MODE, 1, &nrMode); + + // 2. 设置 MediaTek 特定的 MFNR 参数 + // 使用 vendor tag 描述符 + int32_t mfbMode = MTK_MFNR_FEATURE_MFB_AUTO; // 1 Enable MFNR + status = ACaptureRequest_setEntry_i32(request, MTK_MFNR_FEATURE_MFB_MODE, 1, &mfbMode); + if (status == ACAMERA_OK) + { + + } +} void saveYuvToFile(AImage* image, const std::string& filePath) { @@ -1805,11 +1859,16 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque for (int idx = 0; idx < burstCaptures; idx++) { CaptureRequest* request = CreateRequest(false); + if (m_params.burstRawCapture == 0 && m_params.customHdr != 0) + { + SetupMFNR(mCharacteristics.get(), request->request); + } mCaptureRequests.push_back(request); // CopyPreviewRequest(mCaptureRequests[idx]->request, result); requests.push_back(request->request); } +#if 0 if (m_params.customHdr && burstCaptures > 1) { int32_t hdrStep = m_params.hdrStep; @@ -1850,6 +1909,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque } } } +#endif // ALOGW("Will Stop Repeating Request"); // status = ACameraCaptureSession_stopRepeating(capture_session); From ae213c7a9bbcfb3078949f2ec25900f45e087021 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 10 Apr 2025 23:22:07 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 855f3d95..aaa4bb1d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -70,7 +70,7 @@ - + From a74db09f67e3792cfdeaf1f387d47849682160b2 Mon Sep 17 00:00:00 2001 From: Matthew Date: Thu, 10 Apr 2025 23:23:51 +0800 Subject: [PATCH 3/3] Update version to 1.3.113 Based Core Version to 1.4.67 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 3733fc49..41c4f067 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ plugins { // 10,00,000 major-minor-build def AppMajorVersion = 1 def AppMinorVersion = 3 -def AppBuildNumber = 112 +def AppBuildNumber = 113 def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber