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