Home | History | Annotate | Download | only in inc
      1 /*
      2  * Copyright (C) Texas Instruments - http://www.ti.com/
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 /**
     18 * @file General3A_Settings.h
     19 *
     20 * This file maps the Camera Hardware Interface to OMX.
     21 *
     22 */
     23 
     24 #include "OMX_TI_IVCommon.h"
     25 #include "OMX_TI_Common.h"
     26 #include "OMX_TI_Index.h"
     27 #include "TICameraParameters.h"
     28 
     29 #ifndef GENERAL_3A_SETTINGS_H
     30 #define GENERAL_3A_SETTINGS_H
     31 
     32 namespace Ti {
     33 namespace Camera {
     34 
     35 struct userToOMX_LUT{
     36     const char * userDefinition;
     37     int         omxDefinition;
     38 };
     39 
     40 struct LUTtype{
     41     int size;
     42     const userToOMX_LUT *Table;
     43 };
     44 
     45 const userToOMX_LUT isoUserToOMX[] = {
     46     { TICameraParameters::ISO_MODE_AUTO, 0 },
     47     { TICameraParameters::ISO_MODE_100, 100 },
     48     { TICameraParameters::ISO_MODE_200, 200 },
     49     { TICameraParameters::ISO_MODE_400, 400 },
     50     { TICameraParameters::ISO_MODE_800, 800 },
     51     { TICameraParameters::ISO_MODE_1000, 1000 },
     52     { TICameraParameters::ISO_MODE_1200, 1200 },
     53     { TICameraParameters::ISO_MODE_1600, 1600 },
     54 };
     55 
     56 const userToOMX_LUT effects_UserToOMX [] = {
     57     { android::CameraParameters::EFFECT_NONE, OMX_ImageFilterNone },
     58     { android::CameraParameters::EFFECT_NEGATIVE, OMX_ImageFilterNegative },
     59     { android::CameraParameters::EFFECT_SOLARIZE,  OMX_ImageFilterSolarize },
     60     { android::CameraParameters::EFFECT_SEPIA, OMX_ImageFilterSepia },
     61     { android::CameraParameters::EFFECT_MONO, OMX_ImageFilterGrayScale },
     62     { android::CameraParameters::EFFECT_BLACKBOARD, OMX_TI_ImageFilterBlackBoard },
     63     { android::CameraParameters::EFFECT_WHITEBOARD, OMX_TI_ImageFilterWhiteBoard },
     64     { android::CameraParameters::EFFECT_AQUA, OMX_TI_ImageFilterAqua },
     65     { android::CameraParameters::EFFECT_POSTERIZE, OMX_TI_ImageFilterPosterize },
     66 #ifdef OMAP_ENHANCEMENT
     67     { TICameraParameters::EFFECT_NATURAL, OMX_ImageFilterNatural },
     68     { TICameraParameters::EFFECT_VIVID, OMX_ImageFilterVivid },
     69     { TICameraParameters::EFFECT_COLOR_SWAP, OMX_ImageFilterColourSwap   },
     70     { TICameraParameters::EFFECT_BLACKWHITE, OMX_TI_ImageFilterBlackWhite }
     71 #endif
     72 };
     73 
     74 const userToOMX_LUT scene_UserToOMX [] = {
     75     { android::CameraParameters::SCENE_MODE_AUTO, OMX_Manual },
     76     { android::CameraParameters::SCENE_MODE_LANDSCAPE, OMX_Landscape },
     77     { android::CameraParameters::SCENE_MODE_NIGHT_PORTRAIT, OMX_NightPortrait },
     78     { android::CameraParameters::SCENE_MODE_FIREWORKS, OMX_Fireworks },
     79     { android::CameraParameters::SCENE_MODE_ACTION, OMX_TI_Action },
     80     { android::CameraParameters::SCENE_MODE_BEACH, OMX_TI_Beach },
     81     { android::CameraParameters::SCENE_MODE_CANDLELIGHT, OMX_TI_Candlelight },
     82     { android::CameraParameters::SCENE_MODE_NIGHT, OMX_TI_Night },
     83     { android::CameraParameters::SCENE_MODE_PARTY, OMX_TI_Party },
     84     { android::CameraParameters::SCENE_MODE_PORTRAIT, OMX_TI_Portrait },
     85     { android::CameraParameters::SCENE_MODE_SNOW, OMX_TI_Snow },
     86     { android::CameraParameters::SCENE_MODE_STEADYPHOTO, OMX_TI_Steadyphoto },
     87     { android::CameraParameters::SCENE_MODE_SUNSET, OMX_TI_Sunset },
     88     { android::CameraParameters::SCENE_MODE_THEATRE, OMX_TI_Theatre },
     89     { android::CameraParameters::SCENE_MODE_SPORTS, OMX_Sport },
     90 #ifdef OMAP_ENHANCEMENT
     91     { TICameraParameters::SCENE_MODE_CLOSEUP, OMX_Closeup },
     92     { TICameraParameters::SCENE_MODE_AQUA, OMX_Underwater },
     93     { TICameraParameters::SCENE_MODE_MOOD, OMX_Mood },
     94     { TICameraParameters::SCENE_MODE_NIGHT_INDOOR, OMX_NightIndoor },
     95     { TICameraParameters::SCENE_MODE_DOCUMENT, OMX_Document },
     96     { TICameraParameters::SCENE_MODE_BARCODE, OMX_Barcode },
     97     { TICameraParameters::SCENE_MODE_VIDEO_SUPER_NIGHT, OMX_SuperNight },
     98     { TICameraParameters::SCENE_MODE_VIDEO_CINE, OMX_Cine },
     99     { TICameraParameters::SCENE_MODE_VIDEO_OLD_FILM, OMX_OldFilm },
    100 #endif
    101 };
    102 
    103 const userToOMX_LUT whiteBal_UserToOMX [] = {
    104     { android::CameraParameters::WHITE_BALANCE_AUTO, OMX_WhiteBalControlAuto },
    105     { android::CameraParameters::WHITE_BALANCE_DAYLIGHT, OMX_WhiteBalControlSunLight },
    106     { android::CameraParameters::WHITE_BALANCE_CLOUDY_DAYLIGHT, OMX_WhiteBalControlCloudy },
    107     { android::CameraParameters::WHITE_BALANCE_FLUORESCENT, OMX_WhiteBalControlFluorescent },
    108     { android::CameraParameters::WHITE_BALANCE_INCANDESCENT, OMX_WhiteBalControlIncandescent },
    109     { android::CameraParameters::WHITE_BALANCE_SHADE, OMX_TI_WhiteBalControlShade },
    110     { android::CameraParameters::WHITE_BALANCE_TWILIGHT, OMX_TI_WhiteBalControlTwilight },
    111     { android::CameraParameters::WHITE_BALANCE_WARM_FLUORESCENT, OMX_TI_WhiteBalControlWarmFluorescent },
    112 #ifdef OMAP_ENHANCEMENT
    113     { TICameraParameters::WHITE_BALANCE_TUNGSTEN, OMX_WhiteBalControlTungsten },
    114     { TICameraParameters::WHITE_BALANCE_HORIZON, OMX_WhiteBalControlHorizon },
    115     { TICameraParameters::WHITE_BALANCE_SUNSET, OMX_TI_WhiteBalControlSunset }
    116 #endif
    117 };
    118 
    119 const userToOMX_LUT antibanding_UserToOMX [] = {
    120     { android::CameraParameters::ANTIBANDING_OFF, OMX_FlickerCancelOff },
    121     { android::CameraParameters::ANTIBANDING_AUTO, OMX_FlickerCancelAuto },
    122     { android::CameraParameters::ANTIBANDING_50HZ, OMX_FlickerCancel50 },
    123     { android::CameraParameters::ANTIBANDING_60HZ, OMX_FlickerCancel60 }
    124 };
    125 
    126 const userToOMX_LUT focus_UserToOMX [] = {
    127     { android::CameraParameters::FOCUS_MODE_AUTO, OMX_IMAGE_FocusControlAutoLock },
    128     { android::CameraParameters::FOCUS_MODE_INFINITY, OMX_IMAGE_FocusControlAutoInfinity },
    129     { android::CameraParameters::FOCUS_MODE_INFINITY, OMX_IMAGE_FocusControlHyperfocal },
    130     { android::CameraParameters::FOCUS_MODE_MACRO, OMX_IMAGE_FocusControlAutoMacro },
    131     { android::CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO, OMX_IMAGE_FocusControlAuto },
    132     { android::CameraParameters::FOCUS_MODE_CONTINUOUS_PICTURE, OMX_IMAGE_FocusControlAuto },
    133 #ifdef OMAP_ENHANCEMENT
    134     { TICameraParameters::FOCUS_MODE_FACE , OMX_IMAGE_FocusControlContinousFacePriority },
    135     { TICameraParameters::FOCUS_MODE_PORTRAIT, OMX_IMAGE_FocusControlPortrait },
    136     { TICameraParameters::FOCUS_MODE_EXTENDED, OMX_IMAGE_FocusControlExtended },
    137 #endif
    138     { TICameraParameters::FOCUS_MODE_OFF , OMX_IMAGE_FocusControlOff }
    139 };
    140 
    141 const userToOMX_LUT exposure_UserToOMX [] = {
    142     { TICameraParameters::EXPOSURE_MODE_MANUAL, OMX_ExposureControlOff },
    143     { TICameraParameters::EXPOSURE_MODE_AUTO, OMX_ExposureControlAuto },
    144     { TICameraParameters::EXPOSURE_MODE_NIGHT, OMX_ExposureControlNight },
    145     { TICameraParameters::EXPOSURE_MODE_BACKLIGHT, OMX_ExposureControlBackLight },
    146     { TICameraParameters::EXPOSURE_MODE_SPOTLIGHT, OMX_ExposureControlSpotLight},
    147     { TICameraParameters::EXPOSURE_MODE_SPORTS, OMX_ExposureControlSports },
    148     { TICameraParameters::EXPOSURE_MODE_SNOW, OMX_ExposureControlSnow },
    149     { TICameraParameters::EXPOSURE_MODE_BEACH, OMX_ExposureControlBeach },
    150     { TICameraParameters::EXPOSURE_MODE_APERTURE, OMX_ExposureControlLargeAperture },
    151     { TICameraParameters::EXPOSURE_MODE_SMALL_APERTURE, OMX_ExposureControlSmallApperture },
    152 };
    153 
    154 const userToOMX_LUT flash_UserToOMX [] = {
    155     { android::CameraParameters::FLASH_MODE_OFF           ,OMX_IMAGE_FlashControlOff             },
    156     { android::CameraParameters::FLASH_MODE_ON            ,OMX_IMAGE_FlashControlOn              },
    157     { android::CameraParameters::FLASH_MODE_AUTO          ,OMX_IMAGE_FlashControlAuto            },
    158     { android::CameraParameters::FLASH_MODE_TORCH         ,OMX_IMAGE_FlashControlTorch           },
    159     { android::CameraParameters::FLASH_MODE_RED_EYE        ,OMX_IMAGE_FlashControlRedEyeReduction },
    160 #ifdef OMAP_ENHANCEMENT
    161     { TICameraParameters::FLASH_MODE_FILL_IN        ,OMX_IMAGE_FlashControlFillin          }
    162 #endif
    163 };
    164 
    165 const LUTtype ExpLUT =
    166     {
    167     sizeof(exposure_UserToOMX)/sizeof(exposure_UserToOMX[0]),
    168     exposure_UserToOMX
    169     };
    170 
    171 const LUTtype WBalLUT =
    172     {
    173     sizeof(whiteBal_UserToOMX)/sizeof(whiteBal_UserToOMX[0]),
    174     whiteBal_UserToOMX
    175     };
    176 
    177 const LUTtype FlickerLUT =
    178     {
    179     sizeof(antibanding_UserToOMX)/sizeof(antibanding_UserToOMX[0]),
    180     antibanding_UserToOMX
    181     };
    182 
    183 const LUTtype SceneLUT =
    184     {
    185     sizeof(scene_UserToOMX)/sizeof(scene_UserToOMX[0]),
    186     scene_UserToOMX
    187     };
    188 
    189 const LUTtype FlashLUT =
    190     {
    191     sizeof(flash_UserToOMX)/sizeof(flash_UserToOMX[0]),
    192     flash_UserToOMX
    193     };
    194 
    195 const LUTtype EffLUT =
    196     {
    197     sizeof(effects_UserToOMX)/sizeof(effects_UserToOMX[0]),
    198     effects_UserToOMX
    199     };
    200 
    201 const LUTtype FocusLUT =
    202     {
    203     sizeof(focus_UserToOMX)/sizeof(focus_UserToOMX[0]),
    204     focus_UserToOMX
    205     };
    206 
    207 const LUTtype IsoLUT =
    208     {
    209     sizeof(isoUserToOMX)/sizeof(isoUserToOMX[0]),
    210     isoUserToOMX
    211     };
    212 
    213 /*
    214 *   class Gen3A_settings
    215 *   stores the 3A settings
    216 *   also defines the look up tables
    217 *   for mapping settings from Hal to OMX
    218 */
    219 class Gen3A_settings{
    220     public:
    221 
    222     int Exposure;
    223     int WhiteBallance;
    224     int Flicker;
    225     int SceneMode;
    226     int Effect;
    227     int Focus;
    228     int EVCompensation;
    229     int Contrast;
    230     int Saturation;
    231     int Sharpness;
    232     int ISO;
    233     int FlashMode;
    234     int ManualExposure;
    235     int ManualExposureRight;
    236     int ManualGain;
    237     int ManualGainRight;
    238 
    239     unsigned int Brightness;
    240     OMX_BOOL ExposureLock;
    241     OMX_BOOL FocusLock;
    242     OMX_BOOL WhiteBalanceLock;
    243 
    244     OMX_BOOL AlgoExternalGamma;
    245     OMX_BOOL AlgoNSF1;
    246     OMX_BOOL AlgoNSF2;
    247     OMX_BOOL AlgoSharpening;
    248     OMX_BOOL AlgoThreeLinColorMap;
    249     OMX_BOOL AlgoGIC;
    250 
    251     OMX_TI_CONFIG_GAMMATABLE_TYPE mGammaTable;
    252 
    253 };
    254 
    255 /*
    256 *   Flags raised when a setting is changed
    257 */
    258 enum E3ASettingsFlags
    259 {
    260     SetSceneMode            = 1 << 0,
    261     SetEVCompensation       = 1 << 1,
    262     SetWhiteBallance        = 1 << 2,
    263     SetFlicker              = 1 << 3,
    264     SetExposure             = 1 << 4,
    265     SetSharpness            = 1 << 5,
    266     SetBrightness           = 1 << 6,
    267     SetContrast             = 1 << 7,
    268     SetISO                  = 1 << 8,
    269     SetSaturation           = 1 << 9,
    270     SetEffect               = 1 << 10,
    271     SetFocus                = 1 << 11,
    272     SetExpMode              = 1 << 14,
    273     SetFlash                = 1 << 15,
    274     SetExpLock              = 1 << 16,
    275     SetWBLock               = 1 << 17,
    276     SetMeteringAreas        = 1 << 18,
    277     SetManualExposure       = 1 << 19,
    278 
    279     SetAlgoExternalGamma    = 1 << 20,
    280     SetAlgoNSF1             = 1 << 21,
    281     SetAlgoNSF2             = 1 << 22,
    282     SetAlgoSharpening       = 1 << 23,
    283     SetAlgoThreeLinColorMap = 1 << 24,
    284     SetAlgoGIC              = 1 << 25,
    285     SetGammaTable           = 1 << 26,
    286 
    287 
    288     E3aSettingMax,
    289     E3AsettingsAll = ( ((E3aSettingMax -1 ) << 1) -1 ) /// all possible flags raised
    290 };
    291 
    292 } // namespace Camera
    293 } // namespace Ti
    294 
    295 #endif //GENERAL_3A_SETTINGS_H
    296