summaryrefslogtreecommitdiffstats
path: root/camera
diff options
context:
space:
mode:
authorMilen Mitkov <mmitkov@mm-sol.com>2011-11-02 17:29:42 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2011-11-02 17:29:42 +0000
commit16be25dbc86a6a32514fffb347606e75ea83dd95 (patch)
tree8fb5d63fed6c53e725a3b83f7be71bc4e19d8cd4 /camera
parentcd06844153a66b17f5c51682b1819bce87f28793 (diff)
parenteb3ed8e75abbe8785b86a47851f4d7e98300006c (diff)
downloadhardware_ti_omap4xxx-16be25dbc86a6a32514fffb347606e75ea83dd95.zip
hardware_ti_omap4xxx-16be25dbc86a6a32514fffb347606e75ea83dd95.tar.gz
hardware_ti_omap4xxx-16be25dbc86a6a32514fffb347606e75ea83dd95.tar.bz2
am eb3ed8e7: am 3c272a99: CameraHAL: Return status after CAF finishes
* commit 'eb3ed8e75abbe8785b86a47851f4d7e98300006c': CameraHAL: Return status after CAF finishes
Diffstat (limited to 'camera')
-rwxr-xr-xcamera/OMXCameraAdapter/OMXCameraAdapter.cpp11
-rw-r--r--camera/OMXCameraAdapter/OMXFocus.cpp33
2 files changed, 19 insertions, 25 deletions
diff --git a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp
index 976fe8f..2bc40d0 100755
--- a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp
+++ b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp
@@ -225,7 +225,7 @@ status_t OMXCameraAdapter::initialize(CameraProperties::Properties* caps)
{
if( ret == INVALID_OPERATION){
CAMHAL_LOGDA("command handler thread already runnning!!");
- ret = NO_ERROR;
+ ret = NO_ERROR;
} else
{
CAMHAL_LOGEA("Couldn't run command handlerthread");
@@ -248,7 +248,7 @@ status_t OMXCameraAdapter::initialize(CameraProperties::Properties* caps)
{
if( ret == INVALID_OPERATION){
CAMHAL_LOGDA("omx callback handler thread already runnning!!");
- ret = NO_ERROR;
+ ret = NO_ERROR;
}else
{
CAMHAL_LOGEA("Couldn't run omx callback handler thread");
@@ -1883,6 +1883,12 @@ status_t OMXCameraAdapter::startPreview()
if ( mPending3Asettings )
apply3Asettings(mParameters3A);
+ // enable focus callbacks just once here
+ // fixes an issue with slow callback registration in Ducati
+ if ( NO_ERROR == ret ) {
+ ret = setFocusCallback(true);
+ }
+
//reset frame rate estimates
mFPS = 0.0f;
mLastFPS = 0.0f;
@@ -3600,4 +3606,3 @@ extern "C" int CameraAdapter_Capabilities(CameraProperties::Properties* properti
/*--------------------Camera Adapter Class ENDS here-----------------------------*/
-
diff --git a/camera/OMXCameraAdapter/OMXFocus.cpp b/camera/OMXCameraAdapter/OMXFocus.cpp
index 102daeb..7655d90 100644
--- a/camera/OMXCameraAdapter/OMXFocus.cpp
+++ b/camera/OMXCameraAdapter/OMXFocus.cpp
@@ -149,9 +149,10 @@ status_t OMXCameraAdapter::doAutoFocus()
}
}
- if ( ( focusControl.eFocusControl != OMX_IMAGE_FocusControlAuto ) &&
- ( focusControl.eFocusControl != ( OMX_IMAGE_FOCUSCONTROLTYPE )
- OMX_IMAGE_FocusControlAutoInfinity ) ) {
+ if ( (focusControl.eFocusControl == OMX_IMAGE_FocusControlAuto
+ && focusStatus.eFocusStatus == OMX_FocusStatusRequest) ||
+ (mParameters3A.Focus != (OMX_IMAGE_FOCUSCONTROLTYPE)OMX_IMAGE_FocusControlAuto) )
+ {
ret = RegisterForEvent(mCameraAdapterParameters.mHandleComp,
(OMX_EVENTTYPE) OMX_EventIndexSettingChanged,
@@ -159,13 +160,12 @@ status_t OMXCameraAdapter::doAutoFocus()
OMX_IndexConfigCommonFocusStatus,
mDoAFSem);
- if ( NO_ERROR == ret ) {
- ret = setFocusCallback(true);
- }
-
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigFocusControl,
- &focusControl);
+ if ( focusControl.eFocusControl != OMX_IMAGE_FocusControlAuto )
+ {
+ eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
+ OMX_IndexConfigFocusControl,
+ &focusControl);
+ }
if ( OMX_ErrorNone != eError ) {
CAMHAL_LOGEB("Error while starting focus 0x%x", eError);
@@ -181,9 +181,6 @@ status_t OMXCameraAdapter::doAutoFocus()
return EINVAL;
}
- //Disable auto focus callback from Ducati
- setFocusCallback(false);
- CAMHAL_LOGEA("Autofocus callback timeout expired");
RemoveEvent(mCameraAdapterParameters.mHandleComp,
(OMX_EVENTTYPE) OMX_EventIndexSettingChanged,
OMX_ALL,
@@ -191,9 +188,7 @@ status_t OMXCameraAdapter::doAutoFocus()
NULL );
returnFocusStatus(true);
} else {
- CAMHAL_LOGDA("Autofocus callback received");
- //Disable auto focus callback from Ducati
- setFocusCallback(false);
+
ret = returnFocusStatus(false);
}
} else { // Focus mode in continuous
@@ -235,12 +230,6 @@ status_t OMXCameraAdapter::stopAutoFocus()
}
if ( NO_ERROR == ret )
- {
- //Disable the callback first
- ret = setFocusCallback(false);
- }
-
- if ( NO_ERROR == ret )
{
OMX_INIT_STRUCT_PTR (&focusControl, OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE);
focusControl.eFocusControl = OMX_IMAGE_FocusControlOff;