• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Copyright (c) 2013, The Linux Foundation. All rights reserved.
2  *
3  * Redistribution and use in source and binary forms, with or without
4  * modification, are permitted provided that the following conditions are
5  * met:
6  *     * Redistributions of source code must retain the above copyright
7  *       notice, this list of conditions and the following disclaimer.
8  *     * Redistributions in binary form must reproduce the above
9  *       copyright notice, this list of conditions and the following
10  *       disclaimer in the documentation and/or other materials provided
11  *       with the distribution.
12  *     * Neither the name of The Linux Foundation nor the names of its
13  *       contributors may be used to endorse or promote products derived
14  *       from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  *
28  */
29 
30 #ifndef __MM_QCAMERA_MAIN_MENU_H__
31 #define __MM_QCAMERA_MAIN_MENU_H__
32 
33 #include "mm_camera_interface.h"
34 #include "mm_jpeg_interface.h"
35 
36 #define VIDEO_BUFFER_SIZE       (PREVIEW_WIDTH * PREVIEW_HEIGHT * 3/2)
37 #define THUMBNAIL_BUFFER_SIZE   (THUMBNAIL_WIDTH * THUMBNAIL_HEIGHT * 3/2)
38 #define SNAPSHOT_BUFFER_SIZE    (PICTURE_WIDTH * PICTURE_HEIGHT * 3/2)
39 
40 /*===========================================================================
41  * Macro
42  *===========================================================================*/
43 #define PREVIEW_FRAMES_NUM    5
44 #define VIDEO_FRAMES_NUM      5
45 #define THUMBNAIL_FRAMES_NUM  1
46 #define SNAPSHOT_FRAMES_NUM   1
47 #define MAX_NUM_FORMAT        32
48 
49 typedef enum
50 {
51   START_PREVIEW,
52   STOP_PREVIEW,
53   SET_WHITE_BALANCE,
54   SET_TINTLESS_ENABLE,
55   SET_TINTLESS_DISABLE,
56   SET_EXP_METERING,
57   GET_CTRL_VALUE,
58   TOGGLE_AFR,
59   SET_ISO,
60   BRIGHTNESS_GOTO_SUBMENU,
61   CONTRAST_GOTO_SUBMENU,
62   EV_GOTO_SUBMENU,
63   SATURATION_GOTO_SUBMENU,
64   SET_ZOOM,
65   SET_SHARPNESS,
66   TAKE_JPEG_SNAPSHOT,
67   START_RECORDING,
68   STOP_RECORDING,
69   BEST_SHOT,
70   LIVE_SHOT,
71   FLASH_MODES,
72   TOGGLE_ZSL,
73   TAKE_RAW_SNAPSHOT,
74   SWITCH_SNAP_RESOLUTION,
75   TOGGLE_WNR,
76   EXIT
77 } Camera_main_menu_t;
78 
79 typedef enum
80 {
81   ACTION_NO_ACTION,
82   ACTION_START_PREVIEW,
83   ACTION_STOP_PREVIEW,
84   ACTION_SET_WHITE_BALANCE,
85   ACTION_SET_TINTLESS_ENABLE,
86   ACTION_SET_TINTLESS_DISABLE,
87   ACTION_SET_EXP_METERING,
88   ACTION_GET_CTRL_VALUE,
89   ACTION_TOGGLE_AFR,
90   ACTION_SET_ISO,
91   ACTION_BRIGHTNESS_INCREASE,
92   ACTION_BRIGHTNESS_DECREASE,
93   ACTION_CONTRAST_INCREASE,
94   ACTION_CONTRAST_DECREASE,
95   ACTION_EV_INCREASE,
96   ACTION_EV_DECREASE,
97   ACTION_SATURATION_INCREASE,
98   ACTION_SATURATION_DECREASE,
99   ACTION_SET_ZOOM,
100   ACTION_SHARPNESS_INCREASE,
101   ACTION_SHARPNESS_DECREASE,
102   ACTION_TAKE_JPEG_SNAPSHOT,
103   ACTION_START_RECORDING,
104   ACTION_STOP_RECORDING,
105   ACTION_SET_BESTSHOT_MODE,
106   ACTION_TAKE_LIVE_SNAPSHOT,
107   ACTION_SET_FLASH_MODE,
108   ACTION_SWITCH_CAMERA,
109   ACTION_TOGGLE_ZSL,
110   ACTION_TAKE_RAW_SNAPSHOT,
111   ACTION_SWITCH_RESOLUTION,
112   ACTION_TOGGLE_WNR,
113   ACTION_EXIT
114 } camera_action_t;
115 
116 #define INVALID_KEY_PRESS 0
117 #define BASE_OFFSET  ('Z' - 'A' + 1)
118 #define BASE_OFFSET_NUM  ('Z' - 'A' + 2)
119 #define PAD_TO_WORD(a)  (((a)+3)&~3)
120 
121 
122 #define SQCIF_WIDTH     128
123 #define SQCIF_HEIGHT     96
124 #define QCIF_WIDTH      176
125 #define QCIF_HEIGHT     144
126 #define QVGA_WIDTH      320
127 #define QVGA_HEIGHT     240
128 #define HD_THUMBNAIL_WIDTH      256
129 #define HD_THUMBNAIL_HEIGHT     144
130 #define CIF_WIDTH       352
131 #define CIF_HEIGHT      288
132 #define VGA_WIDTH       640
133 #define VGA_HEIGHT      480
134 #define WVGA_WIDTH      800
135 #define WVGA_HEIGHT     480
136 #define WVGA_PLUS_WIDTH      960
137 #define WVGA_PLUS_HEIGHT     720
138 
139 #define MP1_WIDTH      1280
140 #define MP1_HEIGHT      960
141 #define MP2_WIDTH      1600
142 #define MP2_HEIGHT     1200
143 #define MP3_WIDTH      2048
144 #define MP3_HEIGHT     1536
145 #define MP5_WIDTH      2592
146 #define MP5_HEIGHT     1944
147 #define MP8_WIDTH      3264
148 #define MP8_HEIGHT     2448
149 #define MP12_WIDTH     4000
150 #define MP12_HEIGHT    3000
151 
152 #define SVGA_WIDTH      800
153 #define SVGA_HEIGHT     600
154 #define XGA_WIDTH      1024
155 #define XGA_HEIGHT      768
156 #define HD720_WIDTH    1280
157 #define HD720_HEIGHT    720
158 #define HD720_PLUS_WIDTH    1440
159 #define HD720_PLUS_HEIGHT   1080
160 #define WXGA_WIDTH     1280
161 #define WXGA_HEIGHT     768
162 #define HD1080_WIDTH   1920
163 #define HD1080_HEIGHT  1080
164 
165 
166 #define ONEMP_WIDTH    1280
167 #define SXGA_WIDTH     1280
168 #define UXGA_WIDTH     1600
169 #define QXGA_WIDTH     2048
170 #define FIVEMP_WIDTH   2560
171 
172 
173 #define ONEMP_HEIGHT    960
174 #define SXGA_HEIGHT     1024
175 #define UXGA_HEIGHT     1200
176 #define QXGA_HEIGHT     1536
177 #define FIVEMP_HEIGHT   1920
178 
179 
180 typedef enum
181 {
182   RESOLUTION_MIN,
183   QCIF                  = RESOLUTION_MIN,
184   QVGA,
185   VGA,
186   WVGA,
187   WVGA_PLUS ,
188   HD720,
189   HD720_PLUS,
190   HD1080,
191   RESOLUTION_PREVIEW_VIDEO_MAX = HD1080,
192   WXGA,
193   MP1,
194   MP2,
195   MP3,
196   MP5,
197   MP8,
198   MP12,
199   RESOLUTION_MAX         = MP12,
200 } Camera_Resolution;
201 
202 typedef struct{
203     uint16_t width;
204     uint16_t  height;
205     char * name;
206     char * str_name;
207     int supported;
208 } DIMENSION_TBL_T;
209 
210 typedef enum {
211     WHITE_BALANCE_STATE,
212     WHITE_BALANCE_TEMPERATURE,
213     BRIGHTNESS_CTRL,
214     EV,
215     CONTRAST_CTRL,
216     SATURATION_CTRL,
217     SHARPNESS_CTRL
218 } Get_Ctrl_modes;
219 
220 typedef enum {
221     AUTO_EXP_FRAME_AVG,
222     AUTO_EXP_CENTER_WEIGHTED,
223     AUTO_EXP_SPOT_METERING,
224     AUTO_EXP_SMART_METERING,
225     AUTO_EXP_USER_METERING,
226     AUTO_EXP_SPOT_METERING_ADV,
227     AUTO_EXP_CENTER_WEIGHTED_ADV,
228     AUTO_EXP_MAX
229 } Exp_Metering_modes;
230 
231 typedef enum {
232   ISO_AUTO,
233   ISO_DEBLUR,
234   ISO_100,
235   ISO_200,
236   ISO_400,
237   ISO_800,
238   ISO_1600,
239   ISO_MAX
240 } ISO_modes;
241 
242 typedef enum {
243   BESTSHOT_AUTO,
244   BESTSHOT_ACTION,
245   BESTSHOT_PORTRAIT,
246   BESTSHOT_LANDSCAPE,
247   BESTSHOT_NIGHT,
248   BESTSHOT_NIGHT_PORTRAIT,
249   BESTSHOT_THEATRE,
250   BESTSHOT_BEACH,
251   BESTSHOT_SNOW,
252   BESTSHOT_SUNSET,
253   BESTSHOT_ANTISHAKE,
254   BESTSHOT_FIREWORKS,
255   BESTSHOT_SPORTS,
256   BESTSHOT_PARTY,
257   BESTSHOT_CANDLELIGHT,
258   BESTSHOT_ASD,
259   BESTSHOT_BACKLIGHT,
260   BESTSHOT_FLOWERS,
261   BESTSHOT_AR,
262   BESTSHOT_HDR,
263   BESTSHOT_MAX
264 }Bestshot_modes;
265 
266 typedef enum {
267     FLASH_MODE_OFF,
268     FLASH_MODE_AUTO,
269     FLASH_MODE_ON,
270     FLASH_MODE_TORCH,
271     FLASH_MODE_MAX,
272 }Flash_modes;
273 
274 typedef enum {
275   WB_AUTO,
276   WB_INCANDESCENT,
277   WB_FLUORESCENT,
278   WB_WARM_FLUORESCENT,
279   WB_DAYLIGHT,
280   WB_CLOUDY_DAYLIGHT,
281   WB_TWILIGHT,
282   WB_SHADE,
283   WB_MAX
284 } White_Balance_modes;
285 
286 typedef enum
287 {
288   MENU_ID_MAIN,
289   MENU_ID_WHITEBALANCECHANGE,
290   MENU_ID_EXPMETERINGCHANGE,
291   MENU_ID_GET_CTRL_VALUE,
292   MENU_ID_TOGGLEAFR,
293   MENU_ID_ISOCHANGE,
294   MENU_ID_BRIGHTNESSCHANGE,
295   MENU_ID_CONTRASTCHANGE,
296   MENU_ID_EVCHANGE,
297   MENU_ID_SATURATIONCHANGE,
298   MENU_ID_ZOOMCHANGE,
299   MENU_ID_SHARPNESSCHANGE,
300   MENU_ID_BESTSHOT,
301   MENU_ID_FLASHMODE,
302   MENU_ID_SENSORS,
303   MENU_ID_SWITCH_RES,
304   MENU_ID_INVALID,
305 } menu_id_change_t;
306 
307 typedef enum
308 {
309   DECREASE_ZOOM,
310   INCREASE_ZOOM,
311   INCREASE_STEP_ZOOM,
312   DECREASE_STEP_ZOOM,
313 } Camera_Zoom;
314 
315 typedef enum
316 {
317   INC_CONTRAST,
318   DEC_CONTRAST,
319 } Camera_Contrast_changes;
320 
321 typedef enum
322 {
323   INC_BRIGHTNESS,
324   DEC_BRIGHTNESS,
325 } Camera_Brightness_changes;
326 
327 typedef enum
328 {
329   INCREASE_EV,
330   DECREASE_EV,
331 } Camera_EV_changes;
332 
333 typedef enum {
334   INC_SATURATION,
335   DEC_SATURATION,
336 } Camera_Saturation_changes;
337 
338 typedef enum
339 {
340   INC_ISO,
341   DEC_ISO,
342 } Camera_ISO_changes;
343 
344 typedef enum
345 {
346   INC_SHARPNESS,
347   DEC_SHARPNESS,
348 } Camera_Sharpness_changes;
349 
350 typedef enum {
351   ZOOM_IN,
352   ZOOM_OUT,
353 } Zoom_direction;
354 
355 typedef struct{
356     Camera_main_menu_t main_menu;
357     char * menu_name;
358 } CAMERA_MAIN_MENU_TBL_T;
359 
360 typedef struct{
361     char * menu_name;
362     int present;
363 } CAMERA_SENSOR_MENU_TLB_T;
364 
365 typedef struct{
366     Camera_Resolution cs_id;
367     uint16_t width;
368     uint16_t  height;
369     char * name;
370     char * str_name;
371 } PREVIEW_DIMENSION_TBL_T;
372 
373 typedef struct {
374   White_Balance_modes wb_id;
375   char * wb_name;
376 } WHITE_BALANCE_TBL_T;
377 
378 typedef struct {
379   Get_Ctrl_modes get_ctrl_id;
380   char * get_ctrl_name;
381 } GET_CTRL_TBL_T;
382 
383 typedef struct{
384   Exp_Metering_modes exp_metering_id;
385   char * exp_metering_name;
386 } EXP_METERING_TBL_T;
387 
388 typedef struct {
389   Bestshot_modes bs_id;
390   char *name;
391 } BESTSHOT_MODE_TBT_T;
392 
393 typedef struct {
394   Flash_modes bs_id;
395   char *name;
396 } FLASH_MODE_TBL_T;
397 
398 typedef struct {
399   ISO_modes iso_modes;
400   char *iso_modes_name;
401 } ISO_TBL_T;
402 
403 typedef struct {
404   Zoom_direction zoom_direction;
405   char * zoom_direction_name;
406 } ZOOM_TBL_T;
407 
408 typedef struct {
409   Camera_Sharpness_changes sharpness_change;
410   char *sharpness_change_name;
411 } SHARPNESS_TBL_T;
412 
413 typedef struct {
414   Camera_Brightness_changes bc_id;
415   char * brightness_name;
416 } CAMERA_BRIGHTNESS_TBL_T;
417 
418 typedef struct {
419   Camera_Contrast_changes cc_id;
420   char * contrast_name;
421 } CAMERA_CONTRST_TBL_T;
422 
423 typedef struct {
424   Camera_EV_changes ec_id;
425   char * EV_name;
426 } CAMERA_EV_TBL_T;
427 
428 typedef struct {
429   Camera_Saturation_changes sc_id;
430   char * saturation_name;
431 } CAMERA_SATURATION_TBL_T;
432 
433 typedef struct {
434   Camera_Sharpness_changes bc_id;
435   char * sharpness_name;
436 } CAMERA_SHARPNESS_TBL_T;
437 
438 #endif /* __MM_QCAMERA_MAIN_MENU_H__ */
439