diff options
author | Emilian Peev <epeev@mm-sol.com> | 2012-01-06 09:26:08 +0200 |
---|---|---|
committer | Daniel Levin <dendy@ti.com> | 2012-07-25 08:55:39 -0500 |
commit | e4be82844d537c6b927bbdcc25311b7d08494bc8 (patch) | |
tree | a8029139e8fd64cda0042f7a6ccdd9f126f98ecf /camera/OMXCameraAdapter/OMXAlgo.cpp | |
parent | a975b934a8b6216494c94328b029f3ca215da98e (diff) | |
download | hardware_ti_omap4-e4be82844d537c6b927bbdcc25311b7d08494bc8.zip hardware_ti_omap4-e4be82844d537c6b927bbdcc25311b7d08494bc8.tar.gz hardware_ti_omap4-e4be82844d537c6b927bbdcc25311b7d08494bc8.tar.bz2 |
CameraHal: Fixes a corner case with sensor overclocking
- An issue with FOV can be observed when sensor overclocking
is enabled and then disabled. In most cases when sensor
overclocking is active the sensor will use a dedicated
sensor mode. If this mode is no longer needed and the client
configures a smaller resolution ( but for some reason sensor
overclocking is still enabled ), then the sensor will remain
in the same mode and as a result cropping might be applied.
The issue which this patch resolves is an error returned
by the camera when trying to disable sensor overclocking.
When this case occurs the preview port resolution will get
set before sensor overclocking configured.
Signed-off-by: Emilian Peev <epeev@mm-sol.com>
Change-Id: Ie9669376d556fef2984f2dc0edc66a8f65563b47
Diffstat (limited to 'camera/OMXCameraAdapter/OMXAlgo.cpp')
-rw-r--r-- | camera/OMXCameraAdapter/OMXAlgo.cpp | 15 |
1 files changed, 15 insertions, 0 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); } |