diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp index 20eebf68..cfc6ef02 100644 --- a/app/src/main/cpp/camera2/ndkcamera.cpp +++ b/app/src/main/cpp/camera2/ndkcamera.cpp @@ -750,7 +750,11 @@ int NdkCamera::open(const std::string& cameraId) { if (m_params.burstRawCapture == 2) { - SetupMFNR(mCharacteristics.get(), request->request); + SetupMFNR(mCharacteristics.get(), request->request, false); + } + else if (m_params.burstRawCapture == 3) + { + SetupMFNR(mCharacteristics.get(), request->request, true); } mCaptureRequests.push_back(request); @@ -2194,7 +2198,7 @@ void NdkCamera::EnumCameraResult(ACameraMetadata* result, CAPTURE_RESULT& captur captureResult.compensation = (status == ACAMERA_OK) ? *(val.data.i32) : 0; } -void NdkCamera::SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* request) +void NdkCamera::SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* request, bool ais) { // 1. 设置基础的相机参数 // ACaptureRequest_setEntry_i32(request, ACAMERA_CONTROL_MODE, 1, ACAMERA_CONTROL_MODE_AUTO); @@ -2244,7 +2248,7 @@ void NdkCamera::SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* req // 2. 设置 MediaTek 特定的 MFNR 参数 // 使用 vendor tag 描述符 // int32_t mfbMode = MTK_MFNR_FEATURE_MFB_AUTO; // 1 Enable MFNR - int32_t mfbMode = 1; // 1 Enable MFNR + int32_t mfbMode = ais ? 2 : 1; // 1 Enable MFNR status = ACaptureRequest_setEntry_i32(request, MTK_MFNR_FEATURE_MFB_MODE, 1, &mfbMode); if (status != ACAMERA_OK) { diff --git a/app/src/main/cpp/camera2/ndkcamera.h b/app/src/main/cpp/camera2/ndkcamera.h index 99cfd891..fb1aaa8a 100644 --- a/app/src/main/cpp/camera2/ndkcamera.h +++ b/app/src/main/cpp/camera2/ndkcamera.h @@ -203,7 +203,7 @@ public: static void EnumCameraResult(ACameraMetadata* result, CAPTURE_RESULT& captureResult); protected: - void SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* request); + void SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* request, bool ais); protected: std::mutex m_locker;