Camera3: Add support for reprocess parameters
-Add support for "minimal" noise reduction mode
-Add support for effective exposure factor
Change-Id: Iccee69247186573c7268778bb3c101e00cd86722
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index a38857f..8df8ca9 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -2957,6 +2957,11 @@
(uint8_t *)POINTER_OF_META(CAM_INTF_META_NOISE_REDUCTION_STRENGTH, metadata);
camMetadata.update(ANDROID_NOISE_REDUCTION_STRENGTH, noiseRedStrength, 1);
}
+ if (IS_META_AVAILABLE(CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR, metadata)) {
+ float *effectiveExposureFactor =
+ (float *)POINTER_OF_META(CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR, metadata);
+ camMetadata.update(ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR, effectiveExposureFactor, 1);
+ }
if (IS_META_AVAILABLE(CAM_INTF_META_SCALER_CROP_REGION, metadata)) {
cam_crop_region_t *hScalerCropRegion =(cam_crop_region_t *)
POINTER_OF_META(CAM_INTF_META_SCALER_CROP_REGION, metadata);
@@ -4725,10 +4730,11 @@
2);
uint8_t available_noise_red_modes[] = {ANDROID_NOISE_REDUCTION_MODE_OFF,
- ANDROID_NOISE_REDUCTION_MODE_FAST};
+ ANDROID_NOISE_REDUCTION_MODE_FAST,
+ ANDROID_NOISE_REDUCTION_MODE_MINIMAL};
staticInfo.update(ANDROID_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES,
available_noise_red_modes,
- 2);
+ 3);
uint8_t available_tonemap_modes[] = {ANDROID_TONEMAP_MODE_CONTRAST_CURVE,
ANDROID_TONEMAP_MODE_FAST};
@@ -6268,6 +6274,14 @@
sizeof(noiseRedStrength), &noiseRedStrength);
}
+ if (frame_settings.exists(ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR)) {
+ float reprocessEffectiveExposureFactor =
+ frame_settings.find(ANDROID_REPROCESS_EFFECTIVE_EXPOSURE_FACTOR).data.f[0];
+ rc = AddSetParmEntryToBatch(hal_metadata,
+ CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR,
+ sizeof(reprocessEffectiveExposureFactor), &reprocessEffectiveExposureFactor);
+ }
+
cam_crop_region_t scalerCropRegion;
bool scalerCropSet = false;
if (frame_settings.exists(ANDROID_SCALER_CROP_REGION)) {
diff --git a/camera/QCamera2/stack/common/cam_intf.h b/camera/QCamera2/stack/common/cam_intf.h
index f700775..15df3d7 100644
--- a/camera/QCamera2/stack/common/cam_intf.h
+++ b/camera/QCamera2/stack/common/cam_intf.h
@@ -639,6 +639,7 @@
INCLUDE(CAM_INTF_PARM_CAC, cam_aberration_mode_t, 1);
INCLUDE(CAM_INTF_META_NEUTRAL_COL_POINT, cam_neutral_col_point_t, 1);
INCLUDE(CAM_INTF_PARM_ROTATION, cam_rotation_info_t, 1);
+ INCLUDE(CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR, float, 1);
} parm_data_t;
typedef parm_data_t metadata_data_t;
diff --git a/camera/QCamera2/stack/common/cam_types.h b/camera/QCamera2/stack/common/cam_types.h
index 6f76eee..bf4875e 100644
--- a/camera/QCamera2/stack/common/cam_types.h
+++ b/camera/QCamera2/stack/common/cam_types.h
@@ -595,7 +595,8 @@
typedef enum {
CAM_NOISE_REDUCTION_MODE_OFF,
CAM_NOISE_REDUCTION_MODE_FAST,
- CAM_NOISE_REDUCTION_MODE_HIGH_QUALITY
+ CAM_NOISE_REDUCTION_MODE_HIGH_QUALITY,
+ CAM_NOISE_REDUCTION_MODE_MINIMAL
} cam_noise_reduction_mode_t;
typedef enum {
@@ -1344,7 +1345,7 @@
/* CAC */
CAM_INTF_PARM_CAC,
-
+ CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR,
CAM_INTF_PARM_MAX
} cam_intf_parm_type_t;
diff --git a/camera/QCamera2/stack/mm-camera-interface/src/cam_intf.c b/camera/QCamera2/stack/mm-camera-interface/src/cam_intf.c
index 1d0e21b..11cfe4d 100644
--- a/camera/QCamera2/stack/mm-camera-interface/src/cam_intf.c
+++ b/camera/QCamera2/stack/mm-camera-interface/src/cam_intf.c
@@ -131,6 +131,8 @@
return POINTER_OF_META(CAM_INTF_META_NOISE_REDUCTION_MODE, metadata);
case CAM_INTF_META_NOISE_REDUCTION_STRENGTH:
return POINTER_OF_META(CAM_INTF_META_NOISE_REDUCTION_STRENGTH, metadata);
+ case CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR:
+ return POINTER_OF_META(CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR, metadata);
case CAM_INTF_META_SCALER_CROP_REGION:
return POINTER_OF_META(CAM_INTF_META_SCALER_CROP_REGION, metadata);
case CAM_INTF_META_SCENE_FLICKER:
@@ -446,6 +448,8 @@
return SIZE_OF_PARAM(CAM_INTF_META_NOISE_REDUCTION_MODE, metadata);
case CAM_INTF_META_NOISE_REDUCTION_STRENGTH:
return SIZE_OF_PARAM(CAM_INTF_META_NOISE_REDUCTION_STRENGTH, metadata);
+ case CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR:
+ return SIZE_OF_PARAM(CAM_INTF_META_EFFECTIVE_EXPOSURE_FACTOR, metadata);
case CAM_INTF_META_SCALER_CROP_REGION:
return SIZE_OF_PARAM(CAM_INTF_META_SCALER_CROP_REGION, metadata);
case CAM_INTF_META_SCENE_FLICKER: