diff options
-rw-r--r-- | camera/OMXCameraAdapter/OMXAlgo.cpp | 15 | ||||
-rw-r--r-- | camera/OMXCameraAdapter/OMXCameraAdapter.cpp | 12 |
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) |