summaryrefslogtreecommitdiff
path: root/camera/QCameraHWI_Parm.cpp
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2014-08-08 17:39:02 -0700
committerIgor Murashkin <iam@google.com>2014-08-08 17:39:02 -0700
commit35280367b95bd2ec9cdadca3d53a74e8d03fc1e5 (patch)
tree9d68836e077774b0e317f24f7ddfc7a266b45c34 /camera/QCameraHWI_Parm.cpp
parent98f022358397d796b2e1dd30ed92c74776ab3d1d (diff)
downloadmako-35280367b95bd2ec9cdadca3d53a74e8d03fc1e5.tar.gz
camera: Fix Mako front-facing-camera to report focus modes: fixed
* It was previously reporting the front-camera as having 'infinity' focus modes, which is not true since the lens doesn't move. Bug: 16900875 Change-Id: I3b9248c5cb62ddcfb13587c6349525e145e353ac
Diffstat (limited to 'camera/QCameraHWI_Parm.cpp')
-rw-r--r--camera/QCameraHWI_Parm.cpp30
1 files changed, 23 insertions, 7 deletions
diff --git a/camera/QCameraHWI_Parm.cpp b/camera/QCameraHWI_Parm.cpp
index 9e94d39..b959d78 100644
--- a/camera/QCameraHWI_Parm.cpp
+++ b/camera/QCameraHWI_Parm.cpp
@@ -223,13 +223,20 @@ static const str_map scenedetect[] = {
};
#define DONT_CARE AF_MODE_MAX
-static const str_map focus_modes[] = {
+// These are listed as the supported focus-modes for cameras with AF
+static const str_map focus_modes_auto[] = {
{ QCameraParameters::FOCUS_MODE_AUTO, AF_MODE_AUTO},
{ QCameraParameters::FOCUS_MODE_INFINITY, AF_MODE_INFINITY },
{ QCameraParameters::FOCUS_MODE_NORMAL, AF_MODE_NORMAL },
{ QCameraParameters::FOCUS_MODE_MACRO, AF_MODE_MACRO },
{ QCameraParameters::FOCUS_MODE_CONTINUOUS_PICTURE, AF_MODE_CAF},
- { QCameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO, AF_MODE_CAF }
+ { QCameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO, AF_MODE_CAF },
+ // Note that "FIXED" is omitted
+};
+
+// These are the supported focus-modes for cameras without AF
+static const str_map focus_modes_fixed[] = {
+ { QCameraParameters::FOCUS_MODE_FIXED, AF_MODE_INFINITY },
};
static const str_map selectable_zone_af[] = {
@@ -810,7 +817,7 @@ void QCameraHardwareInterface::initDefaultParameters()
if(mHasAutoFocusSupport){
mFocusModeValues = create_values_str(
- focus_modes, sizeof(focus_modes) / sizeof(str_map));
+ focus_modes_auto, sizeof(focus_modes_auto) / sizeof(str_map));
}
mSceneModeValues = create_values_str(scenemode, sizeof(scenemode) / sizeof(str_map));
@@ -1092,10 +1099,10 @@ void QCameraHardwareInterface::initDefaultParameters()
mParameters.set(QCameraParameters::KEY_MAX_NUM_METERING_AREAS, "1");
} else {
mParameters.set(QCameraParameters::KEY_FOCUS_MODE,
- QCameraParameters::FOCUS_MODE_INFINITY);
+ QCameraParameters::FOCUS_MODE_FIXED);
mFocusMode = DONT_CARE;
mParameters.set(QCameraParameters::KEY_SUPPORTED_FOCUS_MODES,
- QCameraParameters::FOCUS_MODE_INFINITY);
+ QCameraParameters::FOCUS_MODE_FIXED);
mParameters.set(QCameraParameters::KEY_MAX_NUM_FOCUS_AREAS, "0");
mParameters.set(QCameraParameters::KEY_MAX_NUM_METERING_AREAS, "0");
}
@@ -2062,8 +2069,17 @@ status_t QCameraHardwareInterface::setFocusMode(const QCameraParameters& params)
ALOGV("%s",__func__);
if (str != NULL) {
ALOGV("Focus mode %s",str);
- int32_t value = attr_lookup(focus_modes,
- sizeof(focus_modes) / sizeof(str_map), str);
+
+ int32_t value;
+
+ if (mHasAutoFocusSupport){
+ value = attr_lookup(focus_modes_auto,
+ sizeof(focus_modes_auto) / sizeof(str_map), str);
+ } else {
+ value = attr_lookup(focus_modes_fixed,
+ sizeof(focus_modes_fixed) / sizeof(str_map), str);
+ }
+
if (value != NOT_FOUND) {
mParameters.set(QCameraParameters::KEY_FOCUS_MODE, str);
mFocusMode = value;