295 lines
11 KiB
C++
295 lines
11 KiB
C++
/*
|
|
* 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 General3A_Settings.h
|
|
*
|
|
* This file maps the Camera Hardware Interface to OMX.
|
|
*
|
|
*/
|
|
|
|
#include "OMX_TI_IVCommon.h"
|
|
#include "OMX_TI_Common.h"
|
|
#include "OMX_TI_Index.h"
|
|
#include "TICameraParameters.h"
|
|
|
|
#ifndef GENERAL_3A_SETTINGS_H
|
|
#define GENERAL_3A_SETTINGS_H
|
|
|
|
namespace Ti {
|
|
namespace Camera {
|
|
|
|
struct userToOMX_LUT{
|
|
const char * userDefinition;
|
|
int omxDefinition;
|
|
};
|
|
|
|
struct LUTtype{
|
|
int size;
|
|
const userToOMX_LUT *Table;
|
|
};
|
|
|
|
const userToOMX_LUT isoUserToOMX[] = {
|
|
{ TICameraParameters::ISO_MODE_AUTO, 0 },
|
|
{ TICameraParameters::ISO_MODE_100, 100 },
|
|
{ TICameraParameters::ISO_MODE_200, 200 },
|
|
{ TICameraParameters::ISO_MODE_400, 400 },
|
|
{ TICameraParameters::ISO_MODE_800, 800 },
|
|
{ TICameraParameters::ISO_MODE_1000, 1000 },
|
|
{ TICameraParameters::ISO_MODE_1200, 1200 },
|
|
{ TICameraParameters::ISO_MODE_1600, 1600 },
|
|
};
|
|
|
|
const userToOMX_LUT effects_UserToOMX [] = {
|
|
{ android::CameraParameters::EFFECT_NONE, OMX_ImageFilterNone },
|
|
{ android::CameraParameters::EFFECT_NEGATIVE, OMX_ImageFilterNegative },
|
|
{ android::CameraParameters::EFFECT_SOLARIZE, OMX_ImageFilterSolarize },
|
|
{ android::CameraParameters::EFFECT_SEPIA, OMX_ImageFilterSepia },
|
|
{ android::CameraParameters::EFFECT_MONO, OMX_ImageFilterGrayScale },
|
|
{ android::CameraParameters::EFFECT_BLACKBOARD, OMX_TI_ImageFilterBlackBoard },
|
|
{ android::CameraParameters::EFFECT_WHITEBOARD, OMX_TI_ImageFilterWhiteBoard },
|
|
{ android::CameraParameters::EFFECT_AQUA, OMX_TI_ImageFilterAqua },
|
|
{ android::CameraParameters::EFFECT_POSTERIZE, OMX_TI_ImageFilterPosterize },
|
|
#ifdef OMAP_ENHANCEMENT
|
|
{ TICameraParameters::EFFECT_NATURAL, OMX_ImageFilterNatural },
|
|
{ TICameraParameters::EFFECT_VIVID, OMX_ImageFilterVivid },
|
|
{ TICameraParameters::EFFECT_COLOR_SWAP, OMX_ImageFilterColourSwap },
|
|
{ TICameraParameters::EFFECT_BLACKWHITE, OMX_TI_ImageFilterBlackWhite }
|
|
#endif
|
|
};
|
|
|
|
const userToOMX_LUT scene_UserToOMX [] = {
|
|
{ android::CameraParameters::SCENE_MODE_AUTO, OMX_Manual },
|
|
{ android::CameraParameters::SCENE_MODE_LANDSCAPE, OMX_Landscape },
|
|
{ android::CameraParameters::SCENE_MODE_NIGHT_PORTRAIT, OMX_NightPortrait },
|
|
{ android::CameraParameters::SCENE_MODE_FIREWORKS, OMX_Fireworks },
|
|
{ android::CameraParameters::SCENE_MODE_ACTION, OMX_TI_Action },
|
|
{ android::CameraParameters::SCENE_MODE_BEACH, OMX_TI_Beach },
|
|
{ android::CameraParameters::SCENE_MODE_CANDLELIGHT, OMX_TI_Candlelight },
|
|
{ android::CameraParameters::SCENE_MODE_NIGHT, OMX_TI_Night },
|
|
{ android::CameraParameters::SCENE_MODE_PARTY, OMX_TI_Party },
|
|
{ android::CameraParameters::SCENE_MODE_PORTRAIT, OMX_TI_Portrait },
|
|
{ android::CameraParameters::SCENE_MODE_SNOW, OMX_TI_Snow },
|
|
{ android::CameraParameters::SCENE_MODE_STEADYPHOTO, OMX_TI_Steadyphoto },
|
|
{ android::CameraParameters::SCENE_MODE_SUNSET, OMX_TI_Sunset },
|
|
{ android::CameraParameters::SCENE_MODE_THEATRE, OMX_TI_Theatre },
|
|
{ android::CameraParameters::SCENE_MODE_SPORTS, OMX_Sport },
|
|
#ifdef OMAP_ENHANCEMENT
|
|
{ TICameraParameters::SCENE_MODE_CLOSEUP, OMX_Closeup },
|
|
{ TICameraParameters::SCENE_MODE_AQUA, OMX_Underwater },
|
|
{ TICameraParameters::SCENE_MODE_MOOD, OMX_Mood },
|
|
{ TICameraParameters::SCENE_MODE_NIGHT_INDOOR, OMX_NightIndoor },
|
|
{ TICameraParameters::SCENE_MODE_DOCUMENT, OMX_Document },
|
|
{ TICameraParameters::SCENE_MODE_BARCODE, OMX_Barcode },
|
|
{ TICameraParameters::SCENE_MODE_VIDEO_SUPER_NIGHT, OMX_SuperNight },
|
|
{ TICameraParameters::SCENE_MODE_VIDEO_CINE, OMX_Cine },
|
|
{ TICameraParameters::SCENE_MODE_VIDEO_OLD_FILM, OMX_OldFilm },
|
|
#endif
|
|
};
|
|
|
|
const userToOMX_LUT whiteBal_UserToOMX [] = {
|
|
{ android::CameraParameters::WHITE_BALANCE_AUTO, OMX_WhiteBalControlAuto },
|
|
{ android::CameraParameters::WHITE_BALANCE_DAYLIGHT, OMX_WhiteBalControlSunLight },
|
|
{ android::CameraParameters::WHITE_BALANCE_CLOUDY_DAYLIGHT, OMX_WhiteBalControlCloudy },
|
|
{ android::CameraParameters::WHITE_BALANCE_FLUORESCENT, OMX_WhiteBalControlFluorescent },
|
|
{ android::CameraParameters::WHITE_BALANCE_INCANDESCENT, OMX_WhiteBalControlIncandescent },
|
|
{ android::CameraParameters::WHITE_BALANCE_SHADE, OMX_TI_WhiteBalControlShade },
|
|
{ android::CameraParameters::WHITE_BALANCE_TWILIGHT, OMX_TI_WhiteBalControlTwilight },
|
|
{ android::CameraParameters::WHITE_BALANCE_WARM_FLUORESCENT, OMX_TI_WhiteBalControlWarmFluorescent },
|
|
#ifdef OMAP_ENHANCEMENT
|
|
{ TICameraParameters::WHITE_BALANCE_TUNGSTEN, OMX_WhiteBalControlTungsten },
|
|
{ TICameraParameters::WHITE_BALANCE_HORIZON, OMX_WhiteBalControlHorizon },
|
|
{ TICameraParameters::WHITE_BALANCE_SUNSET, OMX_TI_WhiteBalControlSunset }
|
|
#endif
|
|
};
|
|
|
|
const userToOMX_LUT antibanding_UserToOMX [] = {
|
|
{ android::CameraParameters::ANTIBANDING_OFF, OMX_FlickerCancelOff },
|
|
{ android::CameraParameters::ANTIBANDING_AUTO, OMX_FlickerCancelAuto },
|
|
{ android::CameraParameters::ANTIBANDING_50HZ, OMX_FlickerCancel50 },
|
|
{ android::CameraParameters::ANTIBANDING_60HZ, OMX_FlickerCancel60 }
|
|
};
|
|
|
|
const userToOMX_LUT focus_UserToOMX [] = {
|
|
{ android::CameraParameters::FOCUS_MODE_AUTO, OMX_IMAGE_FocusControlAutoLock },
|
|
{ android::CameraParameters::FOCUS_MODE_INFINITY, OMX_IMAGE_FocusControlAutoInfinity },
|
|
{ android::CameraParameters::FOCUS_MODE_INFINITY, OMX_IMAGE_FocusControlHyperfocal },
|
|
{ android::CameraParameters::FOCUS_MODE_MACRO, OMX_IMAGE_FocusControlAutoMacro },
|
|
{ android::CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO, OMX_IMAGE_FocusControlAuto },
|
|
{ android::CameraParameters::FOCUS_MODE_CONTINUOUS_PICTURE, OMX_IMAGE_FocusControlAuto },
|
|
#ifdef OMAP_ENHANCEMENT
|
|
{ TICameraParameters::FOCUS_MODE_FACE , OMX_IMAGE_FocusControlContinousFacePriority },
|
|
{ TICameraParameters::FOCUS_MODE_PORTRAIT, OMX_IMAGE_FocusControlPortrait },
|
|
{ TICameraParameters::FOCUS_MODE_EXTENDED, OMX_IMAGE_FocusControlExtended },
|
|
#endif
|
|
{ TICameraParameters::FOCUS_MODE_OFF , OMX_IMAGE_FocusControlOff }
|
|
};
|
|
|
|
const userToOMX_LUT exposure_UserToOMX [] = {
|
|
{ TICameraParameters::EXPOSURE_MODE_MANUAL, OMX_ExposureControlOff },
|
|
{ TICameraParameters::EXPOSURE_MODE_AUTO, OMX_ExposureControlAuto },
|
|
{ TICameraParameters::EXPOSURE_MODE_NIGHT, OMX_ExposureControlNight },
|
|
{ TICameraParameters::EXPOSURE_MODE_BACKLIGHT, OMX_ExposureControlBackLight },
|
|
{ TICameraParameters::EXPOSURE_MODE_SPOTLIGHT, OMX_ExposureControlSpotLight},
|
|
{ TICameraParameters::EXPOSURE_MODE_SPORTS, OMX_ExposureControlSports },
|
|
{ TICameraParameters::EXPOSURE_MODE_SNOW, OMX_ExposureControlSnow },
|
|
{ TICameraParameters::EXPOSURE_MODE_BEACH, OMX_ExposureControlBeach },
|
|
{ TICameraParameters::EXPOSURE_MODE_APERTURE, OMX_ExposureControlLargeAperture },
|
|
{ TICameraParameters::EXPOSURE_MODE_SMALL_APERTURE, OMX_ExposureControlSmallApperture },
|
|
};
|
|
|
|
const userToOMX_LUT flash_UserToOMX [] = {
|
|
{ android::CameraParameters::FLASH_MODE_OFF ,OMX_IMAGE_FlashControlOff },
|
|
{ android::CameraParameters::FLASH_MODE_ON ,OMX_IMAGE_FlashControlOn },
|
|
{ android::CameraParameters::FLASH_MODE_AUTO ,OMX_IMAGE_FlashControlAuto },
|
|
{ android::CameraParameters::FLASH_MODE_TORCH ,OMX_IMAGE_FlashControlTorch },
|
|
{ android::CameraParameters::FLASH_MODE_RED_EYE ,OMX_IMAGE_FlashControlRedEyeReduction },
|
|
#ifdef OMAP_ENHANCEMENT
|
|
{ TICameraParameters::FLASH_MODE_FILL_IN ,OMX_IMAGE_FlashControlFillin }
|
|
#endif
|
|
};
|
|
|
|
const LUTtype ExpLUT =
|
|
{
|
|
sizeof(exposure_UserToOMX)/sizeof(exposure_UserToOMX[0]),
|
|
exposure_UserToOMX
|
|
};
|
|
|
|
const LUTtype WBalLUT =
|
|
{
|
|
sizeof(whiteBal_UserToOMX)/sizeof(whiteBal_UserToOMX[0]),
|
|
whiteBal_UserToOMX
|
|
};
|
|
|
|
const LUTtype FlickerLUT =
|
|
{
|
|
sizeof(antibanding_UserToOMX)/sizeof(antibanding_UserToOMX[0]),
|
|
antibanding_UserToOMX
|
|
};
|
|
|
|
const LUTtype SceneLUT =
|
|
{
|
|
sizeof(scene_UserToOMX)/sizeof(scene_UserToOMX[0]),
|
|
scene_UserToOMX
|
|
};
|
|
|
|
const LUTtype FlashLUT =
|
|
{
|
|
sizeof(flash_UserToOMX)/sizeof(flash_UserToOMX[0]),
|
|
flash_UserToOMX
|
|
};
|
|
|
|
const LUTtype EffLUT =
|
|
{
|
|
sizeof(effects_UserToOMX)/sizeof(effects_UserToOMX[0]),
|
|
effects_UserToOMX
|
|
};
|
|
|
|
const LUTtype FocusLUT =
|
|
{
|
|
sizeof(focus_UserToOMX)/sizeof(focus_UserToOMX[0]),
|
|
focus_UserToOMX
|
|
};
|
|
|
|
const LUTtype IsoLUT =
|
|
{
|
|
sizeof(isoUserToOMX)/sizeof(isoUserToOMX[0]),
|
|
isoUserToOMX
|
|
};
|
|
|
|
/*
|
|
* class Gen3A_settings
|
|
* stores the 3A settings
|
|
* also defines the look up tables
|
|
* for mapping settings from Hal to OMX
|
|
*/
|
|
class Gen3A_settings{
|
|
public:
|
|
|
|
int Exposure;
|
|
int WhiteBallance;
|
|
int Flicker;
|
|
int SceneMode;
|
|
int Effect;
|
|
int Focus;
|
|
int EVCompensation;
|
|
int Contrast;
|
|
int Saturation;
|
|
int Sharpness;
|
|
int ISO;
|
|
int FlashMode;
|
|
int ManualExposure;
|
|
int ManualExposureRight;
|
|
int ManualGain;
|
|
int ManualGainRight;
|
|
|
|
unsigned int Brightness;
|
|
OMX_BOOL ExposureLock;
|
|
OMX_BOOL FocusLock;
|
|
OMX_BOOL WhiteBalanceLock;
|
|
|
|
OMX_BOOL AlgoExternalGamma;
|
|
OMX_BOOL AlgoNSF1;
|
|
OMX_BOOL AlgoNSF2;
|
|
OMX_BOOL AlgoSharpening;
|
|
OMX_BOOL AlgoThreeLinColorMap;
|
|
OMX_BOOL AlgoGIC;
|
|
|
|
OMX_TI_CONFIG_GAMMATABLE_TYPE mGammaTable;
|
|
|
|
};
|
|
|
|
/*
|
|
* Flags raised when a setting is changed
|
|
*/
|
|
enum E3ASettingsFlags
|
|
{
|
|
SetSceneMode = 1 << 0,
|
|
SetEVCompensation = 1 << 1,
|
|
SetWhiteBallance = 1 << 2,
|
|
SetFlicker = 1 << 3,
|
|
SetExposure = 1 << 4,
|
|
SetSharpness = 1 << 5,
|
|
SetBrightness = 1 << 6,
|
|
SetContrast = 1 << 7,
|
|
SetISO = 1 << 8,
|
|
SetSaturation = 1 << 9,
|
|
SetEffect = 1 << 10,
|
|
SetFocus = 1 << 11,
|
|
SetExpMode = 1 << 14,
|
|
SetFlash = 1 << 15,
|
|
SetExpLock = 1 << 16,
|
|
SetWBLock = 1 << 17,
|
|
SetMeteringAreas = 1 << 18,
|
|
SetManualExposure = 1 << 19,
|
|
|
|
SetAlgoExternalGamma = 1 << 20,
|
|
SetAlgoNSF1 = 1 << 21,
|
|
SetAlgoNSF2 = 1 << 22,
|
|
SetAlgoSharpening = 1 << 23,
|
|
SetAlgoThreeLinColorMap = 1 << 24,
|
|
SetAlgoGIC = 1 << 25,
|
|
SetGammaTable = 1 << 26,
|
|
|
|
|
|
E3aSettingMax,
|
|
E3AsettingsAll = ( ((E3aSettingMax -1 ) << 1) -1 ) /// all possible flags raised
|
|
};
|
|
|
|
} // namespace Camera
|
|
} // namespace Ti
|
|
|
|
#endif //GENERAL_3A_SETTINGS_H
|