diff options
author | KalimochoAz <calimochoazucarado@gmail.com> | 2012-01-09 17:46:22 +0100 |
---|---|---|
committer | KalimochoAz <calimochoazucarado@gmail.com> | 2012-01-09 17:46:22 +0100 |
commit | d5d233076a988aa18491ecceb3a1a89fd2d9a0d6 (patch) | |
tree | efb01baf7dd7497fc9f87ddc4274465d3cf52b37 /libcamera/SecCameraHWInterface.cpp | |
parent | 8bd8d9965bc415c858159b8a8f3f9a5ea5bc075f (diff) | |
download | device_samsung_crespo-d5d233076a988aa18491ecceb3a1a89fd2d9a0d6.zip device_samsung_crespo-d5d233076a988aa18491ecceb3a1a89fd2d9a0d6.tar.gz device_samsung_crespo-d5d233076a988aa18491ecceb3a1a89fd2d9a0d6.tar.bz2 |
Modified Libcamera to allow Touch to focus
Change-Id: I7f1cdc2ce64d60da97cb7d829f51bb4bb1b07c89
Diffstat (limited to 'libcamera/SecCameraHWInterface.cpp')
-rwxr-xr-x | libcamera/SecCameraHWInterface.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/libcamera/SecCameraHWInterface.cpp b/libcamera/SecCameraHWInterface.cpp index ca82669..87c2b96 100755 --- a/libcamera/SecCameraHWInterface.cpp +++ b/libcamera/SecCameraHWInterface.cpp @@ -21,6 +21,8 @@ #include <utils/Log.h> #include "SecCameraHWInterface.h" +#include "SecCameraUtils.h" + #include <utils/threads.h> #include <fcntl.h> #include <sys/mman.h> @@ -282,6 +284,10 @@ void CameraHardwareSec::initDefaultParameters(int cameraId) p.set(CameraParameters::KEY_PREVIEW_FPS_RANGE, "15000,30000"); p.set(CameraParameters::KEY_FOCAL_LENGTH, "3.43"); + + // touch focus + p.set(CameraParameters::KEY_MAX_NUM_FOCUS_AREAS, "1"); + p.set(CameraParameters::KEY_FOCUS_AREAS, "(0,0,0,0,0)"); } else { p.set(CameraParameters::KEY_SUPPORTED_PREVIEW_FPS_RANGE, "(7500,30000)"); p.set(CameraParameters::KEY_PREVIEW_FPS_RANGE, "7500,30000"); @@ -1950,6 +1956,29 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) mParameters.set(CameraParameters::KEY_SCENE_MODE, new_scene_mode_str); } } + + // touch to focus + const char *new_focus_area = params.get(CameraParameters::KEY_FOCUS_AREAS); + if (new_focus_area != NULL) { + LOGI("focus area: %s", new_focus_area); + SecCameraArea area(new_focus_area); + + if (!area.isDummy()) { + int width, height, frame_size; + mSecCamera->getPreviewSize(&width, &height, &frame_size); + + int x = area.getX(width); + int y = area.getY(height); + + LOGI("area=%s, x=%i, y=%i", area.toString8().string(), x, y); + if (mSecCamera->setObjectPosition(x, y) < 0) { + LOGE("ERR(%s):Fail on mSecCamera->setObjectPosition(%s)", __func__, new_focus_area); + ret = UNKNOWN_ERROR; + } + } + + int val = area.isDummy() ? 0 : 1; + } } else { if (!isSupportedParameter(new_focus_mode_str, mParameters.get(CameraParameters::KEY_SUPPORTED_FOCUS_MODES))) { |