Camera3: Set focus distance calibration static metadata
Remove hardcoded min focus distance as well.
Bug: 12957245
Bug: 12132757
Change-Id: I5d3bbc4c8d108f9f396fbd041c9afee3f2faf955
Conflicts:
QCamera2/HAL3/QCamera3HWI.cpp
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index 760c14f..32bdc5f 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -136,6 +136,15 @@
{ ANDROID_STATISTICS_FACE_DETECT_MODE_FULL, CAM_FACE_DETECT_MODE_FULL }
};
+const QCamera3HardwareInterface::QCameraMap QCamera3HardwareInterface::FOCUS_CALIBRATION_MAP[] = {
+ { ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED,
+ CAM_FOCUS_UNCALIBRATED },
+ { ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE,
+ CAM_FOCUS_APPROXIMATE },
+ { ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED,
+ CAM_FOCUS_CALIBRATED }
+};
+
const int32_t available_thumbnail_sizes[] = {0, 0,
176, 144,
320, 240,
@@ -2742,18 +2751,8 @@
int facingBack = gCamCapability[cameraId]->position == CAM_POSITION_BACK;
/*HAL 3 only*/
- /*staticInfo.update(ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
- &gCamCapability[cameraId]->min_focus_distance, 1); */
-
- /*hard coded for now but this should come from sensor*/
- float min_focus_distance;
- if(facingBack){
- min_focus_distance = 10;
- } else {
- min_focus_distance = 0;
- }
staticInfo.update(ANDROID_LENS_INFO_MINIMUM_FOCUS_DISTANCE,
- &min_focus_distance, 1);
+ &gCamCapability[cameraId]->min_focus_distance, 1);
staticInfo.update(ANDROID_LENS_INFO_HYPERFOCAL_DISTANCE,
&gCamCapability[cameraId]->hyper_focal_distance, 1);
@@ -3089,6 +3088,14 @@
staticInfo.update(ANDROID_LED_AVAILABLE_LEDS,
&avail_leds, 0);
+ int8_t val = lookupFwkName(FOCUS_CALIBRATION_MAP,
+ sizeof(FOCUS_CALIBRATION_MAP)/sizeof(FOCUS_CALIBRATION_MAP[0]),
+ gCamCapability[cameraId]->focus_dist_calibrated);
+ if (val != NAME_NOT_FOUND) {
+ staticInfo.update(ANDROID_LENS_INFO_FOCUS_DISTANCE_CALIBRATION,
+ &gCamCapability[cameraId]->focus_dist_calibrated, 1);
+ }
+
gStaticMetadata[cameraId] = staticInfo.release();
return rc;
}
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.h b/camera/QCamera2/HAL3/QCamera3HWI.h
index c4d7f52..b1bece1 100755
--- a/camera/QCamera2/HAL3/QCamera3HWI.h
+++ b/camera/QCamera2/HAL3/QCamera3HWI.h
@@ -277,6 +277,7 @@
static const QCameraMap AE_FLASH_MODE_MAP[];
static const QCameraMap FLASH_MODES_MAP[];
static const QCameraMap FACEDETECT_MODES_MAP[];
+ static const QCameraMap FOCUS_CALIBRATION_MAP[];
static pthread_mutex_t mCameraSessionLock;
static unsigned int mCameraSessionActive;
diff --git a/camera/QCamera2/stack/common/cam_intf.h b/camera/QCamera2/stack/common/cam_intf.h
index b626564..7ee6097 100755
--- a/camera/QCamera2/stack/common/cam_intf.h
+++ b/camera/QCamera2/stack/common/cam_intf.h
@@ -292,6 +292,8 @@
uint8_t flash_available;
cam_rational_type_t base_gain_factor; /* sensor base gain factor */
+
+ uint8_t focus_dist_calibrated;
} cam_capability_t;
typedef enum {
diff --git a/camera/QCamera2/stack/common/cam_types.h b/camera/QCamera2/stack/common/cam_types.h
index 3177a9f..5957a16 100644
--- a/camera/QCamera2/stack/common/cam_types.h
+++ b/camera/QCamera2/stack/common/cam_types.h
@@ -1312,4 +1312,10 @@
CAM_AWB_STATE_LOCKED
} cam_awb_state_t;
+typedef enum {
+ CAM_FOCUS_UNCALIBRATED,
+ CAM_FOCUS_APPROXIMATE,
+ CAM_FOCUS_CALIBRATED
+} cam_focus_calibration_t;
+
#endif /* __QCAMERA_TYPES_H__ */