• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #define FOCUS_FACE_PRIORITY OMX_IMAGE_FocusControlMax -1
33 #define FOCUS_REGION_PRIORITY OMX_IMAGE_FocusControlMax -2
34 #define WB_FACE_PRIORITY OMX_WhiteBalControlMax -1
35 #define EXPOSURE_FACE_PRIORITY OMX_ExposureControlMax - 1
36 
37 namespace android {
38 
39 struct userToOMX_LUT{
40     const char * userDefinition;
41     int         omxDefinition;
42 };
43 
44 struct LUTtype{
45     int size;
46     const userToOMX_LUT *Table;
47 };
48 
49 const userToOMX_LUT isoUserToOMX[] = {
50     { TICameraParameters::ISO_MODE_AUTO, 0 },
51     { TICameraParameters::ISO_MODE_100, 100 },
52     { TICameraParameters::ISO_MODE_200, 200 },
53     { TICameraParameters::ISO_MODE_400, 400 },
54     { TICameraParameters::ISO_MODE_800, 800 },
55     { TICameraParameters::ISO_MODE_1000, 1000 },
56     { TICameraParameters::ISO_MODE_1200, 1200 },
57     { TICameraParameters::ISO_MODE_1600, 1600 },
58 };
59 
60 const userToOMX_LUT effects_UserToOMX [] = {
61     { CameraParameters::EFFECT_NONE, OMX_ImageFilterNone },
62     { CameraParameters::EFFECT_NEGATIVE, OMX_ImageFilterNegative },
63     { CameraParameters::EFFECT_SOLARIZE,  OMX_ImageFilterSolarize },
64     { CameraParameters::EFFECT_SEPIA, OMX_ImageFilterSepia },
65     { CameraParameters::EFFECT_MONO, OMX_ImageFilterGrayScale },
66     { CameraParameters::EFFECT_BLACKBOARD, OMX_TI_ImageFilterBlackBoard },
67     { CameraParameters::EFFECT_WHITEBOARD, OMX_TI_ImageFilterWhiteBoard },
68     { CameraParameters::EFFECT_AQUA, OMX_TI_ImageFilterAqua },
69     { CameraParameters::EFFECT_POSTERIZE, OMX_TI_ImageFilterPosterize },
70 #ifdef OMAP_ENHANCEMENT
71     { TICameraParameters::EFFECT_NATURAL, OMX_ImageFilterNatural },
72     { TICameraParameters::EFFECT_VIVID, OMX_ImageFilterVivid },
73     { TICameraParameters::EFFECT_COLOR_SWAP, OMX_ImageFilterColourSwap   },
74     { TICameraParameters::EFFECT_BLACKWHITE, OMX_TI_ImageFilterBlackWhite }
75 #endif
76 };
77 
78 const userToOMX_LUT scene_UserToOMX [] = {
79     { CameraParameters::SCENE_MODE_AUTO, OMX_Manual },
80     { CameraParameters::SCENE_MODE_ACTION, OMX_TI_Action },
81     { CameraParameters::SCENE_MODE_NIGHT, OMX_TI_Night },
82     { CameraParameters::SCENE_MODE_PARTY, OMX_TI_Party },
83     { CameraParameters::SCENE_MODE_SUNSET, OMX_TI_Sunset },
84 /*********** TODO: These scene modes are not verified. ************
85  ***************** Have to verify and reeable later. **************
86     { CameraParameters::SCENE_MODE_THEATRE, OMX_TI_Theatre },
87     { CameraParameters::SCENE_MODE_LANDSCAPE, OMX_Landscape },
88     { CameraParameters::SCENE_MODE_NIGHT_PORTRAIT, OMX_NightPortrait },
89     { CameraParameters::SCENE_MODE_FIREWORKS, OMX_Fireworks },
90     { CameraParameters::SCENE_MODE_BEACH, OMX_TI_Beach },
91     { CameraParameters::SCENE_MODE_CANDLELIGHT, OMX_TI_Candlelight },
92     { CameraParameters::SCENE_MODE_PORTRAIT, OMX_TI_Portrait },
93     { CameraParameters::SCENE_MODE_SNOW, OMX_TI_Snow },
94     { CameraParameters::SCENE_MODE_STEADYPHOTO, OMX_TI_Steadyphoto },
95 *********************************************************************/
96 #ifdef OMAP_ENHANCEMENT
97     { TICameraParameters::SCENE_MODE_CLOSEUP, OMX_Closeup },
98     { TICameraParameters::SCENE_MODE_AQUA, OMX_Underwater },
99     { TICameraParameters::SCENE_MODE_SPORT, OMX_Sport },
100     { TICameraParameters::SCENE_MODE_MOOD, OMX_Mood },
101     { TICameraParameters::SCENE_MODE_NIGHT_INDOOR, OMX_NightIndoor },
102     { TICameraParameters::SCENE_MODE_DOCUMENT, OMX_Document },
103     { TICameraParameters::SCENE_MODE_BARCODE, OMX_Barcode },
104     { TICameraParameters::SCENE_MODE_VIDEO_SUPER_NIGHT, OMX_SuperNight },
105     { TICameraParameters::SCENE_MODE_VIDEO_CINE, OMX_Cine },
106     { TICameraParameters::SCENE_MODE_VIDEO_OLD_FILM, OMX_OldFilm },
107 #endif
108 };
109 
110 const userToOMX_LUT whiteBal_UserToOMX [] = {
111     { CameraParameters::WHITE_BALANCE_AUTO, OMX_WhiteBalControlAuto },
112     { CameraParameters::WHITE_BALANCE_DAYLIGHT, OMX_WhiteBalControlSunLight },
113     { CameraParameters::WHITE_BALANCE_CLOUDY_DAYLIGHT, OMX_WhiteBalControlCloudy },
114     { CameraParameters::WHITE_BALANCE_FLUORESCENT, OMX_WhiteBalControlFluorescent },
115     { CameraParameters::WHITE_BALANCE_INCANDESCENT, OMX_WhiteBalControlIncandescent },
116 /********************** THESE ARE CURRENT NOT TUNED PROPERLY *************************
117     { CameraParameters::WHITE_BALANCE_SHADE, OMX_TI_WhiteBalControlShade },
118     { CameraParameters::WHITE_BALANCE_TWILIGHT, OMX_TI_WhiteBalControlTwilight },
119     { CameraParameters::WHITE_BALANCE_WARM_FLUORESCENT, OMX_TI_WhiteBalControlWarmFluorescent },
120 **************************************************************************************/
121 #ifdef OMAP_ENHANCEMENT
122     { TICameraParameters::WHITE_BALANCE_TUNGSTEN, OMX_WhiteBalControlTungsten },
123     { TICameraParameters::WHITE_BALANCE_HORIZON, OMX_WhiteBalControlHorizon },
124     { TICameraParameters::WHITE_BALANCE_FACE, WB_FACE_PRIORITY },
125     { TICameraParameters::WHITE_BALANCE_SUNSET, OMX_TI_WhiteBalControlSunset }
126 #endif
127 };
128 
129 const userToOMX_LUT antibanding_UserToOMX [] = {
130     { CameraParameters::ANTIBANDING_OFF, OMX_FlickerCancelOff },
131     { CameraParameters::ANTIBANDING_AUTO, OMX_FlickerCancelAuto },
132     { CameraParameters::ANTIBANDING_50HZ, OMX_FlickerCancel50 },
133     { CameraParameters::ANTIBANDING_60HZ, OMX_FlickerCancel60 }
134 };
135 
136 const userToOMX_LUT focus_UserToOMX [] = {
137     { CameraParameters::FOCUS_MODE_AUTO, OMX_IMAGE_FocusControlAutoLock },
138     { CameraParameters::FOCUS_MODE_INFINITY, OMX_IMAGE_FocusControlAutoInfinity },
139     { CameraParameters::FOCUS_MODE_INFINITY, OMX_IMAGE_FocusControlHyperfocal },
140     { CameraParameters::FOCUS_MODE_MACRO, OMX_IMAGE_FocusControlAutoMacro },
141     { CameraParameters::FOCUS_MODE_CONTINUOUS_VIDEO, OMX_IMAGE_FocusControlAuto },
142     { CameraParameters::FOCUS_MODE_CONTINUOUS_PICTURE, OMX_IMAGE_FocusControlAuto },
143 #ifdef OMAP_ENHANCEMENT
144     { TICameraParameters::FOCUS_MODE_FACE , FOCUS_FACE_PRIORITY },
145     { TICameraParameters::FOCUS_MODE_PORTRAIT, OMX_IMAGE_FocusControlPortrait },
146     { TICameraParameters::FOCUS_MODE_EXTENDED, OMX_IMAGE_FocusControlExtended },
147 #endif
148 };
149 
150 const userToOMX_LUT exposure_UserToOMX [] = {
151     { TICameraParameters::EXPOSURE_MODE_OFF, OMX_ExposureControlOff },
152     { TICameraParameters::EXPOSURE_MODE_AUTO, OMX_ExposureControlAuto },
153     { TICameraParameters::EXPOSURE_MODE_NIGHT, OMX_ExposureControlNight },
154     { TICameraParameters::EXPOSURE_MODE_BACKLIGHT, OMX_ExposureControlBackLight },
155     { TICameraParameters::EXPOSURE_MODE_SPOTLIGHT, OMX_ExposureControlSpotLight},
156     { TICameraParameters::EXPOSURE_MODE_SPORTS, OMX_ExposureControlSports },
157     { TICameraParameters::EXPOSURE_MODE_SNOW, OMX_ExposureControlSnow },
158     { TICameraParameters::EXPOSURE_MODE_BEACH, OMX_ExposureControlBeach },
159     { TICameraParameters::EXPOSURE_MODE_APERTURE, OMX_ExposureControlLargeAperture },
160     { TICameraParameters::EXPOSURE_MODE_SMALL_APERTURE, OMX_ExposureControlSmallApperture },
161     { TICameraParameters::EXPOSURE_MODE_FACE, EXPOSURE_FACE_PRIORITY },
162 };
163 
164 const userToOMX_LUT flash_UserToOMX [] = {
165     { CameraParameters::FLASH_MODE_OFF           ,OMX_IMAGE_FlashControlOff             },
166     { CameraParameters::FLASH_MODE_ON            ,OMX_IMAGE_FlashControlOn              },
167     { CameraParameters::FLASH_MODE_AUTO          ,OMX_IMAGE_FlashControlAuto            },
168     { CameraParameters::FLASH_MODE_TORCH         ,OMX_IMAGE_FlashControlTorch           },
169     { CameraParameters::FLASH_MODE_RED_EYE        ,OMX_IMAGE_FlashControlRedEyeReduction },
170 #ifdef OMAP_ENHANCEMENT
171     { TICameraParameters::FLASH_MODE_FILL_IN        ,OMX_IMAGE_FlashControlFillin          }
172 #endif
173 };
174 
175 const LUTtype ExpLUT =
176     {
177     sizeof(exposure_UserToOMX)/sizeof(exposure_UserToOMX[0]),
178     exposure_UserToOMX
179     };
180 
181 const LUTtype WBalLUT =
182     {
183     sizeof(whiteBal_UserToOMX)/sizeof(whiteBal_UserToOMX[0]),
184     whiteBal_UserToOMX
185     };
186 
187 const LUTtype FlickerLUT =
188     {
189     sizeof(antibanding_UserToOMX)/sizeof(antibanding_UserToOMX[0]),
190     antibanding_UserToOMX
191     };
192 
193 const LUTtype SceneLUT =
194     {
195     sizeof(scene_UserToOMX)/sizeof(scene_UserToOMX[0]),
196     scene_UserToOMX
197     };
198 
199 const LUTtype FlashLUT =
200     {
201     sizeof(flash_UserToOMX)/sizeof(flash_UserToOMX[0]),
202     flash_UserToOMX
203     };
204 
205 const LUTtype EffLUT =
206     {
207     sizeof(effects_UserToOMX)/sizeof(effects_UserToOMX[0]),
208     effects_UserToOMX
209     };
210 
211 const LUTtype FocusLUT =
212     {
213     sizeof(focus_UserToOMX)/sizeof(focus_UserToOMX[0]),
214     focus_UserToOMX
215     };
216 
217 const LUTtype IsoLUT =
218     {
219     sizeof(isoUserToOMX)/sizeof(isoUserToOMX[0]),
220     isoUserToOMX
221     };
222 
223 /*
224 *   class Gen3A_settings
225 *   stores the 3A settings
226 *   also defines the look up tables
227 *   for mapping settings from Hal to OMX
228 */
229 class Gen3A_settings{
230     public:
231 
232     int Exposure;
233     int WhiteBallance;
234     int Flicker;
235     int SceneMode;
236     int Effect;
237     int Focus;
238     int EVCompensation;
239     int Contrast;
240     int Saturation;
241     int Sharpness;
242     int ISO;
243     int FlashMode;
244 
245     unsigned int Brightness;
246     OMX_BOOL ExposureLock;
247     OMX_BOOL FocusLock;
248     OMX_BOOL WhiteBalanceLock;
249 };
250 
251 /*
252 *   Flags raised when a setting is changed
253 */
254 enum E3ASettingsFlags
255 {
256     SetSceneMode            = 1 << 0,
257     SetEVCompensation       = 1 << 1,
258     SetWhiteBallance        = 1 << 2,
259     SetFlicker              = 1 << 3,
260     SetExposure             = 1 << 4,
261     SetSharpness            = 1 << 5,
262     SetBrightness           = 1 << 6,
263     SetContrast             = 1 << 7,
264     SetISO                  = 1 << 8,
265     SetSaturation           = 1 << 9,
266     SetEffect               = 1 << 10,
267     SetFocus                = 1 << 11,
268     SetExpMode              = 1 << 14,
269     SetFlash                = 1 << 15,
270     SetExpLock              = 1 << 16,
271     SetWBLock               = 1 << 17,
272     SetMeteringAreas        = 1 << 18,
273 
274     E3aSettingMax,
275     E3AsettingsAll = ( ((E3aSettingMax -1 ) << 1) -1 ) /// all possible flags raised
276 };
277 
278 };
279 
280 #endif //GENERAL_3A_SETTINGS_H
281