summaryrefslogtreecommitdiffstats
path: root/camera/OMXCameraAdapter/OMXAlgo.cpp
diff options
context:
space:
mode:
authorEmilian Peev <epeev@mm-sol.com>2012-01-06 09:26:08 +0200
committerDaniel Levin <dendy@ti.com>2012-07-25 08:55:39 -0500
commite4be82844d537c6b927bbdcc25311b7d08494bc8 (patch)
treea8029139e8fd64cda0042f7a6ccdd9f126f98ecf /camera/OMXCameraAdapter/OMXAlgo.cpp
parenta975b934a8b6216494c94328b029f3ca215da98e (diff)
downloadhardware_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.cpp15
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);
}