author | jiyu.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) |
commit | 1674cdd989559f780b4ba9b779e3bb2e94f9d39a (patch) | |
tree | 0be86838799f6451adbd048f072dd55772335485 | |
parent | 8fac5e27ba2e8553c032404feeb2021cfb1f4f3d (diff) | |
download | camera-1674cdd989559f780b4ba9b779e3bb2e94f9d39a.zip camera-1674cdd989559f780b4ba9b779e3bb2e94f9d39a.tar.gz camera-1674cdd989559f780b4ba9b779e3bb2e94f9d39a.tar.bz2 |
fix foucus doesnot work bug
-rwxr-xr-x | CameraHal.cpp | 6 | ||||
-rwxr-xr-x | V4LCameraAdapter/V4LCameraAdapter.cpp | 19 |
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) { |