|
|
|
@ -1023,6 +1023,10 @@ NdkCamera::CaptureRequest* NdkCamera::CreateRequest(bool isPreviewRequest, int32
|
|
|
|
|
status = ACaptureRequest_setEntry_float(request->request, ACAMERA_COLOR_CORRECTION_TRANSFORM, 9, colorMatrix);
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (m_params.burstRawCapture == 1)
|
|
|
|
|
{
|
|
|
|
|
SetupHDR(mCharacteristics.get(), request->request, sensitivity);
|
|
|
|
|
}
|
|
|
|
|
if (m_params.burstRawCapture == 2)
|
|
|
|
|
{
|
|
|
|
|
SetupMFNR(mCharacteristics.get(), request->request, false, sensitivity);
|
|
|
|
@ -2511,6 +2515,80 @@ void NdkCamera::SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* req
|
|
|
|
|
ALOGE("Failed to set MTK_MFNR_FEATURE_MFB_MODE, status: %d", status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int32_t ispTuning = MTK_CONTROL_CAPTURE_HINT_FOR_ISP_TUNING_MFNR;
|
|
|
|
|
status = ACaptureRequest_setEntry_i32(request, MTK_CONTROL_CAPTURE_HINT_FOR_ISP_TUNING, 1, &ispTuning);
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
// 1. 设置基础的相机参数
|
|
|
|
|
camera_status_t status;
|
|
|
|
|
// __system_property_set("vendor.mfll.force", "1");
|
|
|
|
|
#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
|
|
|
|
|
|
|
|
|
|
ACameraMetadata_const_entry entry = { 0 };
|
|
|
|
|
status = ACameraMetadata_getConstEntry(characteristics, MTK_HDR_FEATURE_AVAILABLE_HDR_MODES_PHOTO, &entry);
|
|
|
|
|
if (status == ACAMERA_OK)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < entry.count; i++)
|
|
|
|
|
{
|
|
|
|
|
ALOGI("MTK_HDR_FEATURE_AVAILABLE_HDR_MODES_PHOTO: 0x%x\n", entry.data.i32[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 2. 设置 MediaTek 特定的 MFNR 参数
|
|
|
|
|
// 使用 vendor tag 描述符
|
|
|
|
|
// int32_t mfbMode = MTK_MFNR_FEATURE_MFB_AUTO; // 1 Enable MFNR
|
|
|
|
|
int32_t hdrMode = MTK_HDR_FEATURE_HDR_MODE_ON; // 1 Enable MFNR
|
|
|
|
|
uint8_t aeMode = MTK_CONTROL_AE_MODE_ON;
|
|
|
|
|
// status = ACaptureRequest_setEntry_u8(request, MTK_CONTROL_AE_MODE, 1, &aeMode);
|
|
|
|
|
|
|
|
|
|
// int32_t mfbMode = ais ? 2 : 1; // 1 Enable MFNR
|
|
|
|
|
status = ACaptureRequest_setEntry_i32(request, MTK_HDR_FEATURE_HDR_MODE, 1, &hdrMode);
|
|
|
|
|
if (status != ACAMERA_OK)
|
|
|
|
|
{
|
|
|
|
|
ALOGE("Failed to set MTK_MFNR_FEATURE_MFB_MODE, status: %d", status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// int32_t ispTuning = (mfbMode != 0) ? MTK_CONTROL_CAPTURE_HINT_FOR_ISP_TUNING_MFNR : MTK_CONTROL_CAPTURE_HINT_FOR_ISP_TUNING_DEFAULT_NONE;
|
|
|
|
|
// status = ACaptureRequest_setEntry_i32(request, MTK_CONTROL_CAPTURE_HINT_FOR_ISP_TUNING, 1, &ispTuning);
|
|
|
|
|
|
|
|
|
@ -2520,7 +2598,7 @@ void NdkCamera::SetupMFNR(ACameraMetadata* characteristics, ACaptureRequest* req
|
|
|
|
|
{
|
|
|
|
|
ALOGE("Failed to set MTK_HAL_REQUEST_REMOSAIC_ENABLE, status: %d", status);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (m_params.compensation != 0)
|
|
|
|
|
{
|
|
|
|
|
int32_t compensation = m_params.compensation;
|
|
|
|
|