summaryrefslogtreecommitdiffstats
path: root/camera/OMXCameraAdapter/OMX3A.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'camera/OMXCameraAdapter/OMX3A.cpp')
-rw-r--r--camera/OMXCameraAdapter/OMX3A.cpp2005
1 files changed, 0 insertions, 2005 deletions
diff --git a/camera/OMXCameraAdapter/OMX3A.cpp b/camera/OMXCameraAdapter/OMX3A.cpp
deleted file mode 100644
index 040d816..0000000
--- a/camera/OMXCameraAdapter/OMX3A.cpp
+++ /dev/null
@@ -1,2005 +0,0 @@
-/*
- * Copyright (C) Texas Instruments - http://www.ti.com/
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
-* @file OMX3A.cpp
-*
-* This file contains functionality for handling 3A configurations.
-*
-*/
-
-#include "CameraHal.h"
-#include "OMXCameraAdapter.h"
-#include "ErrorUtils.h"
-
-#include <cutils/properties.h>
-
-#define METERING_AREAS_RANGE 0xFF
-
-static const char PARAM_SEP[] = ",";
-
-namespace Ti {
-namespace Camera {
-
-const SceneModesEntry* OMXCameraAdapter::getSceneModeEntry(const char* name,
- OMX_SCENEMODETYPE scene) {
- const SceneModesEntry* cameraLUT = NULL;
- const SceneModesEntry* entry = NULL;
- unsigned int numEntries = 0;
-
- // 1. Find camera's scene mode LUT
- for (unsigned int i = 0; i < ARRAY_SIZE(CameraToSensorModesLUT); i++) {
- if (strcmp(CameraToSensorModesLUT[i].name, name) == 0) {
- cameraLUT = CameraToSensorModesLUT[i].Table;
- numEntries = CameraToSensorModesLUT[i].size;
- break;
- }
- }
-
- // 2. Find scene mode entry in table
- if (!cameraLUT) {
- goto EXIT;
- }
-
- for (unsigned int i = 0; i < numEntries; i++) {
- if(cameraLUT[i].scene == scene) {
- entry = cameraLUT + i;
- break;
- }
- }
- EXIT:
- return entry;
-}
-
-status_t OMXCameraAdapter::setParameters3A(const android::CameraParameters &params,
- BaseCameraAdapter::AdapterState state)
-{
- status_t ret = NO_ERROR;
- int mode = 0;
- const char *str = NULL;
- int varint = 0;
- BaseCameraAdapter::AdapterState nextState;
- BaseCameraAdapter::getNextState(nextState);
-
- LOG_FUNCTION_NAME;
-
- android::AutoMutex lock(m3ASettingsUpdateLock);
-
- str = params.get(android::CameraParameters::KEY_SCENE_MODE);
- mode = getLUTvalue_HALtoOMX( str, SceneLUT);
- if ( mFirstTimeInit || ((str != NULL) && ( mParameters3A.SceneMode != mode )) ) {
- if ( 0 <= mode ) {
- mParameters3A.SceneMode = mode;
- if ((mode == OMX_Manual) && (mFirstTimeInit == false)){//Auto mode
- mFirstTimeInit = true;
- }
- if ((mode != OMX_Manual) &&
- (state & PREVIEW_ACTIVE) && !(nextState & CAPTURE_ACTIVE)) {
- // if setting preset scene mode, previewing, and not in the middle of capture
- // set preset scene mode immediately instead of in next FBD
- // for feedback params to work properly since they need to be read
- // by application in subsequent getParameters()
- ret |= setScene(mParameters3A);
- // re-apply EV compensation after setting scene mode since it probably reset it
- if(mParameters3A.EVCompensation) {
- setEVCompensation(mParameters3A);
- }
- return ret;
- } else {
- mPending3Asettings |= SetSceneMode;
- }
- } else {
- mParameters3A.SceneMode = OMX_Manual;
- }
- CAMHAL_LOGVB("SceneMode %d", mParameters3A.SceneMode);
- }
-
-#ifdef OMAP_ENHANCEMENT
- if ( (str = params.get(TICameraParameters::KEY_EXPOSURE_MODE)) != NULL ) {
- mode = getLUTvalue_HALtoOMX(str, ExpLUT);
- if ( mParameters3A.Exposure != mode ) {
- // If either the new or the old exposure mode is manual set also
- // the SetManualExposure flag to call setManualExposureVal where
- // the auto gain and exposure flags are configured
- if ( mParameters3A.Exposure == OMX_ExposureControlOff ||
- mode == OMX_ExposureControlOff ) {
- mPending3Asettings |= SetManualExposure;
- }
- mParameters3A.Exposure = mode;
- CAMHAL_LOGDB("Exposure mode %d", mode);
- if ( 0 <= mParameters3A.Exposure ) {
- mPending3Asettings |= SetExpMode;
- }
- }
- if ( mode == OMX_ExposureControlOff ) {
- mode = params.getInt(TICameraParameters::KEY_MANUAL_EXPOSURE);
- if ( mParameters3A.ManualExposure != mode ) {
- mParameters3A.ManualExposure = mode;
- CAMHAL_LOGDB("Manual Exposure = %d", mode);
- mPending3Asettings |= SetManualExposure;
- }
- mode = params.getInt(TICameraParameters::KEY_MANUAL_EXPOSURE_RIGHT);
- if ( mParameters3A.ManualExposureRight != mode ) {
- mParameters3A.ManualExposureRight = mode;
- CAMHAL_LOGDB("Manual Exposure right = %d", mode);
- mPending3Asettings |= SetManualExposure;
- }
- mode = params.getInt(TICameraParameters::KEY_MANUAL_GAIN_ISO);
- if ( mParameters3A.ManualGain != mode ) {
- mParameters3A.ManualGain = mode;
- CAMHAL_LOGDB("Manual Gain = %d", mode);
- mPending3Asettings |= SetManualExposure;
- }
- mode = params.getInt(TICameraParameters::KEY_MANUAL_GAIN_ISO_RIGHT);
- if ( mParameters3A.ManualGainRight != mode ) {
- mParameters3A.ManualGainRight = mode;
- CAMHAL_LOGDB("Manual Gain right = %d", mode);
- mPending3Asettings |= SetManualExposure;
- }
- }
- }
-#endif
-
- str = params.get(android::CameraParameters::KEY_WHITE_BALANCE);
- mode = getLUTvalue_HALtoOMX( str, WBalLUT);
- if (mFirstTimeInit || ((str != NULL) && (mode != mParameters3A.WhiteBallance)))
- {
- mParameters3A.WhiteBallance = mode;
- CAMHAL_LOGDB("Whitebalance mode %d", mode);
- if ( 0 <= mParameters3A.WhiteBallance )
- {
- mPending3Asettings |= SetWhiteBallance;
- }
- }
-
-#ifdef OMAP_ENHANCEMENT
- varint = params.getInt(TICameraParameters::KEY_CONTRAST);
- if ( 0 <= varint )
- {
- if ( mFirstTimeInit ||
- ( (mParameters3A.Contrast + CONTRAST_OFFSET) != varint ) )
- {
- mParameters3A.Contrast = varint - CONTRAST_OFFSET;
- CAMHAL_LOGDB("Contrast %d", mParameters3A.Contrast);
- mPending3Asettings |= SetContrast;
- }
- }
-
- varint = params.getInt(TICameraParameters::KEY_SHARPNESS);
- if ( 0 <= varint )
- {
- if ( mFirstTimeInit ||
- ((mParameters3A.Sharpness + SHARPNESS_OFFSET) != varint ))
- {
- mParameters3A.Sharpness = varint - SHARPNESS_OFFSET;
- CAMHAL_LOGDB("Sharpness %d", mParameters3A.Sharpness);
- mPending3Asettings |= SetSharpness;
- }
- }
-
- varint = params.getInt(TICameraParameters::KEY_SATURATION);
- if ( 0 <= varint )
- {
- if ( mFirstTimeInit ||
- ((mParameters3A.Saturation + SATURATION_OFFSET) != varint ) )
- {
- mParameters3A.Saturation = varint - SATURATION_OFFSET;
- CAMHAL_LOGDB("Saturation %d", mParameters3A.Saturation);
- mPending3Asettings |= SetSaturation;
- }
- }
-
- varint = params.getInt(TICameraParameters::KEY_BRIGHTNESS);
- if ( 0 <= varint )
- {
- if ( mFirstTimeInit ||
- (( mParameters3A.Brightness != varint )) )
- {
- mParameters3A.Brightness = (unsigned) varint;
- CAMHAL_LOGDB("Brightness %d", mParameters3A.Brightness);
- mPending3Asettings |= SetBrightness;
- }
- }
-#endif
-
- str = params.get(android::CameraParameters::KEY_ANTIBANDING);
- mode = getLUTvalue_HALtoOMX(str,FlickerLUT);
- if ( mFirstTimeInit || ( ( str != NULL ) && ( mParameters3A.Flicker != mode ) ))
- {
- mParameters3A.Flicker = mode;
- CAMHAL_LOGDB("Flicker %d", mParameters3A.Flicker);
- if ( 0 <= mParameters3A.Flicker )
- {
- mPending3Asettings |= SetFlicker;
- }
- }
-
-#ifdef OMAP_ENHANCEMENT
- str = params.get(TICameraParameters::KEY_ISO);
- mode = getLUTvalue_HALtoOMX(str, IsoLUT);
- CAMHAL_LOGVB("ISO mode arrived in HAL : %s", str);
- if ( mFirstTimeInit || ( ( str != NULL ) && ( mParameters3A.ISO != mode )) )
- {
- mParameters3A.ISO = mode;
- CAMHAL_LOGDB("ISO %d", mParameters3A.ISO);
- if ( 0 <= mParameters3A.ISO )
- {
- mPending3Asettings |= SetISO;
- }
- }
-#endif
-
- str = params.get(android::CameraParameters::KEY_FOCUS_MODE);
- mode = getLUTvalue_HALtoOMX(str, FocusLUT);
- if ( (mFirstTimeInit || ((str != NULL) && (mParameters3A.Focus != mode))))
- {
- mPending3Asettings |= SetFocus;
-
- mParameters3A.Focus = mode;
-
- // if focus mode is set to infinity...update focus distance immediately
- if (mode == OMX_IMAGE_FocusControlAutoInfinity) {
- updateFocusDistances(mParameters);
- }
-
- CAMHAL_LOGDB("Focus %x", mParameters3A.Focus);
- }
-
- str = params.get(android::CameraParameters::KEY_EXPOSURE_COMPENSATION);
- varint = params.getInt(android::CameraParameters::KEY_EXPOSURE_COMPENSATION);
- if ( mFirstTimeInit || (str && (mParameters3A.EVCompensation != varint))) {
- CAMHAL_LOGDB("Setting EV Compensation to %d", varint);
- mParameters3A.EVCompensation = varint;
- mPending3Asettings |= SetEVCompensation;
- }
-
- str = params.get(android::CameraParameters::KEY_FLASH_MODE);
- mode = getLUTvalue_HALtoOMX( str, FlashLUT);
- if ( mFirstTimeInit || (( str != NULL ) && ( mParameters3A.FlashMode != mode )) )
- {
- if ( 0 <= mode )
- {
- mParameters3A.FlashMode = mode;
- mPending3Asettings |= SetFlash;
- }
- else
- {
- mParameters3A.FlashMode = OMX_IMAGE_FlashControlAuto;
- }
- }
-
- CAMHAL_LOGVB("Flash Setting %s", str);
- CAMHAL_LOGVB("FlashMode %d", mParameters3A.FlashMode);
-
- str = params.get(android::CameraParameters::KEY_EFFECT);
- mode = getLUTvalue_HALtoOMX( str, EffLUT);
- if ( mFirstTimeInit || (( str != NULL ) && ( mParameters3A.Effect != mode )) )
- {
- mParameters3A.Effect = mode;
- CAMHAL_LOGDB("Effect %d", mParameters3A.Effect);
- if ( 0 <= mParameters3A.Effect )
- {
- mPending3Asettings |= SetEffect;
- }
- }
-
- str = params.get(android::CameraParameters::KEY_AUTO_EXPOSURE_LOCK_SUPPORTED);
- if ( (str != NULL) && (!strcmp(str, android::CameraParameters::TRUE)) )
- {
- OMX_BOOL lock = OMX_FALSE;
- mUserSetExpLock = OMX_FALSE;
- str = params.get(android::CameraParameters::KEY_AUTO_EXPOSURE_LOCK);
- if (str && ((strcmp(str, android::CameraParameters::TRUE)) == 0))
- {
- CAMHAL_LOGVA("Locking Exposure");
- lock = OMX_TRUE;
- mUserSetExpLock = OMX_TRUE;
- }
- else
- {
- CAMHAL_LOGVA("UnLocking Exposure");
- }
-
- if (mParameters3A.ExposureLock != lock)
- {
- mParameters3A.ExposureLock = lock;
- CAMHAL_LOGDB("ExposureLock %d", lock);
- mPending3Asettings |= SetExpLock;
- }
- }
-
- str = params.get(android::CameraParameters::KEY_AUTO_WHITEBALANCE_LOCK_SUPPORTED);
- if ( (str != NULL) && (!strcmp(str, android::CameraParameters::TRUE)) )
- {
- OMX_BOOL lock = OMX_FALSE;
- mUserSetWbLock = OMX_FALSE;
- str = params.get(android::CameraParameters::KEY_AUTO_WHITEBALANCE_LOCK);
- if (str && ((strcmp(str, android::CameraParameters::TRUE)) == 0))
- {
- CAMHAL_LOGVA("Locking WhiteBalance");
- lock = OMX_TRUE;
- mUserSetWbLock = OMX_TRUE;
- }
- else
- {
- CAMHAL_LOGVA("UnLocking WhiteBalance");
- }
- if (mParameters3A.WhiteBalanceLock != lock)
- {
- mParameters3A.WhiteBalanceLock = lock;
- CAMHAL_LOGDB("WhiteBalanceLock %d", lock);
- mPending3Asettings |= SetWBLock;
- }
- }
-
- str = params.get(TICameraParameters::KEY_AUTO_FOCUS_LOCK);
- if (str && (strcmp(str, android::CameraParameters::TRUE) == 0) && (mParameters3A.FocusLock != OMX_TRUE)) {
- CAMHAL_LOGVA("Locking Focus");
- mParameters3A.FocusLock = OMX_TRUE;
- setFocusLock(mParameters3A);
- } else if (str && (strcmp(str, android::CameraParameters::FALSE) == 0) && (mParameters3A.FocusLock != OMX_FALSE)) {
- CAMHAL_LOGVA("UnLocking Focus");
- mParameters3A.FocusLock = OMX_FALSE;
- setFocusLock(mParameters3A);
- }
-
- str = params.get(android::CameraParameters::KEY_METERING_AREAS);
- if ( (str != NULL) ) {
- size_t MAX_METERING_AREAS;
- android::Vector<android::sp<CameraArea> > tempAreas;
-
- MAX_METERING_AREAS = atoi(params.get(android::CameraParameters::KEY_MAX_NUM_METERING_AREAS));
-
- android::AutoMutex lock(mMeteringAreasLock);
-
- ret = CameraArea::parseAreas(str, ( strlen(str) + 1 ), tempAreas);
-
- CAMHAL_LOGVB("areAreasDifferent? = %d",
- CameraArea::areAreasDifferent(mMeteringAreas, tempAreas));
-
- if ( (NO_ERROR == ret) && CameraArea::areAreasDifferent(mMeteringAreas, tempAreas) ) {
- mMeteringAreas.clear();
- mMeteringAreas = tempAreas;
-
- if ( MAX_METERING_AREAS >= mMeteringAreas.size() ) {
- CAMHAL_LOGDB("Setting Metering Areas %s",
- params.get(android::CameraParameters::KEY_METERING_AREAS));
-
- mPending3Asettings |= SetMeteringAreas;
- } else {
- CAMHAL_LOGEB("Metering areas supported %d, metering areas set %d",
- MAX_METERING_AREAS, mMeteringAreas.size());
- ret = -EINVAL;
- }
- }
- }
-
-// TI extensions for enable/disable algos
-#ifndef OMAP_TUNA
- declareParameter3ABool(params, TICameraParameters::KEY_ALGO_FIXED_GAMMA,
- mParameters3A.AlgoFixedGamma, SetAlgoFixedGamma, "Fixed Gamma");
- declareParameter3ABool(params, TICameraParameters::KEY_ALGO_NSF1,
- mParameters3A.AlgoNSF1, SetAlgoNSF1, "NSF1");
- declareParameter3ABool(params, TICameraParameters::KEY_ALGO_NSF2,
- mParameters3A.AlgoNSF2, SetAlgoNSF2, "NSF2");
- declareParameter3ABool(params, TICameraParameters::KEY_ALGO_SHARPENING,
- mParameters3A.AlgoSharpening, SetAlgoSharpening, "Sharpening");
- declareParameter3ABool(params, TICameraParameters::KEY_ALGO_THREELINCOLORMAP,
- mParameters3A.AlgoThreeLinColorMap, SetAlgoThreeLinColorMap, "ThreeLinColorMap");
- declareParameter3ABool(params, TICameraParameters::KEY_ALGO_GIC, mParameters3A.AlgoGIC, SetAlgoGIC, "GIC");
-#endif
-
- LOG_FUNCTION_NAME_EXIT;
-
- return ret;
-}
-
-void OMXCameraAdapter::declareParameter3ABool(const android::CameraParameters &params, const char *key,
- OMX_BOOL &current_setting, E3ASettingsFlags pending,
- const char *msg)
-{
- OMX_BOOL val = OMX_TRUE;
- const char *str = params.get(key);
-
- if (str && ((strcmp(str, android::CameraParameters::FALSE)) == 0))
- {
- CAMHAL_LOGVB("Disabling %s", msg);
- val = OMX_FALSE;
- }
- else
- {
- CAMHAL_LOGVB("Enabling %s", msg);
- }
- if (current_setting != val)
- {
- current_setting = val;
- CAMHAL_LOGDB("%s %s", msg, current_setting ? "enabled" : "disabled");
- mPending3Asettings |= pending;
- }
-}
-
-int OMXCameraAdapter::getLUTvalue_HALtoOMX(const char * HalValue, LUTtype LUT)
-{
- int LUTsize = LUT.size;
- if( HalValue )
- for(int i = 0; i < LUTsize; i++)
- if( 0 == strcmp(LUT.Table[i].userDefinition, HalValue) )
- return LUT.Table[i].omxDefinition;
-
- return -ENOENT;
-}
-
-const char* OMXCameraAdapter::getLUTvalue_OMXtoHAL(int OMXValue, LUTtype LUT)
-{
- int LUTsize = LUT.size;
- for(int i = 0; i < LUTsize; i++)
- if( LUT.Table[i].omxDefinition == OMXValue )
- return LUT.Table[i].userDefinition;
-
- return NULL;
-}
-
-int OMXCameraAdapter::getMultipleLUTvalue_OMXtoHAL(int OMXValue, LUTtype LUT, char * supported)
-{
- int num = 0;
- int remaining_size;
- int LUTsize = LUT.size;
- for(int i = 0; i < LUTsize; i++)
- if( LUT.Table[i].omxDefinition == OMXValue )
- {
- num++;
- if (supported[0] != '\0') {
- strncat(supported, PARAM_SEP, 1);
- }
- remaining_size = ((((int)MAX_PROP_VALUE_LENGTH - 1 - (int)strlen(supported)) < 0) ? 0 : (MAX_PROP_VALUE_LENGTH - 1 - strlen(supported)));
- strncat(supported, LUT.Table[i].userDefinition, remaining_size);
- }
-
- return num;
-}
-
-status_t OMXCameraAdapter::setExposureMode(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_EXPOSURECONTROLTYPE exp;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&exp, OMX_CONFIG_EXPOSURECONTROLTYPE);
- exp.nPortIndex = OMX_ALL;
- exp.eExposureControl = (OMX_EXPOSURECONTROLTYPE)Gen3A.Exposure;
-
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonExposure,
- &exp);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring exposure mode 0x%x", eError);
- }
- else
- {
- CAMHAL_LOGDA("Camera exposure mode configured successfully");
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-#ifndef OMAP_TUNA
-static bool isFlashDisabled() {
-#if (PROPERTY_VALUE_MAX < 5)
-#error "PROPERTY_VALUE_MAX must be at least 5"
-#endif
-
- // Ignore flash_off system property for user build.
- char buildType[PROPERTY_VALUE_MAX];
- if (property_get("ro.build.type", buildType, NULL) &&
- !strcasecmp(buildType, "user")) {
- return false;
- }
-
- char value[PROPERTY_VALUE_MAX];
- if (property_get("camera.flash_off", value, NULL) &&
- (!strcasecmp(value, android::CameraParameters::TRUE) || !strcasecmp(value, "1"))) {
- CAMHAL_LOGW("flash is disabled for testing purpose");
- return true;
- }
-
- return false;
-}
-#endif
-
-status_t OMXCameraAdapter::setManualExposureVal(Gen3A_settings& Gen3A) {
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_EXPOSUREVALUETYPE expVal;
- OMX_TI_CONFIG_EXPOSUREVALUERIGHTTYPE expValRight;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState ) {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&expVal, OMX_CONFIG_EXPOSUREVALUETYPE);
- OMX_INIT_STRUCT_PTR (&expValRight, OMX_TI_CONFIG_EXPOSUREVALUERIGHTTYPE);
- expVal.nPortIndex = OMX_ALL;
- expValRight.nPortIndex = OMX_ALL;
-
- eError = OMX_GetConfig(mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonExposureValue,
- &expVal);
- if ( OMX_ErrorNone == eError ) {
- eError = OMX_GetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE) OMX_TI_IndexConfigRightExposureValue,
- &expValRight);
- }
- if ( OMX_ErrorNone != eError ) {
- CAMHAL_LOGEB("OMX_GetConfig error 0x%x (manual exposure values)", eError);
- return Utils::ErrorUtils::omxToAndroidError(eError);
- }
-
- if ( Gen3A.Exposure != OMX_ExposureControlOff ) {
- expVal.bAutoShutterSpeed = OMX_TRUE;
- expVal.bAutoSensitivity = OMX_TRUE;
- } else {
- expVal.bAutoShutterSpeed = OMX_FALSE;
- expVal.nShutterSpeedMsec = Gen3A.ManualExposure;
- expValRight.nShutterSpeedMsec = Gen3A.ManualExposureRight;
- if ( Gen3A.ManualGain <= 0 || Gen3A.ManualGainRight <= 0 ) {
- expVal.bAutoSensitivity = OMX_TRUE;
- } else {
- expVal.bAutoSensitivity = OMX_FALSE;
- expVal.nSensitivity = Gen3A.ManualGain;
- expValRight.nSensitivity = Gen3A.ManualGainRight;
- }
- }
-
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonExposureValue,
- &expVal);
- if ( OMX_ErrorNone == eError ) {
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE) OMX_TI_IndexConfigRightExposureValue,
- &expValRight);
- }
-
- if ( OMX_ErrorNone != eError ) {
- CAMHAL_LOGEB("Error 0x%x while configuring manual exposure values", eError);
- } else {
- CAMHAL_LOGDA("Camera manual exposure values configured successfully");
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setFlashMode(Gen3A_settings& Gen3A)
-{
- status_t ret = NO_ERROR;
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_IMAGE_PARAM_FLASHCONTROLTYPE flash;
- OMX_CONFIG_FOCUSASSISTTYPE focusAssist;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&flash, OMX_IMAGE_PARAM_FLASHCONTROLTYPE);
- flash.nPortIndex = OMX_ALL;
-
-#ifndef OMAP_TUNA
- if (isFlashDisabled()) {
- flash.eFlashControl = ( OMX_IMAGE_FLASHCONTROLTYPE ) OMX_IMAGE_FlashControlOff;
- } else {
-#endif
- flash.eFlashControl = ( OMX_IMAGE_FLASHCONTROLTYPE ) Gen3A.FlashMode;
-#ifndef OMAP_TUNA
- }
-#endif
-
- CAMHAL_LOGDB("Configuring flash mode 0x%x", flash.eFlashControl);
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE) OMX_IndexConfigFlashControl,
- &flash);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring flash mode 0x%x", eError);
- }
- else
- {
- CAMHAL_LOGDA("Camera flash mode configured successfully");
- }
-
- if ( OMX_ErrorNone == eError )
- {
- OMX_INIT_STRUCT_PTR (&focusAssist, OMX_CONFIG_FOCUSASSISTTYPE);
- focusAssist.nPortIndex = OMX_ALL;
- if ( flash.eFlashControl == OMX_IMAGE_FlashControlOff )
- {
- focusAssist.bFocusAssist = OMX_FALSE;
- }
- else
- {
- focusAssist.bFocusAssist = OMX_TRUE;
- }
-
- CAMHAL_LOGDB("Configuring AF Assist mode 0x%x", focusAssist.bFocusAssist);
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE) OMX_IndexConfigFocusAssist,
- &focusAssist);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring AF Assist mode 0x%x", eError);
- }
- else
- {
- CAMHAL_LOGDA("Camera AF Assist mode configured successfully");
- }
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::getFlashMode(Gen3A_settings& Gen3A)
-{
- status_t ret = NO_ERROR;
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_IMAGE_PARAM_FLASHCONTROLTYPE flash;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState ) {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&flash, OMX_IMAGE_PARAM_FLASHCONTROLTYPE);
- flash.nPortIndex = OMX_ALL;
-
- eError = OMX_GetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE) OMX_IndexConfigFlashControl,
- &flash);
-
- if ( OMX_ErrorNone != eError ) {
- CAMHAL_LOGEB("Error while getting flash mode 0x%x", eError);
- } else {
- Gen3A.FlashMode = flash.eFlashControl;
- CAMHAL_LOGDB("Gen3A.FlashMode 0x%x", Gen3A.FlashMode);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setFocusMode(Gen3A_settings& Gen3A)
-{
- status_t ret = NO_ERROR;
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE focus;
- size_t top, left, width, height, weight;
- OMX_CONFIG_BOOLEANTYPE bOMX;
-
- LOG_FUNCTION_NAME;
-
- BaseCameraAdapter::AdapterState state;
- BaseCameraAdapter::getState(state);
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
-
- ///Face detection takes precedence over touch AF
- if ( mFaceDetectionRunning )
- {
- //Disable region priority first
- setAlgoPriority(REGION_PRIORITY, FOCUS_ALGO, false);
-
- //Enable face algorithm priority for focus
- setAlgoPriority(FACE_PRIORITY, FOCUS_ALGO , true);
-
- //Do normal focus afterwards
- ////FIXME: Check if the extended focus control is needed? this overrides caf
- //focusControl.eFocusControl = ( OMX_IMAGE_FOCUSCONTROLTYPE ) OMX_IMAGE_FocusControlExtended;
- }
- else if ( (!mFocusAreas.isEmpty()) && (!mFocusAreas.itemAt(0)->isZeroArea()) )
- {
-
- //Disable face priority first
- setAlgoPriority(FACE_PRIORITY, FOCUS_ALGO, false);
-
- //Enable region algorithm priority
- setAlgoPriority(REGION_PRIORITY, FOCUS_ALGO, true);
-
-
- //Do normal focus afterwards
- //FIXME: Check if the extended focus control is needed? this overrides caf
- //focus.eFocusControl = ( OMX_IMAGE_FOCUSCONTROLTYPE ) OMX_IMAGE_FocusControlExtended;
-
- }
- else
- {
-
- //Disable both region and face priority
- setAlgoPriority(REGION_PRIORITY, FOCUS_ALGO, false);
-
- setAlgoPriority(FACE_PRIORITY, FOCUS_ALGO, false);
-
- }
-
- if ( NO_ERROR == ret && ((state & AF_ACTIVE) == 0) )
- {
- OMX_INIT_STRUCT_PTR (&bOMX, OMX_CONFIG_BOOLEANTYPE);
-
- if ( Gen3A.Focus == OMX_IMAGE_FocusControlAutoInfinity)
- {
- // Don't lock at infinity, otherwise the AF cannot drive
- // the lens at infinity position
- if( set3ALock(mUserSetExpLock, mUserSetWbLock, OMX_FALSE) != NO_ERROR)
- {
- CAMHAL_LOGEA("Error Applying 3A locks");
- } else {
- CAMHAL_LOGDA("Focus locked. Applied focus locks successfully");
- }
- }
- if ( Gen3A.Focus == OMX_IMAGE_FocusControlAuto ||
- Gen3A.Focus == OMX_IMAGE_FocusControlAutoInfinity)
- {
- // Run focus scanning if switching to continuous infinity focus mode
- bOMX.bEnabled = OMX_TRUE;
- }
- else
- {
- bOMX.bEnabled = OMX_FALSE;
- }
-
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE)OMX_TI_IndexConfigAutofocusEnable,
- &bOMX);
-
- OMX_INIT_STRUCT_PTR (&focus, OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE);
- focus.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- focus.eFocusControl = (OMX_IMAGE_FOCUSCONTROLTYPE)Gen3A.Focus;
-
- CAMHAL_LOGDB("Configuring focus mode 0x%x", focus.eFocusControl);
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp, OMX_IndexConfigFocusControl, &focus);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring focus mode 0x%x", eError);
- }
- else
- {
- CAMHAL_LOGDA("Camera focus mode configured successfully");
- }
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::getFocusMode(Gen3A_settings& Gen3A)
-{
- status_t ret = NO_ERROR;
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE focus;
- size_t top, left, width, height, weight;
-
- LOG_FUNCTION_NAME;
-
- if (OMX_StateInvalid == mComponentState) {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&focus, OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE);
- focus.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- eError = OMX_GetConfig(mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigFocusControl, &focus);
-
- if (OMX_ErrorNone != eError) {
- CAMHAL_LOGEB("Error while configuring focus mode 0x%x", eError);
- } else {
- Gen3A.Focus = focus.eFocusControl;
- CAMHAL_LOGDB("Gen3A.Focus 0x%x", Gen3A.Focus);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setScene(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_SCENEMODETYPE scene;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&scene, OMX_CONFIG_SCENEMODETYPE);
- scene.nPortIndex = OMX_ALL;
- scene.eSceneMode = ( OMX_SCENEMODETYPE ) Gen3A.SceneMode;
-
- CAMHAL_LOGDB("Configuring scene mode 0x%x", scene.eSceneMode);
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- ( OMX_INDEXTYPE ) OMX_TI_IndexConfigSceneMode,
- &scene);
-
- if (OMX_ErrorNone != eError) {
- CAMHAL_LOGEB("Error while configuring scene mode 0x%x", eError);
- } else {
- CAMHAL_LOGDA("Camera scene configured successfully");
- if (Gen3A.SceneMode != OMX_Manual) {
- // Get preset scene mode feedback
- getFocusMode(Gen3A);
- getFlashMode(Gen3A);
- getWBMode(Gen3A);
-
- // TODO(XXX): Re-enable these for mainline
- // getSharpness(Gen3A);
- // getSaturation(Gen3A);
- // getISO(Gen3A);
- }
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setEVCompensation(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_EXPOSUREVALUETYPE expValues;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&expValues, OMX_CONFIG_EXPOSUREVALUETYPE);
- expValues.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
-
- OMX_GetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonExposureValue,
- &expValues);
- CAMHAL_LOGDB("old EV Compensation for OMX = 0x%x", (int)expValues.xEVCompensation);
- CAMHAL_LOGDB("EV Compensation for HAL = %d", Gen3A.EVCompensation);
-
- expValues.xEVCompensation = ( Gen3A.EVCompensation * ( 1 << Q16_OFFSET ) ) / 10;
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonExposureValue,
- &expValues);
- CAMHAL_LOGDB("new EV Compensation for OMX = 0x%x", (int)expValues.xEVCompensation);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring EV Compensation 0x%x error = 0x%x",
- ( unsigned int ) expValues.xEVCompensation,
- eError);
- }
- else
- {
- CAMHAL_LOGDB("EV Compensation 0x%x configured successfully",
- ( unsigned int ) expValues.xEVCompensation);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::getEVCompensation(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_EXPOSUREVALUETYPE expValues;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState ) {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&expValues, OMX_CONFIG_EXPOSUREVALUETYPE);
- expValues.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
-
- OMX_GetConfig(mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonExposureValue,
- &expValues);
-
- if ( OMX_ErrorNone != eError ) {
- CAMHAL_LOGEB("Error while getting EV Compensation error = 0x%x", eError);
- } else {
- Gen3A.EVCompensation = (10 * expValues.xEVCompensation) / (1 << Q16_OFFSET);
- CAMHAL_LOGDB("Gen3A.EVCompensation 0x%x", Gen3A.EVCompensation);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setWBMode(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_WHITEBALCONTROLTYPE wb;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&wb, OMX_CONFIG_WHITEBALCONTROLTYPE);
- wb.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- wb.eWhiteBalControl = ( OMX_WHITEBALCONTROLTYPE ) Gen3A.WhiteBallance;
-
- // disable face and region priorities
- setAlgoPriority(FACE_PRIORITY, WHITE_BALANCE_ALGO, false);
- setAlgoPriority(REGION_PRIORITY, WHITE_BALANCE_ALGO, false);
-
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonWhiteBalance,
- &wb);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring Whitebalance mode 0x%x error = 0x%x",
- ( unsigned int ) wb.eWhiteBalControl,
- eError);
- }
- else
- {
- CAMHAL_LOGDB("Whitebalance mode 0x%x configured successfully",
- ( unsigned int ) wb.eWhiteBalControl);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return eError;
-}
-
-status_t OMXCameraAdapter::getWBMode(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_WHITEBALCONTROLTYPE wb;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState ) {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&wb, OMX_CONFIG_WHITEBALCONTROLTYPE);
- wb.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
-
- eError = OMX_GetConfig(mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonWhiteBalance,
- &wb);
-
- if (OMX_ErrorNone != eError) {
- CAMHAL_LOGEB("Error while getting Whitebalance mode error = 0x%x", eError);
- } else {
- Gen3A.WhiteBallance = wb.eWhiteBalControl;
- CAMHAL_LOGDB("Gen3A.WhiteBallance 0x%x", Gen3A.WhiteBallance);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return eError;
-}
-
-status_t OMXCameraAdapter::setFlicker(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_FLICKERCANCELTYPE flicker;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&flicker, OMX_CONFIG_FLICKERCANCELTYPE);
- flicker.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- flicker.eFlickerCancel = (OMX_COMMONFLICKERCANCELTYPE)Gen3A.Flicker;
-
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE)OMX_IndexConfigFlickerCancel,
- &flicker );
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring Flicker mode 0x%x error = 0x%x",
- ( unsigned int ) flicker.eFlickerCancel,
- eError);
- }
- else
- {
- CAMHAL_LOGDB("Flicker mode 0x%x configured successfully",
- ( unsigned int ) flicker.eFlickerCancel);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setBrightness(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_BRIGHTNESSTYPE brightness;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&brightness, OMX_CONFIG_BRIGHTNESSTYPE);
- brightness.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- brightness.nBrightness = Gen3A.Brightness;
-
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonBrightness,
- &brightness);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring Brightness 0x%x error = 0x%x",
- ( unsigned int ) brightness.nBrightness,
- eError);
- }
- else
- {
- CAMHAL_LOGDB("Brightness 0x%x configured successfully",
- ( unsigned int ) brightness.nBrightness);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setContrast(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_CONTRASTTYPE contrast;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&contrast, OMX_CONFIG_CONTRASTTYPE);
- contrast.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- contrast.nContrast = Gen3A.Contrast;
-
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonContrast,
- &contrast);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring Contrast 0x%x error = 0x%x",
- ( unsigned int ) contrast.nContrast,
- eError);
- }
- else
- {
- CAMHAL_LOGDB("Contrast 0x%x configured successfully",
- ( unsigned int ) contrast.nContrast);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return eError;
-}
-
-status_t OMXCameraAdapter::setSharpness(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_IMAGE_CONFIG_PROCESSINGLEVELTYPE procSharpness;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&procSharpness, OMX_IMAGE_CONFIG_PROCESSINGLEVELTYPE);
- procSharpness.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- procSharpness.nLevel = Gen3A.Sharpness;
-
- if( procSharpness.nLevel == 0 )
- {
- procSharpness.bAuto = OMX_TRUE;
- }
- else
- {
- procSharpness.bAuto = OMX_FALSE;
- }
-
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE)OMX_IndexConfigSharpeningLevel,
- &procSharpness);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring Sharpness 0x%x error = 0x%x",
- ( unsigned int ) procSharpness.nLevel,
- eError);
- }
- else
- {
- CAMHAL_LOGDB("Sharpness 0x%x configured successfully",
- ( unsigned int ) procSharpness.nLevel);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::getSharpness(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_IMAGE_CONFIG_PROCESSINGLEVELTYPE procSharpness;
-
- LOG_FUNCTION_NAME;
-
- if (OMX_StateInvalid == mComponentState) {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&procSharpness, OMX_IMAGE_CONFIG_PROCESSINGLEVELTYPE);
- procSharpness.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
-
- eError = OMX_GetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE)OMX_IndexConfigSharpeningLevel,
- &procSharpness);
-
- if (OMX_ErrorNone != eError) {
- CAMHAL_LOGEB("Error while configuring Sharpness error = 0x%x", eError);
- } else {
- Gen3A.Sharpness = procSharpness.nLevel;
- CAMHAL_LOGDB("Gen3A.Sharpness 0x%x", Gen3A.Sharpness);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setSaturation(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_SATURATIONTYPE saturation;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&saturation, OMX_CONFIG_SATURATIONTYPE);
- saturation.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- saturation.nSaturation = Gen3A.Saturation;
-
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonSaturation,
- &saturation);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring Saturation 0x%x error = 0x%x",
- ( unsigned int ) saturation.nSaturation,
- eError);
- }
- else
- {
- CAMHAL_LOGDB("Saturation 0x%x configured successfully",
- ( unsigned int ) saturation.nSaturation);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::getSaturation(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_SATURATIONTYPE saturation;
-
- LOG_FUNCTION_NAME;
-
- if (OMX_StateInvalid == mComponentState) {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&saturation, OMX_CONFIG_SATURATIONTYPE);
- saturation.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
-
- eError = OMX_GetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonSaturation,
- &saturation);
-
- if (OMX_ErrorNone != eError) {
- CAMHAL_LOGEB("Error while getting Saturation error = 0x%x", eError);
- } else {
- Gen3A.Saturation = saturation.nSaturation;
- CAMHAL_LOGDB("Gen3A.Saturation 0x%x", Gen3A.Saturation);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setISO(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_EXPOSUREVALUETYPE expValues;
- OMX_TI_CONFIG_EXPOSUREVALUERIGHTTYPE expValRight;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- // In case of manual exposure Gain is applied from setManualExposureVal
- if ( Gen3A.Exposure == OMX_ExposureControlOff ) {
- return NO_ERROR;
- }
-
- OMX_INIT_STRUCT_PTR (&expValues, OMX_CONFIG_EXPOSUREVALUETYPE);
- OMX_INIT_STRUCT_PTR (&expValRight, OMX_TI_CONFIG_EXPOSUREVALUERIGHTTYPE);
- expValues.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- expValRight.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
-
- eError = OMX_GetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonExposureValue,
- &expValues);
-
- if ( OMX_ErrorNone == eError ) {
- eError = OMX_GetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE) OMX_TI_IndexConfigRightExposureValue,
- &expValRight);
- }
-
- if ( OMX_ErrorNone != eError ) {
- CAMHAL_LOGEB("OMX_GetConfig error 0x%x (manual exposure values)", eError);
- return Utils::ErrorUtils::omxToAndroidError(eError);
- }
-
- if( 0 == Gen3A.ISO ) {
- expValues.bAutoSensitivity = OMX_TRUE;
- } else {
- expValues.bAutoSensitivity = OMX_FALSE;
- expValues.nSensitivity = Gen3A.ISO;
- expValRight.nSensitivity = expValues.nSensitivity;
- }
-
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonExposureValue,
- &expValues);
-
- if ( OMX_ErrorNone == eError ) {
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE) OMX_TI_IndexConfigRightExposureValue,
- &expValRight);
- }
- if ( OMX_ErrorNone != eError ) {
- CAMHAL_LOGEB("Error while configuring ISO 0x%x error = 0x%x",
- ( unsigned int ) expValues.nSensitivity,
- eError);
- } else {
- CAMHAL_LOGDB("ISO 0x%x configured successfully",
- ( unsigned int ) expValues.nSensitivity);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::getISO(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_EXPOSUREVALUETYPE expValues;
-
- LOG_FUNCTION_NAME;
-
- if (OMX_StateInvalid == mComponentState) {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&expValues, OMX_CONFIG_EXPOSUREVALUETYPE);
- expValues.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
-
- OMX_GetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonExposureValue,
- &expValues);
-
- if (OMX_ErrorNone != eError) {
- CAMHAL_LOGEB("Error while getting ISO error = 0x%x", eError);
- } else {
- Gen3A.ISO = expValues.nSensitivity;
- CAMHAL_LOGDB("Gen3A.ISO %d", Gen3A.ISO);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setEffect(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_IMAGEFILTERTYPE effect;
-
- LOG_FUNCTION_NAME;
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&effect, OMX_CONFIG_IMAGEFILTERTYPE);
- effect.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- effect.eImageFilter = (OMX_IMAGEFILTERTYPE ) Gen3A.Effect;
-
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- OMX_IndexConfigCommonImageFilter,
- &effect);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring Effect 0x%x error = 0x%x",
- ( unsigned int ) effect.eImageFilter,
- eError);
- }
- else
- {
- CAMHAL_LOGDB("Effect 0x%x configured successfully",
- ( unsigned int ) effect.eImageFilter);
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setWhiteBalanceLock(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_IMAGE_CONFIG_LOCKTYPE lock;
-
- LOG_FUNCTION_NAME
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&lock, OMX_IMAGE_CONFIG_LOCKTYPE);
- lock.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- lock.bLock = Gen3A.WhiteBalanceLock;
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE)OMX_IndexConfigImageWhiteBalanceLock,
- &lock);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring WhiteBalance Lock error = 0x%x", eError);
- }
- else
- {
- CAMHAL_LOGDB("WhiteBalance Lock configured successfully %d ", lock.bLock);
- }
- LOG_FUNCTION_NAME_EXIT
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setExposureLock(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_IMAGE_CONFIG_LOCKTYPE lock;
-
- LOG_FUNCTION_NAME
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&lock, OMX_IMAGE_CONFIG_LOCKTYPE);
- lock.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- lock.bLock = Gen3A.ExposureLock;
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE)OMX_IndexConfigImageExposureLock,
- &lock);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring Exposure Lock error = 0x%x", eError);
- }
- else
- {
- CAMHAL_LOGDB("Exposure Lock configured successfully %d ", lock.bLock);
- }
- LOG_FUNCTION_NAME_EXIT
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setFocusLock(Gen3A_settings& Gen3A)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_IMAGE_CONFIG_LOCKTYPE lock;
-
- LOG_FUNCTION_NAME
-
- if ( OMX_StateInvalid == mComponentState ) {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&lock, OMX_IMAGE_CONFIG_LOCKTYPE);
- lock.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
-
- lock.bLock = Gen3A.FocusLock;
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE)OMX_IndexConfigImageFocusLock,
- &lock);
-
- if ( OMX_ErrorNone != eError ) {
- CAMHAL_LOGEB("Error while configuring Focus Lock error = 0x%x", eError);
- } else {
- CAMHAL_LOGDB("Focus Lock configured successfully %d ", lock.bLock);
- }
-
- LOG_FUNCTION_NAME_EXIT
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::set3ALock(OMX_BOOL toggleExp, OMX_BOOL toggleWb, OMX_BOOL toggleFocus)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_IMAGE_CONFIG_LOCKTYPE lock;
-
- LOG_FUNCTION_NAME
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&lock, OMX_IMAGE_CONFIG_LOCKTYPE);
- lock.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
-
- mParameters3A.ExposureLock = toggleExp;
- mParameters3A.FocusLock = toggleFocus;
- mParameters3A.WhiteBalanceLock = toggleWb;
-
- eError = OMX_GetConfig( mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE)OMX_IndexConfigImageExposureLock,
- &lock);
-
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error GetConfig Exposure Lock error = 0x%x", eError);
- goto EXIT;
- }
- else
- {
- CAMHAL_LOGDA("Exposure Lock GetConfig successfull");
-
- /* Apply locks only when not applied already */
- if ( lock.bLock != toggleExp )
- {
- setExposureLock(mParameters3A);
- }
-
- }
-
- OMX_INIT_STRUCT_PTR (&lock, OMX_IMAGE_CONFIG_LOCKTYPE);
- lock.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- eError = OMX_GetConfig( mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE)OMX_IndexConfigImageFocusLock,
- &lock);
-
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error GetConfig Focus Lock error = 0x%x", eError);
- goto EXIT;
- }
- else
- {
- CAMHAL_LOGDB("Focus Lock GetConfig successfull bLock(%d)", lock.bLock);
-
- /* Apply locks only when not applied already */
- if ( lock.bLock != toggleFocus )
- {
- setFocusLock(mParameters3A);
- }
- }
-
- OMX_INIT_STRUCT_PTR (&lock, OMX_IMAGE_CONFIG_LOCKTYPE);
- lock.nPortIndex = mCameraAdapterParameters.mPrevPortIndex;
- eError = OMX_GetConfig( mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE)OMX_IndexConfigImageWhiteBalanceLock,
- &lock);
-
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error GetConfig WhiteBalance Lock error = 0x%x", eError);
- goto EXIT;
- }
- else
- {
- CAMHAL_LOGDA("WhiteBalance Lock GetConfig successfull");
-
- /* Apply locks only when not applied already */
- if ( lock.bLock != toggleWb )
- {
- setWhiteBalanceLock(mParameters3A);
- }
-
- }
- EXIT:
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-status_t OMXCameraAdapter::setMeteringAreas(Gen3A_settings& Gen3A)
-{
- status_t ret = NO_ERROR;
- OMX_ERRORTYPE eError = OMX_ErrorNone;
-
- CameraBuffer *bufferlist;
- OMX_ALGOAREASTYPE *meteringAreas;
- OMX_TI_CONFIG_SHAREDBUFFER sharedBuffer;
- MemoryManager memMgr;
- int areasSize = 0;
-
- LOG_FUNCTION_NAME
-
- ret = memMgr.initialize();
- if ( ret != OK ) {
- CAMHAL_LOGE("MemoryManager initialization failed, error: %d", ret);
- return ret;
- }
-
- android::AutoMutex lock(mMeteringAreasLock);
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- areasSize = ((sizeof(OMX_ALGOAREASTYPE)+4095)/4096)*4096;
- bufferlist = memMgr.allocateBufferList(0, 0, NULL, areasSize, 1);
- meteringAreas = (OMX_ALGOAREASTYPE *)bufferlist[0].opaque;
-
- OMXCameraPortParameters * mPreviewData = NULL;
- mPreviewData = &mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex];
-
- if (!meteringAreas)
- {
- CAMHAL_LOGEB("Error allocating buffer for metering areas %d", eError);
- return -ENOMEM;
- }
-
- OMX_INIT_STRUCT_PTR (meteringAreas, OMX_ALGOAREASTYPE);
-
- meteringAreas->nPortIndex = OMX_ALL;
- meteringAreas->nNumAreas = mMeteringAreas.size();
- meteringAreas->nAlgoAreaPurpose = OMX_AlgoAreaExposure;
-
- for ( unsigned int n = 0; n < mMeteringAreas.size(); n++)
- {
- int widthDivisor = 1;
- int heightDivisor = 1;
-
- if (mPreviewData->mFrameLayoutType == OMX_TI_StereoFrameLayoutTopBottom) {
- heightDivisor = 2;
- }
- if (mPreviewData->mFrameLayoutType == OMX_TI_StereoFrameLayoutLeftRight) {
- widthDivisor = 2;
- }
-
- // transform the coordinates to 3A-type coordinates
- mMeteringAreas.itemAt(n)->transfrom((size_t)mPreviewData->mWidth/widthDivisor,
- (size_t)mPreviewData->mHeight/heightDivisor,
- (size_t&)meteringAreas->tAlgoAreas[n].nTop,
- (size_t&)meteringAreas->tAlgoAreas[n].nLeft,
- (size_t&)meteringAreas->tAlgoAreas[n].nWidth,
- (size_t&)meteringAreas->tAlgoAreas[n].nHeight);
-
- meteringAreas->tAlgoAreas[n].nLeft =
- ( meteringAreas->tAlgoAreas[n].nLeft * METERING_AREAS_RANGE ) / mPreviewData->mWidth;
- meteringAreas->tAlgoAreas[n].nTop =
- ( meteringAreas->tAlgoAreas[n].nTop* METERING_AREAS_RANGE ) / mPreviewData->mHeight;
- meteringAreas->tAlgoAreas[n].nWidth =
- ( meteringAreas->tAlgoAreas[n].nWidth * METERING_AREAS_RANGE ) / mPreviewData->mWidth;
- meteringAreas->tAlgoAreas[n].nHeight =
- ( meteringAreas->tAlgoAreas[n].nHeight * METERING_AREAS_RANGE ) / mPreviewData->mHeight;
-
- meteringAreas->tAlgoAreas[n].nPriority = mMeteringAreas.itemAt(n)->getWeight();
-
- CAMHAL_LOGDB("Metering area %d : top = %d left = %d width = %d height = %d prio = %d",
- n, (int)meteringAreas->tAlgoAreas[n].nTop, (int)meteringAreas->tAlgoAreas[n].nLeft,
- (int)meteringAreas->tAlgoAreas[n].nWidth, (int)meteringAreas->tAlgoAreas[n].nHeight,
- (int)meteringAreas->tAlgoAreas[n].nPriority);
-
- }
-
- OMX_INIT_STRUCT_PTR (&sharedBuffer, OMX_TI_CONFIG_SHAREDBUFFER);
-
- sharedBuffer.nPortIndex = OMX_ALL;
- sharedBuffer.nSharedBuffSize = areasSize;
- sharedBuffer.pSharedBuff = (OMX_U8 *)camera_buffer_get_omx_ptr (&bufferlist[0]);
-
- if ( NULL == sharedBuffer.pSharedBuff )
- {
- CAMHAL_LOGEA("No resources to allocate OMX shared buffer");
- ret = -ENOMEM;
- goto EXIT;
- }
-
- eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp,
- (OMX_INDEXTYPE) OMX_TI_IndexConfigAlgoAreas, &sharedBuffer);
-
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while setting Focus Areas configuration 0x%x", eError);
- ret = -EINVAL;
- }
- else
- {
- CAMHAL_LOGDA("Metering Areas SetConfig successfull.");
- }
-
- EXIT:
- if (NULL != bufferlist)
- {
- memMgr.freeBufferList(bufferlist);
- }
-
- return ret;
-}
-
-//TI extensions for enable/disable algos
-status_t OMXCameraAdapter::setParameter3ABoolInvert(const OMX_INDEXTYPE omx_idx,
- const OMX_BOOL data, const char *msg)
-{
- OMX_BOOL inv_data;
-
- if (OMX_TRUE == data)
- {
- inv_data = OMX_FALSE;
- }
- else if (OMX_FALSE == data)
- {
- inv_data = OMX_TRUE;
- }
- else
- {
- return BAD_VALUE;
- }
- return setParameter3ABool(omx_idx, inv_data, msg);
-}
-
-status_t OMXCameraAdapter::setParameter3ABool(const OMX_INDEXTYPE omx_idx,
- const OMX_BOOL data, const char *msg)
-{
- OMX_ERRORTYPE eError = OMX_ErrorNone;
- OMX_CONFIG_BOOLEANTYPE cfgdata;
-
- LOG_FUNCTION_NAME
-
- if ( OMX_StateInvalid == mComponentState )
- {
- CAMHAL_LOGEA("OMX component is in invalid state");
- return NO_INIT;
- }
-
- OMX_INIT_STRUCT_PTR (&cfgdata, OMX_CONFIG_BOOLEANTYPE);
- cfgdata.bEnabled = data;
- eError = OMX_SetConfig( mCameraAdapterParameters.mHandleComp,
- omx_idx,
- &cfgdata);
- if ( OMX_ErrorNone != eError )
- {
- CAMHAL_LOGEB("Error while configuring %s error = 0x%x", msg, eError);
- }
- else
- {
- CAMHAL_LOGDB("%s configured successfully %d ", msg, cfgdata.bEnabled);
- }
-
- LOG_FUNCTION_NAME_EXIT
-
- return Utils::ErrorUtils::omxToAndroidError(eError);
-}
-
-#ifndef OMAP_TUNA
-status_t OMXCameraAdapter::setAlgoFixedGamma(Gen3A_settings& Gen3A)
-{
- return setParameter3ABool((OMX_INDEXTYPE) OMX_TI_IndexConfigFixedGamma, Gen3A.AlgoFixedGamma, "Fixed Gamma");
-}
-
-status_t OMXCameraAdapter::setAlgoNSF1(Gen3A_settings& Gen3A)
-{
- return setParameter3ABoolInvert((OMX_INDEXTYPE) OMX_TI_IndexConfigDisableNSF1, Gen3A.AlgoNSF1, "NSF1");
-}
-
-status_t OMXCameraAdapter::setAlgoNSF2(Gen3A_settings& Gen3A)
-{
- return setParameter3ABoolInvert((OMX_INDEXTYPE) OMX_TI_IndexConfigDisableNSF2, Gen3A.AlgoNSF2, "NSF2");
-}
-
-status_t OMXCameraAdapter::setAlgoSharpening(Gen3A_settings& Gen3A)
-{
- return setParameter3ABoolInvert((OMX_INDEXTYPE) OMX_TI_IndexConfigDisableSharpening, Gen3A.AlgoSharpening, "Sharpening");
-}
-
-status_t OMXCameraAdapter::setAlgoThreeLinColorMap(Gen3A_settings& Gen3A)
-{
- return setParameter3ABoolInvert((OMX_INDEXTYPE) OMX_TI_IndexConfigDisableThreeLinColorMap, Gen3A.AlgoThreeLinColorMap, "Color Conversion");
-}
-
-status_t OMXCameraAdapter::setAlgoGIC(Gen3A_settings& Gen3A)
-{
- return setParameter3ABoolInvert((OMX_INDEXTYPE) OMX_TI_IndexConfigDisableGIC, Gen3A.AlgoGIC, "Green Inballance Correction");
-}
-#endif
-
-status_t OMXCameraAdapter::apply3Asettings( Gen3A_settings& Gen3A )
-{
- status_t ret = NO_ERROR;
- unsigned int currSett; // 32 bit
- int portIndex;
-
- LOG_FUNCTION_NAME;
-
- android::AutoMutex lock(m3ASettingsUpdateLock);
-
- /*
- * Scenes have a priority during the process
- * of applying 3A related parameters.
- * They can override pretty much all other 3A
- * settings and similarly get overridden when
- * for instance the focus mode gets switched.
- * There is only one exception to this rule,
- * the manual a.k.a. auto scene.
- */
- if (SetSceneMode & mPending3Asettings) {
- mPending3Asettings &= ~SetSceneMode;
- ret |= setScene(Gen3A);
- // re-apply EV compensation after setting scene mode since it probably reset it
- if(Gen3A.EVCompensation) {
- setEVCompensation(Gen3A);
- }
- return ret;
- } else if (OMX_Manual != Gen3A.SceneMode) {
- // only certain settings are allowed when scene mode is set
- mPending3Asettings &= (SetEVCompensation | SetFocus | SetWBLock |
- SetExpLock | SetWhiteBallance | SetFlash);
- if ( mPending3Asettings == 0 ) return NO_ERROR;
- }
-
- for( currSett = 1; currSett < E3aSettingMax; currSett <<= 1)
- {
- if( currSett & mPending3Asettings )
- {
- switch( currSett )
- {
- case SetEVCompensation:
- {
- ret |= setEVCompensation(Gen3A);
- break;
- }
-
- case SetWhiteBallance:
- {
- ret |= setWBMode(Gen3A);
- break;
- }
-
- case SetFlicker:
- {
- ret |= setFlicker(Gen3A);
- break;
- }
-
- case SetBrightness:
- {
- ret |= setBrightness(Gen3A);
- break;
- }
-
- case SetContrast:
- {
- ret |= setContrast(Gen3A);
- break;
- }
-
- case SetSharpness:
- {
- ret |= setSharpness(Gen3A);
- break;
- }
-
- case SetSaturation:
- {
- ret |= setSaturation(Gen3A);
- break;
- }
-
- case SetISO:
- {
- ret |= setISO(Gen3A);
- break;
- }
-
- case SetEffect:
- {
- ret |= setEffect(Gen3A);
- break;
- }
-
- case SetFocus:
- {
- ret |= setFocusMode(Gen3A);
- break;
- }
-
- case SetExpMode:
- {
- ret |= setExposureMode(Gen3A);
- break;
- }
-
- case SetManualExposure: {
- ret |= setManualExposureVal(Gen3A);
- break;
- }
-
- case SetFlash:
- {
- ret |= setFlashMode(Gen3A);
- break;
- }
-
- case SetExpLock:
- {
- ret |= setExposureLock(Gen3A);
- break;
- }
-
- case SetWBLock:
- {
- ret |= setWhiteBalanceLock(Gen3A);
- break;
- }
- case SetMeteringAreas:
- {
- ret |= setMeteringAreas(Gen3A);
- }
- break;
-
-#ifndef OMAP_TUNA
- //TI extensions for enable/disable algos
- case SetAlgoFixedGamma:
- {
- ret |= setAlgoFixedGamma(Gen3A);
- }
- break;
-
- case SetAlgoNSF1:
- {
- ret |= setAlgoNSF1(Gen3A);
- }
- break;
-
- case SetAlgoNSF2:
- {
- ret |= setAlgoNSF2(Gen3A);
- }
- break;
-
- case SetAlgoSharpening:
- {
- ret |= setAlgoSharpening(Gen3A);
- }
- break;
-
- case SetAlgoThreeLinColorMap:
- {
- ret |= setAlgoThreeLinColorMap(Gen3A);
- }
- break;
-
- case SetAlgoGIC:
- {
- ret |= setAlgoGIC(Gen3A);
- }
- break;
-#endif
-
- default:
- CAMHAL_LOGEB("this setting (0x%x) is still not supported in CameraAdapter ",
- currSett);
- break;
- }
- mPending3Asettings &= ~currSett;
- }
- }
-
- LOG_FUNCTION_NAME_EXIT;
-
- return ret;
-}
-
-} // namespace Camera
-} // namespace Ti