summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camera/OMXCameraAdapter/OMXAlgo.cpp15
-rw-r--r--camera/OMXCameraAdapter/OMXCameraAdapter.cpp12
2 files changed, 21 insertions, 6 deletions
diff --git a/camera/OMXCameraAdapter/OMXAlgo.cpp b/camera/OMXCameraAdapter/OMXAlgo.cpp
index 2a299ad..6638b5c 100644
--- a/camera/OMXCameraAdapter/OMXAlgo.cpp
+++ b/camera/OMXCameraAdapter/OMXAlgo.cpp
@@ -1071,6 +1071,13 @@ status_t OMXCameraAdapter::setSensorOrientation(unsigned int degree)
mPreviewData->mWidth = 640;
mPreviewData->mHeight = 480;
ret = setFormat(OMX_CAMERA_PORT_VIDEO_OUT_PREVIEW, *mPreviewData);
+
+ // Handles one corner case in which sensor overclocking
+ // would incorrectly return an error.
+ if ( BAD_VALUE == ret ) {
+ ret = setFormat (OMX_CAMERA_PORT_VIDEO_OUT_PREVIEW, *mPreviewData);
+ }
+
if ( ret != NO_ERROR ) {
CAMHAL_LOGEB("setFormat() failed %d", ret);
}
@@ -1099,6 +1106,14 @@ status_t OMXCameraAdapter::setSensorOrientation(unsigned int degree)
if ( NO_ERROR == ret ) {
ret = setFormat (mCameraAdapterParameters.mPrevPortIndex,
mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex]);
+
+ // Handles one corner case in which sensor overclocking
+ // would incorrectly return an error.
+ if ( BAD_VALUE == ret ) {
+ ret = setFormat (mCameraAdapterParameters.mPrevPortIndex,
+ mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex]);
+ }
+
if ( NO_ERROR != ret ) {
CAMHAL_LOGEB("setFormat() failed %d", ret);
}
diff --git a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp
index 431ec9e..935429f 100644
--- a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp
+++ b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp
@@ -787,6 +787,7 @@ status_t OMXCameraAdapter::setFormat(OMX_U32 port, OMXCameraPortParameters &port
int sensorID = -1;
size_t bufferCount;
status_t ret = NO_ERROR;
+ status_t overclockStatus = NO_ERROR;
LOG_FUNCTION_NAME;
@@ -826,9 +827,9 @@ status_t OMXCameraAdapter::setFormat(OMX_U32 port, OMXCameraPortParameters &port
( ( sensorID == SENSORID_OV5640 ) &&
( portCheck.format.video.nFrameWidth >= overclockWidth ) &&
( portCheck.format.video.nFrameHeight >= overclockHeight ) ) ){
- setSensorOverclock(true);
+ overclockStatus = setSensorOverclock(true);
} else {
- setSensorOverclock(false);
+ overclockStatus = setSensorOverclock(false);
}
portCheck.format.video.xFramerate = portParams.mFrameRate<<16;
@@ -948,7 +949,7 @@ status_t OMXCameraAdapter::setFormat(OMX_U32 port, OMXCameraPortParameters &port
LOG_FUNCTION_NAME_EXIT;
- return ErrorUtils::omxToAndroidError(eError);
+ return ErrorUtils::omxToAndroidError(eError) | overclockStatus;
EXIT:
@@ -956,7 +957,7 @@ status_t OMXCameraAdapter::setFormat(OMX_U32 port, OMXCameraPortParameters &port
LOG_FUNCTION_NAME_EXIT;
- return ErrorUtils::omxToAndroidError(eError);
+ return ErrorUtils::omxToAndroidError(eError) | overclockStatus;
}
status_t OMXCameraAdapter::flushBuffers()
@@ -2153,7 +2154,6 @@ status_t OMXCameraAdapter::setSensorOverclock(bool enable)
if ( OMX_ErrorNone != eError )
{
CAMHAL_LOGEB("Error while setting Sensor overclock 0x%x", eError);
- ret = BAD_VALUE;
}
else
{
@@ -2163,7 +2163,7 @@ status_t OMXCameraAdapter::setSensorOverclock(bool enable)
LOG_FUNCTION_NAME_EXIT;
- return ret;
+ return ErrorUtils::omxToAndroidError(eError);
}
status_t OMXCameraAdapter::printComponentVersion(OMX_HANDLETYPE handle)