summaryrefslogtreecommitdiff
authorjiyu.yang <jiyu.yang@amlogic.com>2012-11-02 10:41:11 (GMT)
committer jiyu.yang <jiyu.yang@amlogic.com>2012-11-02 10:41:11 (GMT)
commit1674cdd989559f780b4ba9b779e3bb2e94f9d39a (patch)
tree0be86838799f6451adbd048f072dd55772335485
parent8fac5e27ba2e8553c032404feeb2021cfb1f4f3d (diff)
downloadcamera-1674cdd989559f780b4ba9b779e3bb2e94f9d39a.zip
camera-1674cdd989559f780b4ba9b779e3bb2e94f9d39a.tar.gz
camera-1674cdd989559f780b4ba9b779e3bb2e94f9d39a.tar.bz2
fix foucus doesnot work bug
Diffstat
-rwxr-xr-xCameraHal.cpp6
-rwxr-xr-xV4LCameraAdapter/V4LCameraAdapter.cpp19
2 files changed, 17 insertions, 8 deletions
diff --git a/CameraHal.cpp b/CameraHal.cpp
index f15a420..ef38d22 100755
--- a/CameraHal.cpp
+++ b/CameraHal.cpp
@@ -2811,8 +2811,10 @@ status_t CameraHal::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2)
ret = mCameraAdapter->sendCommand(CameraAdapter::CAMERA_DISABLE_MIRROR, 1);
}
}
- CAMHAL_LOGEA("Preview is not running");
- ret = -EINVAL;
+ if( CAMERA_CMD_ENABLE_FOCUS_MOVE_MSG != cmd){
+ CAMHAL_LOGEA("Preview is not running");
+ ret = -EINVAL;
+ }
}
if ( NO_ERROR == ret )
diff --git a/V4LCameraAdapter/V4LCameraAdapter.cpp b/V4LCameraAdapter/V4LCameraAdapter.cpp
index e022929..ae820f5 100755
--- a/V4LCameraAdapter/V4LCameraAdapter.cpp
+++ b/V4LCameraAdapter/V4LCameraAdapter.cpp
@@ -406,6 +406,16 @@ status_t V4LCameraAdapter::IoctlStateProbe(void)
mAntiBanding = CAM_ANTIBANDING_50HZ;
#endif
+ memset(&qc, 0, sizeof(struct v4l2_queryctrl));
+ qc.id = V4L2_CID_FOCUS_AUTO;
+ ret = ioctl (mCameraHandle, VIDIOC_QUERYCTRL, &qc);
+ if((qc.flags == V4L2_CTRL_FLAG_DISABLED) ||( ret < 0)
+ || (qc.type != V4L2_CTRL_TYPE_MENU)){
+ mIoctlSupport &= ~IOCTL_MASK_FOCUS;
+ }else{
+ mIoctlSupport |= IOCTL_MASK_FOCUS;
+ }
+
LOG_FUNCTION_NAME_EXIT;
return ret;
@@ -2447,18 +2457,15 @@ static bool getCameraAutoFocus(int camera_fd, char* focus_mode_str, char*def_foc
memset(&qc, 0, sizeof(struct v4l2_queryctrl));
qc.id = V4L2_CID_FOCUS_AUTO;
menu_num = ioctl (camera_fd, VIDIOC_QUERYCTRL, &qc);
- if((qc.flags == V4L2_CTRL_FLAG_DISABLED) ||( menu_num <= 0) || (qc.type != V4L2_CTRL_TYPE_MENU)){
+ if((qc.flags == V4L2_CTRL_FLAG_DISABLED) ||( menu_num < 0) || (qc.type != V4L2_CTRL_TYPE_MENU)){
auto_focus_enable = false;
CAMHAL_LOGDB("camera handle %d can't support auto focus",camera_fd);
}else {
memset(&qm, 0, sizeof(qm));
qm.id = V4L2_CID_FOCUS_AUTO;
qm.index = qc.default_value;
- if(ioctl (camera_fd, VIDIOC_QUERYMENU, &qm) < 0){
- strcpy(def_focus_mode, "auto");
- } else {
- strcpy(def_focus_mode, (char*)qm.name);
- }
+
+ strcpy(def_focus_mode, "auto");
int index = 0;
//for (index = 0; index <= menu_num; index++) {
for (index = qc.minimum; index <= qc.maximum; index+= qc.step) {