实现3DNR

lowmem
Matthew 2 months ago
parent b3f3703c74
commit e21e409712

@ -1037,6 +1037,10 @@ NdkCamera::CaptureRequest* NdkCamera::CreateRequest(bool isPreviewRequest, int32
{ {
SetupMFNR(mCharacteristics.get(), request->request, true, sensitivity); SetupMFNR(mCharacteristics.get(), request->request, true, sensitivity);
} }
else if (m_params.burstRawCapture == 4)
{
Setup3DNR(mCharacteristics.get(), request->request, sensitivity);
}
} }
return request; return request;
@ -1976,6 +1980,7 @@ int64_t NdkCamera::GetTimestamp(const ACameraMetadata* result)
void NdkCamera::FireOneCapture(uint64_t ts) void NdkCamera::FireOneCapture(uint64_t ts)
{ {
#ifdef OUTPUT_DBG_INFO #ifdef OUTPUT_DBG_INFO
#if 0
if (mWidth == 1920 && mOneFrame.size() > 1) if (mWidth == 1920 && mOneFrame.size() > 1)
{ {
std::string dt = FormatLocalDateTime("%d%02d%02d%02d%02d%02d", ts / 1000); std::string dt = FormatLocalDateTime("%d%02d%02d%02d%02d%02d", ts / 1000);
@ -1995,10 +2000,13 @@ void NdkCamera::FireOneCapture(uint64_t ts)
cv::imwrite(fileName, it->second, params); cv::imwrite(fileName, it->second, params);
} }
} }
#endif
#endif #endif
onOneCapture(mCharacteristics, mCaptureResults.back(), mFinalLdr, ts - m_startTime, mOneFrame.back().second);
onOneCapture(mCharacteristics, mCaptureResultMap[mOneFrame.back().first], mFinalLdr, ts - m_startTime, mOneFrame.back().second);
} }
void NdkCamera::FireBurstCapture() void NdkCamera::FireBurstCapture()
@ -2540,6 +2548,57 @@ void NdkCamera::SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* req
} }
} }
void NdkCamera::Setup3DNR(ACameraMetadata* characteristics, ACaptureRequest* request, int32_t sensitivity)
{
// 1. 设置基础的相机参数
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_NR_FEATURE_AVAILABLE_3DNR_MODES == tags[i])
{
ALOGI("MTK_NR_FEATURE_AVAILABLE_3DNR_MODES Tag ID: 0x%x\n", tags[i]);
}
}
ACameraMetadata_const_entry entry;
status = ACameraMetadata_getConstEntry(characteristics, MTK_NR_FEATURE_AVAILABLE_3DNR_MODES, &entry);
if (status == ACAMERA_OK)
{
for (int i = 0; i < entry.count; i++)
{
ALOGI("MTK_NR_FEATURE_AVAILABLE_3DNR_MODES: 0x%x\n", entry.data.i32[i]);
}
}
#endif
int32_t nrMode = MTK_NR_FEATURE_3DNR_MODE_ON;
status = ACaptureRequest_setEntry_i32(request, MTK_NR_FEATURE_3DNR_MODE, 1, &nrMode);
if (status != ACAMERA_OK)
{
ALOGE("Failed to set MTK_NR_FEATURE_3DNR_MODE, status: %d", status);
}
uint8_t reqRemosaicEnable = 1;
status = ACaptureRequest_setEntry_u8(request, MTK_HAL_REQUEST_REMOSAIC_ENABLE, 1, &reqRemosaicEnable);
if (status != ACAMERA_OK)
{
ALOGE("Failed to set MTK_HAL_REQUEST_REMOSAIC_ENABLE, status: %d", status);
}
if (m_params.compensation != 0)
{
int32_t compensation = m_params.compensation;
status = ACaptureRequest_setEntry_i32(request, MTK_CONTROL_AE_EXPOSURE_COMPENSATION, 1, &compensation);
if (status != ACAMERA_OK)
{
ALOGE("Failed to set MTK_CONTROL_AE_EXPOSURE_COMPENSATION, status: %d", status);
}
}
}
void NdkCamera::SetupHDR(ACameraMetadata* characteristics, ACaptureRequest* request, int32_t sensitivity) void NdkCamera::SetupHDR(ACameraMetadata* characteristics, ACaptureRequest* request, int32_t sensitivity)
{ {
// 1. 设置基础的相机参数 // 1. 设置基础的相机参数

@ -85,10 +85,10 @@ public:
unsigned int orientation:3; unsigned int orientation:3;
unsigned int zoom : 1; unsigned int zoom : 1;
unsigned int wait3ALocked : 3; unsigned int wait3ALocked : 3;
unsigned int burstRawCapture : 2; unsigned int burstRawCapture : 3;
unsigned int customHdr : 1; unsigned int customHdr : 1;
unsigned int hdrStep : 3; unsigned int hdrStep : 3;
unsigned int reserved : 12; unsigned int reserved : 11;
int64_t exposureTime; int64_t exposureTime;
unsigned int sensitivity; unsigned int sensitivity;
int compensation; int compensation;
@ -207,6 +207,7 @@ public:
protected: protected:
void SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* request, bool ais, int32_t sensitivity); void SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* request, bool ais, int32_t sensitivity);
void Setup3DNR(ACameraMetadata* characteristics, ACaptureRequest* request, int32_t sensitivity);
void SetupHDR(ACameraMetadata* characteristics, ACaptureRequest* request, int32_t sensitivity); void SetupHDR(ACameraMetadata* characteristics, ACaptureRequest* request, int32_t sensitivity);
protected: protected:

Loading…
Cancel
Save