diff options
Diffstat (limited to 'camera/OMXCameraAdapter/OMXAlgo.cpp')
-rw-r--r-- | camera/OMXCameraAdapter/OMXAlgo.cpp | 1261 |
1 files changed, 0 insertions, 1261 deletions
diff --git a/camera/OMXCameraAdapter/OMXAlgo.cpp b/camera/OMXCameraAdapter/OMXAlgo.cpp deleted file mode 100644 index 2188590..0000000 --- a/camera/OMXCameraAdapter/OMXAlgo.cpp +++ /dev/null @@ -1,1261 +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 OMXAlgo.cpp -* -* This file contains functionality for handling algorithm configurations. -* -*/ - -#include "CameraHal.h" -#include "OMXCameraAdapter.h" -#include "ErrorUtils.h" - -#undef TRUE - -namespace Ti { -namespace Camera { - -status_t OMXCameraAdapter::setParametersAlgo(const android::CameraParameters ¶ms, - BaseCameraAdapter::AdapterState state) -{ - status_t ret = NO_ERROR; - const char *valstr = NULL; - const char *valManualStr = NULL; - const char *oldstr = NULL; - OMXCameraPortParameters *cap; - BrightnessMode gbce = BRIGHTNESS_OFF; - BrightnessMode glbce = BRIGHTNESS_OFF; - - LOG_FUNCTION_NAME; - - CaptureMode capMode; - CAMHAL_LOGDB("Capture mode %s", params.get(TICameraParameters::KEY_CAP_MODE)); - if ( (valstr = params.get(TICameraParameters::KEY_CAP_MODE)) != NULL ) { - if (strcmp(valstr, (const char *) TICameraParameters::HIGH_PERFORMANCE_MODE) == 0) { - capMode = OMXCameraAdapter::HIGH_SPEED; - mCapabilitiesOpMode = MODE_HIGH_SPEED; - } else if (strcmp(valstr, (const char *) TICameraParameters::EXPOSURE_BRACKETING) == 0) { - capMode = OMXCameraAdapter::HIGH_SPEED; - mCapabilitiesOpMode = MODE_HIGH_SPEED; - } else if (strcmp(valstr, (const char *) TICameraParameters::ZOOM_BRACKETING) == 0) { - capMode = OMXCameraAdapter::HIGH_SPEED; - mCapabilitiesOpMode = MODE_HIGH_SPEED; - } else if (strcmp(valstr, (const char *) TICameraParameters::HIGH_QUALITY_MODE) == 0) { - capMode = OMXCameraAdapter::HIGH_QUALITY; - mCapabilitiesOpMode = MODE_HIGH_QUALITY; - } else if (strcmp(valstr, (const char *) TICameraParameters::HIGH_QUALITY_ZSL_MODE) == 0) { - capMode = OMXCameraAdapter::HIGH_QUALITY_ZSL; - mCapabilitiesOpMode = MODE_ZEROSHUTTERLAG; - } else if (strcmp(valstr, (const char *) TICameraParameters::VIDEO_MODE) == 0) { - capMode = OMXCameraAdapter::VIDEO_MODE; - mCapabilitiesOpMode = MODE_VIDEO; - } else if (strcmp(valstr, (const char *) TICameraParameters::CP_CAM_MODE) == 0) { - capMode = OMXCameraAdapter::CP_CAM; - mCapabilitiesOpMode = MODE_CPCAM; - } else if (strcmp(valstr, (const char *) TICameraParameters::TEMP_BRACKETING) == 0) { - capMode = OMXCameraAdapter::HIGH_SPEED; - mCapabilitiesOpMode = MODE_HIGH_SPEED; - } else { - capMode = OMXCameraAdapter::HIGH_QUALITY; - mCapabilitiesOpMode = MODE_HIGH_QUALITY; - } - - } else { - capMode = OMXCameraAdapter::HIGH_QUALITY; - mCapabilitiesOpMode = MODE_HIGH_QUALITY; - } - -#ifndef OMAP_TUNA - if ( mSensorIndex == 2 ) { - mCapabilitiesOpMode = MODE_STEREO; - } -#endif - - if ( mCapMode != capMode ) { - mCapMode = capMode; - mOMXStateSwitch = true; - mPendingPreviewSettings |= SetCapMode; - } - - CAMHAL_LOGDB("Capture Mode set %d", mCapMode); - - /// Configure IPP, LDCNSF, GBCE and GLBCE only in HQ mode - IPPMode ipp; - if((mCapMode == OMXCameraAdapter::HIGH_QUALITY) || (mCapMode == OMXCameraAdapter::HIGH_QUALITY_ZSL) - || (mCapMode == OMXCameraAdapter::VIDEO_MODE) - || (mCapMode == OMXCameraAdapter::CP_CAM)) - { - if ( (valstr = params.get(TICameraParameters::KEY_IPP)) != NULL ) - { - if (strcmp(valstr, (const char *) TICameraParameters::IPP_LDCNSF) == 0) - { - ipp = OMXCameraAdapter::IPP_LDCNSF; - } - else if (strcmp(valstr, (const char *) TICameraParameters::IPP_LDC) == 0) - { - ipp = OMXCameraAdapter::IPP_LDC; - } - else if (strcmp(valstr, (const char *) TICameraParameters::IPP_NSF) == 0) - { - ipp = OMXCameraAdapter::IPP_NSF; - } - else if (strcmp(valstr, (const char *) TICameraParameters::IPP_NONE) == 0) - { - ipp = OMXCameraAdapter::IPP_NONE; - } - else - { - ipp = OMXCameraAdapter::IPP_NONE; - } - } - else - { - ipp = OMXCameraAdapter::IPP_NONE; - } - - CAMHAL_LOGVB("IPP Mode set %d", ipp); - - if (((valstr = params.get(TICameraParameters::KEY_GBCE)) != NULL) ) { - if (strcmp(valstr, android::CameraParameters::TRUE ) == 0) { - gbce = BRIGHTNESS_ON; - } else { - gbce = BRIGHTNESS_OFF; - } - - if ( gbce != mGBCE ) { - mGBCE = gbce; - setGBCE(mGBCE); - } - - } else if(mFirstTimeInit) { - //Disable GBCE by default - setGBCE(OMXCameraAdapter::BRIGHTNESS_OFF); - } - - if ( ( valstr = params.get(TICameraParameters::KEY_GLBCE) ) != NULL ) { - - if (strcmp(valstr, android::CameraParameters::TRUE) == 0) { - glbce = BRIGHTNESS_ON; - } else { - glbce = BRIGHTNESS_OFF; - } - - if ( glbce != mGLBCE ) { - mGLBCE = glbce; - setGLBCE(mGLBCE); - } - - } else if(mFirstTimeInit) { - //Disable GLBCE by default - setGLBCE(OMXCameraAdapter::BRIGHTNESS_OFF); - } - - } else { - ipp = OMXCameraAdapter::IPP_NONE; - } - - if ( mIPP != ipp ) - { - mIPP = ipp; - mOMXStateSwitch = true; - mPendingPreviewSettings |= SetLDC; - mPendingPreviewSettings |= SetNSF; - } - - ///Set VNF Configuration - bool vnfEnabled = false; - valstr = params.get(TICameraParameters::KEY_VNF); - if (valstr && strcmp(valstr, android::CameraParameters::TRUE) == 0) - { - CAMHAL_LOGDA("VNF Enabled"); - vnfEnabled = true; - } - else - { - CAMHAL_LOGDA("VNF Disabled"); - vnfEnabled = false; - } - - if ( mVnfEnabled != vnfEnabled ) - { - mVnfEnabled = vnfEnabled; - mOMXStateSwitch = true; - mPendingPreviewSettings |= SetVNF; - } - - ///Set VSTAB Configuration - bool vstabEnabled = false; - valstr = params.get(android::CameraParameters::KEY_VIDEO_STABILIZATION); - if (valstr && strcmp(valstr, android::CameraParameters::TRUE) == 0) { - CAMHAL_LOGDA("VSTAB Enabled"); - vstabEnabled = true; - } - else - { - CAMHAL_LOGDA("VSTAB Disabled"); - vstabEnabled = false; - } - - if ( mVstabEnabled != vstabEnabled ) - { - mVstabEnabled = vstabEnabled; - mOMXStateSwitch = true; - mPendingPreviewSettings |= SetVSTAB; - } - - //A work-around for a failing call to OMX flush buffers - if ( ( capMode = OMXCameraAdapter::VIDEO_MODE ) && - ( mVstabEnabled ) ) - { - mOMXStateSwitch = true; - } - -#ifdef OMAP_ENHANCEMENT - - //Set Auto Convergence Mode - valstr = params.get((const char *) TICameraParameters::KEY_AUTOCONVERGENCE_MODE); - valManualStr = params.get(TICameraParameters::KEY_MANUAL_CONVERGENCE); - - cap = &mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex]; - - if (cap->mFrameLayoutType != OMX_TI_StereoFrameLayout2D) { - if ((valstr != NULL) || (valManualStr != NULL)) { - setAutoConvergence(valstr, valManualStr, params); - if (valstr != NULL) { - CAMHAL_LOGDB("AutoConvergenceMode %s", valstr); - } - if (valManualStr != NULL) { - CAMHAL_LOGDB("Manual Convergence %s", valManualStr); - } - } - - //Set Mechanical Misalignment Correction - valstr = params.get(TICameraParameters::KEY_MECHANICAL_MISALIGNMENT_CORRECTION); - if ( valstr != NULL ) { - setMechanicalMisalignmentCorrection(strcmp(valstr, android::CameraParameters::TRUE) == 0); - CAMHAL_LOGDB("Mechanical Misalignment Correction %s", valstr); - } - } - -#endif - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -// Set AutoConvergence -status_t OMXCameraAdapter::setAutoConvergence(const char *pValstr, const char *pValManualstr, const android::CameraParameters ¶ms) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_TI_CONFIG_CONVERGENCETYPE ACParams; - const char *str = NULL; - android::Vector<android::sp<CameraArea> > tempAreas; - int mode; - int changed = 0; - - LOG_FUNCTION_NAME; - - if ( pValManualstr != NULL ) { - OMX_S32 manualConvergence = (OMX_S32)strtol(pValManualstr ,0 ,0); - - if (mManualConv != manualConvergence) { - mManualConv = manualConvergence; - changed = 1; - } - } - - if ( pValstr != NULL ) { - mode = getLUTvalue_HALtoOMX(pValstr, mAutoConvergenceLUT); - - if ( NAME_NOT_FOUND == mode ) { - CAMHAL_LOGEB("Wrong convergence mode: %s", pValstr); - LOG_FUNCTION_NAME_EXIT; - return mode; - } - - if ( mAutoConv != static_cast<OMX_TI_AUTOCONVERGENCEMODETYPE> (mode) ) { - mAutoConv = static_cast<OMX_TI_AUTOCONVERGENCEMODETYPE> (mode); - changed = 1; - } - } - - if ( OMX_TI_AutoConvergenceModeFocusFaceTouch == mAutoConv ) { - android::AutoMutex lock(mTouchAreasLock); - - str = params.get(android::CameraParameters::KEY_METERING_AREAS); - - if ( NULL != str ) { - ret = CameraArea::parseAreas(str, ( strlen(str) + 1 ), tempAreas); - } else { - CAMHAL_LOGEB("Touch areas not received in %s", - android::CameraParameters::KEY_METERING_AREAS); - LOG_FUNCTION_NAME_EXIT; - return BAD_VALUE; - } - - if ( CameraArea::areAreasDifferent(mTouchAreas, tempAreas) ) { - mTouchAreas.clear(); - mTouchAreas = tempAreas; - changed = 1; - } - } - - if (!changed) { - LOG_FUNCTION_NAME_EXIT; - return NO_ERROR; - } - - OMXCameraPortParameters * mPreviewData; - mPreviewData = &mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex]; - - ACParams.nSize = (OMX_U32)sizeof(OMX_TI_CONFIG_CONVERGENCETYPE); - ACParams.nVersion = mLocalVersionParam; - ACParams.nPortIndex = OMX_ALL; - - OMX_GetConfig(mCameraAdapterParameters.mHandleComp, - (OMX_INDEXTYPE)OMX_TI_IndexConfigAutoConvergence, - &ACParams); - - ACParams.eACMode = mAutoConv; - ACParams.nManualConverence = mManualConv; - - if (1 == mTouchAreas.size()) { - 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 - mTouchAreas.itemAt(0)->transfrom((size_t)mPreviewData->mWidth/widthDivisor, - (size_t)mPreviewData->mHeight/heightDivisor, - (size_t&) ACParams.nACProcWinStartY, - (size_t&) ACParams.nACProcWinStartX, - (size_t&) ACParams.nACProcWinWidth, - (size_t&) ACParams.nACProcWinHeight); - } - - CAMHAL_LOGDB("nSize %d", (int)ACParams.nSize); - CAMHAL_LOGDB("nPortIndex %d", (int)ACParams.nPortIndex); - CAMHAL_LOGDB("nManualConverence %d", (int)ACParams.nManualConverence); - CAMHAL_LOGDB("eACMode %d", (int)ACParams.eACMode); - CAMHAL_LOGDB("nACProcWinStartX %d", (int)ACParams.nACProcWinStartX); - CAMHAL_LOGDB("nACProcWinStartY %d", (int)ACParams.nACProcWinStartY); - CAMHAL_LOGDB("nACProcWinWidth %d", (int)ACParams.nACProcWinWidth); - CAMHAL_LOGDB("nACProcWinHeight %d", (int)ACParams.nACProcWinHeight); - CAMHAL_LOGDB("bACStatus %d", (int)ACParams.bACStatus); - - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - (OMX_INDEXTYPE)OMX_TI_IndexConfigAutoConvergence, - &ACParams); - - if ( eError != OMX_ErrorNone ) { - CAMHAL_LOGEB("Error while setting AutoConvergence 0x%x", eError); - ret = BAD_VALUE; - } else { - CAMHAL_LOGDA("AutoConvergence applied successfully"); - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::enableVideoNoiseFilter(bool enable) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_PARAM_VIDEONOISEFILTERTYPE vnfCfg; - - - LOG_FUNCTION_NAME; - - if ( NO_ERROR == ret ) - { - OMX_INIT_STRUCT_PTR (&vnfCfg, OMX_PARAM_VIDEONOISEFILTERTYPE); - - if ( enable ) - { - CAMHAL_LOGDA("VNF is enabled"); - vnfCfg.eMode = OMX_VideoNoiseFilterModeOn; - } - else - { - CAMHAL_LOGDA("VNF is disabled"); - vnfCfg.eMode = OMX_VideoNoiseFilterModeOff; - } - - eError = OMX_SetParameter(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_IndexParamVideoNoiseFilter, - &vnfCfg); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while configuring video noise filter 0x%x", eError); - ret = -1; - } - else - { - CAMHAL_LOGDA("Video noise filter is configured successfully"); - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::enableVideoStabilization(bool enable) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_CONFIG_FRAMESTABTYPE frameStabCfg; - - - LOG_FUNCTION_NAME; - - if ( NO_ERROR == ret ) - { - OMX_CONFIG_BOOLEANTYPE vstabp; - OMX_INIT_STRUCT_PTR (&vstabp, OMX_CONFIG_BOOLEANTYPE); - if(enable) - { - vstabp.bEnabled = OMX_TRUE; - } - else - { - vstabp.bEnabled = OMX_FALSE; - } - - eError = OMX_SetParameter(mCameraAdapterParameters.mHandleComp, - (OMX_INDEXTYPE)OMX_IndexParamFrameStabilisation, - &vstabp); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while configuring video stabilization param 0x%x", eError); - ret = -1; - } - else - { - CAMHAL_LOGDA("Video stabilization param configured successfully"); - } - - } - - if ( NO_ERROR == ret ) - { - - OMX_INIT_STRUCT_PTR (&frameStabCfg, OMX_CONFIG_FRAMESTABTYPE); - - - eError = OMX_GetConfig(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_IndexConfigCommonFrameStabilisation, - &frameStabCfg); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while getting video stabilization mode 0x%x", - (unsigned int)eError); - ret = -1; - } - - CAMHAL_LOGDB("VSTAB Port Index = %d", (int)frameStabCfg.nPortIndex); - - frameStabCfg.nPortIndex = mCameraAdapterParameters.mPrevPortIndex; - if ( enable ) - { - CAMHAL_LOGDA("VSTAB is enabled"); - frameStabCfg.bStab = OMX_TRUE; - } - else - { - CAMHAL_LOGDA("VSTAB is disabled"); - frameStabCfg.bStab = OMX_FALSE; - - } - - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_IndexConfigCommonFrameStabilisation, - &frameStabCfg); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while configuring video stabilization mode 0x%x", eError); - ret = -1; - } - else - { - CAMHAL_LOGDA("Video stabilization mode configured successfully"); - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::setGBCE(OMXCameraAdapter::BrightnessMode mode) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_TI_CONFIG_LOCAL_AND_GLOBAL_BRIGHTNESSCONTRASTTYPE bControl; - - LOG_FUNCTION_NAME; - - if ( OMX_StateInvalid == mComponentState ) - { - CAMHAL_LOGEA("OMX component is in invalid state"); - ret = -EINVAL; - } - - if ( NO_ERROR == ret ) - { - OMX_INIT_STRUCT_PTR (&bControl, OMX_TI_CONFIG_LOCAL_AND_GLOBAL_BRIGHTNESSCONTRASTTYPE); - - bControl.nPortIndex = OMX_ALL; - - switch ( mode ) - { - case OMXCameraAdapter::BRIGHTNESS_ON: - { - bControl.eControl = OMX_TI_BceModeOn; - break; - } - case OMXCameraAdapter::BRIGHTNESS_AUTO: - { - bControl.eControl = OMX_TI_BceModeAuto; - break; - } - case OMXCameraAdapter::BRIGHTNESS_OFF: - default: - { - bControl.eControl = OMX_TI_BceModeOff; - break; - } - } - - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_TI_IndexConfigGlobalBrightnessContrastEnhance, - &bControl); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while setting GBCE 0x%x", eError); - } - else - { - CAMHAL_LOGDB("GBCE configured successfully 0x%x", mode); - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::setGLBCE(OMXCameraAdapter::BrightnessMode mode) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_TI_CONFIG_LOCAL_AND_GLOBAL_BRIGHTNESSCONTRASTTYPE bControl; - - LOG_FUNCTION_NAME; - - if ( OMX_StateInvalid == mComponentState ) - { - CAMHAL_LOGEA("OMX component is in invalid state"); - ret = -EINVAL; - } - - if ( NO_ERROR == ret ) - { - OMX_INIT_STRUCT_PTR (&bControl, OMX_TI_CONFIG_LOCAL_AND_GLOBAL_BRIGHTNESSCONTRASTTYPE); - bControl.nPortIndex = OMX_ALL; - - switch ( mode ) - { - case OMXCameraAdapter::BRIGHTNESS_ON: - { - bControl.eControl = OMX_TI_BceModeOn; - break; - } - case OMXCameraAdapter::BRIGHTNESS_AUTO: - { - bControl.eControl = OMX_TI_BceModeAuto; - break; - } - case OMXCameraAdapter::BRIGHTNESS_OFF: - default: - { - bControl.eControl = OMX_TI_BceModeOff; - break; - } - } - - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_TI_IndexConfigLocalBrightnessContrastEnhance, - &bControl); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while configure GLBCE 0x%x", eError); - } - else - { - CAMHAL_LOGDA("GLBCE configured successfully"); - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::setCaptureMode(OMXCameraAdapter::CaptureMode mode) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_CONFIG_CAMOPERATINGMODETYPE camMode; - OMX_CONFIG_BOOLEANTYPE bCAC; -#ifndef OMAP_TUNA - OMX_TI_CONFIG_SINGLEPREVIEWMODETYPE singlePrevMode; -#endif - - LOG_FUNCTION_NAME; - - //CAC is disabled by default - OMX_INIT_STRUCT_PTR (&bCAC, OMX_CONFIG_BOOLEANTYPE); -#ifndef OMAP_TUNA - OMX_INIT_STRUCT_PTR (&singlePrevMode, OMX_TI_CONFIG_SINGLEPREVIEWMODETYPE); -#endif - bCAC.bEnabled = OMX_FALSE; - - if ( NO_ERROR == ret ) - { - - OMX_INIT_STRUCT_PTR (&camMode, OMX_CONFIG_CAMOPERATINGMODETYPE); - if ( mSensorIndex == OMX_TI_StereoSensor ) - { -#ifndef OMAP_TUNA - if ( OMXCameraAdapter::VIDEO_MODE == mode ) { - CAMHAL_LOGDA("Camera mode: STEREO VIDEO"); - camMode.eCamOperatingMode = OMX_TI_StereoVideo; - } else { -#endif - CAMHAL_LOGDA("Camera mode: STEREO"); - camMode.eCamOperatingMode = OMX_CaptureStereoImageCapture; -#ifndef OMAP_TUNA - } -#endif - } - else if ( OMXCameraAdapter::HIGH_SPEED == mode ) - { - CAMHAL_LOGDA("Camera mode: HIGH SPEED"); - camMode.eCamOperatingMode = OMX_CaptureImageHighSpeedTemporalBracketing; - } - else if ( OMXCameraAdapter::CP_CAM == mode ) - { - CAMHAL_LOGDA("Camera mode: CP CAM"); -#ifndef OMAP_TUNA - camMode.eCamOperatingMode = OMX_TI_CPCam; - // TODO(XXX): Hardcode for now until we implement re-proc pipe - singlePrevMode.eMode = OMX_TI_SinglePreviewMode_ImageCaptureHighSpeed; -#endif - } - else if( OMXCameraAdapter::HIGH_QUALITY == mode ) - { - CAMHAL_LOGDA("Camera mode: HIGH QUALITY"); - camMode.eCamOperatingMode = OMX_CaptureImageProfileBase; - } - else if( OMXCameraAdapter::HIGH_QUALITY_ZSL== mode ) - { - const char* valstr = NULL; - CAMHAL_LOGDA("Camera mode: HIGH QUALITY_ZSL"); - camMode.eCamOperatingMode = OMX_TI_CaptureImageProfileZeroShutterLag; - -#ifdef CAMERAHAL_TUNA - if ( !mIternalRecordingHint ) { - zslHistoryLen.nHistoryLen = 5; - } -#endif - - } - else if( OMXCameraAdapter::VIDEO_MODE == mode ) - { - CAMHAL_LOGDA("Camera mode: VIDEO MODE"); - camMode.eCamOperatingMode = OMX_CaptureVideo; - } - else - { - CAMHAL_LOGEA("Camera mode: INVALID mode passed!"); - return BAD_VALUE; - } - - if( NO_ERROR == ret ) - { - eError = OMX_SetParameter(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_IndexCameraOperatingMode, - &camMode); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while configuring camera mode 0x%x", eError); - ret = Utils::ErrorUtils::omxToAndroidError(eError); - } - else - { - CAMHAL_LOGDA("Camera mode configured successfully"); - } - } - -#ifndef OMAP_TUNA - if((NO_ERROR == ret) && (OMXCameraAdapter::CP_CAM == mode)) { - //Configure Single Preview Mode - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_TI_IndexConfigSinglePreviewMode, - &singlePrevMode); - if ( OMX_ErrorNone != eError ) { - CAMHAL_LOGEB("Error while configuring single preview mode 0x%x", eError); - ret = Utils::ErrorUtils::omxToAndroidError(eError); - } else { - CAMHAL_LOGDA("single preview mode configured successfully"); - } - } -#endif - - if( NO_ERROR == ret ) - { - //Configure CAC - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_IndexConfigChromaticAberrationCorrection, - &bCAC); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while configuring CAC 0x%x", eError); - ret = Utils::ErrorUtils::omxToAndroidError(eError); - } - else - { - CAMHAL_LOGDA("CAC configured successfully"); - } - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::setLDC(OMXCameraAdapter::IPPMode mode) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_CONFIG_BOOLEANTYPE bOMX; - - LOG_FUNCTION_NAME; - - if ( OMX_StateLoaded != mComponentState ) - { - CAMHAL_LOGEA("OMX component is not in loaded state"); - ret = -EINVAL; - } - - if ( NO_ERROR == ret ) - { - OMX_INIT_STRUCT_PTR (&bOMX, OMX_CONFIG_BOOLEANTYPE); - - switch ( mode ) - { - case OMXCameraAdapter::IPP_LDCNSF: - case OMXCameraAdapter::IPP_LDC: - { - bOMX.bEnabled = OMX_TRUE; - break; - } - case OMXCameraAdapter::IPP_NONE: - case OMXCameraAdapter::IPP_NSF: - default: - { - bOMX.bEnabled = OMX_FALSE; - break; - } - } - - CAMHAL_LOGVB("Configuring LDC mode 0x%x", bOMX.bEnabled); - eError = OMX_SetParameter(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_IndexParamLensDistortionCorrection, - &bOMX); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEA("Error while setting LDC"); - ret = -1; - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::setNSF(OMXCameraAdapter::IPPMode mode) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_PARAM_ISONOISEFILTERTYPE nsf; - - LOG_FUNCTION_NAME; - - if ( OMX_StateLoaded != mComponentState ) - { - CAMHAL_LOGEA("OMX component is not in loaded state"); - ret = -EINVAL; - } - - if ( NO_ERROR == ret ) - { - OMX_INIT_STRUCT_PTR (&nsf, OMX_PARAM_ISONOISEFILTERTYPE); - nsf.nPortIndex = OMX_ALL; - - switch ( mode ) - { - case OMXCameraAdapter::IPP_LDCNSF: - case OMXCameraAdapter::IPP_NSF: - { - nsf.eMode = OMX_ISONoiseFilterModeOn; - break; - } - case OMXCameraAdapter::IPP_LDC: - case OMXCameraAdapter::IPP_NONE: - default: - { - nsf.eMode = OMX_ISONoiseFilterModeOff; - break; - } - } - - CAMHAL_LOGVB("Configuring NSF mode 0x%x", nsf.eMode); - eError = OMX_SetParameter(mCameraAdapterParameters.mHandleComp, - (OMX_INDEXTYPE)OMX_IndexParamHighISONoiseFiler, - &nsf); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEA("Error while setting NSF"); - ret = -1; - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::setImageQuality(unsigned int quality) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_IMAGE_PARAM_QFACTORTYPE jpegQualityConf; - - LOG_FUNCTION_NAME; - - if ( OMX_StateInvalid == mComponentState ) - { - CAMHAL_LOGEA("OMX component is in invalid state"); - ret = -EINVAL; - } - - if ( NO_ERROR == ret ) - { - OMX_INIT_STRUCT(jpegQualityConf, OMX_IMAGE_PARAM_QFACTORTYPE); - jpegQualityConf.nQFactor = quality; - jpegQualityConf.nPortIndex = mCameraAdapterParameters.mImagePortIndex; - - eError = OMX_SetParameter(mCameraAdapterParameters.mHandleComp, - OMX_IndexParamQFactor, - &jpegQualityConf); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while configuring jpeg Quality 0x%x", eError); - ret = -1; - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::setThumbnailParams(unsigned int width, - unsigned int height, - unsigned int quality) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_PARAM_THUMBNAILTYPE thumbConf; - - LOG_FUNCTION_NAME; - - if ( OMX_StateInvalid == mComponentState ) - { - CAMHAL_LOGEA("OMX component is in invalid state"); - ret = -EINVAL; - } - - if ( NO_ERROR == ret ) - { - OMX_INIT_STRUCT(thumbConf, OMX_PARAM_THUMBNAILTYPE); - thumbConf.nPortIndex = mCameraAdapterParameters.mImagePortIndex; - - eError = OMX_GetParameter(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_IndexParamThumbnail, - &thumbConf); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while retrieving thumbnail size 0x%x", eError); - ret = -1; - } - - //CTS Requirement: width or height equal to zero should - //result in absent EXIF thumbnail - if ( ( 0 == width ) || ( 0 == height ) ) - { - thumbConf.nWidth = mThumbRes[0].width; - thumbConf.nHeight = mThumbRes[0].height; - thumbConf.eCompressionFormat = OMX_IMAGE_CodingUnused; - } - else - { - thumbConf.nWidth = width; - thumbConf.nHeight = height; - thumbConf.nQuality = quality; - thumbConf.eCompressionFormat = OMX_IMAGE_CodingJPEG; - } - - CAMHAL_LOGDB("Thumbnail width = %d, Thumbnail Height = %d", width, height); - - eError = OMX_SetParameter(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_IndexParamThumbnail, - &thumbConf); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while configuring thumbnail size 0x%x", eError); - ret = -1; - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::setAlgoPriority(AlgoPriority priority, - Algorithm3A algo, - bool enable) -{ - OMX_ERRORTYPE eError = OMX_ErrorNone; - - LOG_FUNCTION_NAME; - - if ( OMX_StateInvalid == mComponentState ) { - CAMHAL_LOGEA("OMX component is in invalid state"); - return NO_INIT; - } - - if ( FACE_PRIORITY == priority ) { - - if ( algo & WHITE_BALANCE_ALGO ) { - if ( enable ) { - mFacePriority.bAwbFaceEnable = OMX_TRUE; - } else { - mFacePriority.bAwbFaceEnable = OMX_FALSE; - } - } - - if ( algo & EXPOSURE_ALGO ) { - if ( enable ) { - mFacePriority.bAeFaceEnable = OMX_TRUE; - } else { - mFacePriority.bAeFaceEnable = OMX_FALSE; - } - } - - if ( algo & FOCUS_ALGO ) { - if ( enable ) { - mFacePriority.bAfFaceEnable = OMX_TRUE; - } else { - mFacePriority.bAfFaceEnable = OMX_FALSE; - } - } - - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_TI_IndexConfigFacePriority3a, - &mFacePriority); - if ( OMX_ErrorNone != eError ) { - CAMHAL_LOGEB("Error while configuring face priority 0x%x", eError); - } else { - CAMHAL_LOGDB("Face priority for algorithms set successfully 0x%x, 0x%x, 0x%x", - mFacePriority.bAfFaceEnable, - mFacePriority.bAeFaceEnable, - mFacePriority.bAwbFaceEnable); - } - - } else if ( REGION_PRIORITY == priority ) { - - if ( algo & WHITE_BALANCE_ALGO ) { - if ( enable ) { - mRegionPriority.bAwbRegionEnable= OMX_TRUE; - } else { - mRegionPriority.bAwbRegionEnable = OMX_FALSE; - } - } - - if ( algo & EXPOSURE_ALGO ) { - if ( enable ) { - mRegionPriority.bAeRegionEnable = OMX_TRUE; - } else { - mRegionPriority.bAeRegionEnable = OMX_FALSE; - } - } - - if ( algo & FOCUS_ALGO ) { - if ( enable ) { - mRegionPriority.bAfRegionEnable = OMX_TRUE; - } else { - mRegionPriority.bAfRegionEnable = OMX_FALSE; - } - } - - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - ( OMX_INDEXTYPE ) OMX_TI_IndexConfigRegionPriority3a, - &mRegionPriority); - if ( OMX_ErrorNone != eError ) { - CAMHAL_LOGEB("Error while configuring region priority 0x%x", eError); - } else { - CAMHAL_LOGDB("Region priority for algorithms set successfully 0x%x, 0x%x, 0x%x", - mRegionPriority.bAfRegionEnable, - mRegionPriority.bAeRegionEnable, - mRegionPriority.bAwbRegionEnable); - } - - } - - LOG_FUNCTION_NAME_EXIT; - - return Utils::ErrorUtils::omxToAndroidError(eError); -} - -status_t OMXCameraAdapter::setPictureRotation(unsigned int degree) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_CONFIG_ROTATIONTYPE rotation; - - LOG_FUNCTION_NAME; - - if ( OMX_StateInvalid == mComponentState ) - { - CAMHAL_LOGEA("OMX component is in invalid state"); - ret = -1; - } - - if ( NO_ERROR == ret ) - { - OMX_INIT_STRUCT(rotation, OMX_CONFIG_ROTATIONTYPE); - rotation.nRotation = degree; - rotation.nPortIndex = mCameraAdapterParameters.mImagePortIndex; - - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - OMX_IndexConfigCommonRotate, - &rotation); - if ( OMX_ErrorNone != eError ) - { - CAMHAL_LOGEB("Error while configuring rotation 0x%x", eError); - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::setSensorOrientation(unsigned int degree) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_CONFIG_ROTATIONTYPE sensorOrientation; - int tmpHeight, tmpWidth; - OMXCameraPortParameters *mPreviewData = &mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex]; - - LOG_FUNCTION_NAME; - if ( OMX_StateInvalid == mComponentState ) { - CAMHAL_LOGEA("OMX component is in invalid state"); - ret = -1; - } - - /* Set Temproary Port resolution. - * For resolution with height >= 720, - * resolution cannot be set without configuring orientation. - * So we first set a temp resolution. We have used VGA - */ - if ( mPreviewData->mHeight >= 720 ) { - tmpHeight = mPreviewData->mHeight; - tmpWidth = mPreviewData->mWidth; - mPreviewData->mWidth = 640; - mPreviewData->mHeight = 480; - - ret = setFormat(OMX_CAMERA_PORT_VIDEO_OUT_PREVIEW, *mPreviewData); - if ( NO_ERROR != ret ) { - CAMHAL_LOGEB("Error while configuring format 0x%x", ret); - return ret; - } - - mPreviewData->mWidth = tmpWidth; - mPreviewData->mHeight = tmpHeight; - mPreviewPortInitialized = true; - } - else if (!mPreviewPortInitialized) { - ret = setFormat(OMX_CAMERA_PORT_VIDEO_OUT_PREVIEW, *mPreviewData); - if ( NO_ERROR != ret ) { - CAMHAL_LOGEB("Error while configuring format 0x%x", ret); - return ret; - } - mPreviewPortInitialized = true; - } - - /* Now set Required Orientation*/ - if ( NO_ERROR == ret ) { - OMX_INIT_STRUCT(sensorOrientation, OMX_CONFIG_ROTATIONTYPE); - sensorOrientation.nPortIndex = mCameraAdapterParameters.mPrevPortIndex; - sensorOrientation.nRotation = degree; - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - OMX_IndexConfigCommonRotate, - &sensorOrientation); - if ( OMX_ErrorNone != eError ) { - CAMHAL_LOGEB("Error while configuring rotation 0x%x", eError); - } - CAMHAL_LOGVB(" Currently Sensor Orientation is set to : %d", - ( unsigned int ) sensorOrientation.nRotation); - CAMHAL_LOGVB(" Sensor Configured for Port : %d", - ( unsigned int ) sensorOrientation.nPortIndex); - } - - /* Now set the required resolution as requested */ - if ( NO_ERROR == ret ) { - bool portConfigured = false; - ret = setSensorQuirks(degree, - mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex], - portConfigured); - if ( NO_ERROR != ret ) { - CAMHAL_LOGEB("Error while configuring setSensorQuirks 0x%x", ret); - return ret; - } - - if ( !portConfigured ) { - ret = setFormat (mCameraAdapterParameters.mPrevPortIndex, - mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex]); - if ( NO_ERROR != ret ) { - CAMHAL_LOGEB("Error while configuring format 0x%x", ret); - return ret; - } - - // Another WA: Setting the port definition will reset the VFR - // configuration. - setVFramerate(mPreviewData->mMinFrameRate, - mPreviewData->mMaxFrameRate); - } - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t OMXCameraAdapter::setVFramerate(OMX_U32 minFrameRate, OMX_U32 maxFrameRate) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_TI_CONFIG_VARFRMRANGETYPE vfr; - OMXCameraPortParameters * mPreviewData = - &mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mPrevPortIndex]; - - LOG_FUNCTION_NAME; - - if ( OMX_StateInvalid == mComponentState ) { - CAMHAL_LOGEA("OMX component is in invalid state"); - ret = -EINVAL; - } - - if ( !mSetFormatDone ) { - return NO_INIT; - } - - if ( NO_ERROR == ret ) { - OMX_INIT_STRUCT_PTR (&vfr, OMX_TI_CONFIG_VARFRMRANGETYPE); - - vfr.xMin = minFrameRate<<16; - vfr.xMax = maxFrameRate<<16; - - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - (OMX_INDEXTYPE)OMX_TI_IndexConfigVarFrmRange, - &vfr); - if(OMX_ErrorNone != eError) { - CAMHAL_LOGEB("Error while setting VFR min = %d, max = %d, error = 0x%x", - ( unsigned int ) minFrameRate, - ( unsigned int ) maxFrameRate, - eError); - ret = -1; - } else { - CAMHAL_LOGDB("VFR Configured Successfully [%d:%d]", - ( unsigned int ) minFrameRate, - ( unsigned int ) maxFrameRate); - } - } - - return ret; -} - -#ifndef OMAP_TUNA -status_t OMXCameraAdapter::setMechanicalMisalignmentCorrection(const bool enable) -{ - status_t ret = NO_ERROR; - OMX_ERRORTYPE eError = OMX_ErrorNone; - OMX_TI_CONFIG_MM mm; - - LOG_FUNCTION_NAME; - - mm.nVersion = mLocalVersionParam; - mm.nSize = sizeof(OMX_TI_CONFIG_MM); - mm.nPortIndex = mCameraAdapterParameters.mPrevPortIndex; - mm.bMM = enable ? OMX_TRUE : OMX_FALSE; - - eError = OMX_SetConfig(mCameraAdapterParameters.mHandleComp, - (OMX_INDEXTYPE)OMX_TI_IndexConfigMechanicalMisalignment, - &mm); - - if(OMX_ErrorNone != eError) { - CAMHAL_LOGEB("Error while enabling mechanical misalignment correction. error = 0x%x", eError); - ret = -1; - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} -#endif - -} // namespace Camera -} // namespace Ti |