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   TOGGLE_SHDR,
     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   SPECIAL_EFFECTS,
     78   SET_MN_WHITE_BALANCE,
     79   ANTI_BANDING,
     80   SET_FLIP_MODE,
     81   BURST_MODE_SNAPSHOT,
     82   CONCURRENT_NDR_NONHDR,
     83   EXIT
     84 } Camera_main_menu_t;
     85 
     86 typedef enum
     87 {
     88   ACTION_NO_ACTION,
     89   ACTION_START_PREVIEW,
     90   ACTION_STOP_PREVIEW,
     91   ACTION_SET_WHITE_BALANCE,
     92   ACTION_SET_MN_WHITE_BALANCE,
     93   ACTION_SET_TINTLESS_ENABLE,
     94   ACTION_TOGGLE_SHDR,
     95   ACTION_SET_EXP_METERING,
     96   ACTION_TOGGLE_IR_MODE,
     97   ACTION_TOGGLE_AFR,
     98   ACTION_TOGGLE_EZTUNE,
     99   ACTION_SET_ISO,
    100   ACTION_BRIGHTNESS_INCREASE,
    101   ACTION_BRIGHTNESS_DECREASE,
    102   ACTION_CONTRAST_INCREASE,
    103   ACTION_CONTRAST_DECREASE,
    104   ACTION_EV_INCREASE,
    105   ACTION_EV_DECREASE,
    106   ACTION_SATURATION_INCREASE,
    107   ACTION_SATURATION_DECREASE,
    108   ACTION_SET_ZOOM,
    109   ACTION_SHARPNESS_INCREASE,
    110   ACTION_SHARPNESS_DECREASE,
    111   ACTION_TAKE_JPEG_SNAPSHOT,
    112   ACTION_START_RECORDING,
    113   ACTION_STOP_RECORDING,
    114   ACTION_SET_BESTSHOT_MODE,
    115   ACTION_TAKE_LIVE_SNAPSHOT,
    116   ACTION_SET_FLASH_MODE,
    117   ACTION_SWITCH_CAMERA,
    118   ACTION_TOGGLE_ZSL,
    119   ACTION_TAKE_RAW_SNAPSHOT,
    120   ACTION_SWITCH_RESOLUTION,
    121   ACTION_TOGGLE_WNR,
    122   ACTION_SPECIAL_EFFECTS,
    123   ACTION_ANTI_BANDING,
    124   ACTION_BURST_MODE_SNAPSHOT,
    125   ACTION_FLIP_MODE,
    126   ACTION_CONCURRENT_NDR_NONHDR,
    127   ACTION_EXIT
    128 } camera_action_t;
    129 
    130 #define INVALID_KEY_PRESS 0
    131 #define BASE_OFFSET  ('Z' - 'A' + 1)
    132 #define BASE_OFFSET_NUM  ('Z' - 'A' + 2)
    133 #define PAD_TO_WORD(a)  (((a)+3)&~3)
    134 
    135 
    136 #define SQCIF_WIDTH     128
    137 #define SQCIF_HEIGHT     96
    138 #define QCIF_WIDTH      176
    139 #define QCIF_HEIGHT     144
    140 #define QVGA_WIDTH      320
    141 #define QVGA_HEIGHT     240
    142 #define HD_THUMBNAIL_WIDTH      256
    143 #define HD_THUMBNAIL_HEIGHT     144
    144 #define CIF_WIDTH       352
    145 #define CIF_HEIGHT      288
    146 #define VGA_WIDTH       640
    147 #define VGA_HEIGHT      480
    148 #define WVGA_WIDTH      800
    149 #define WVGA_HEIGHT     480
    150 #define WVGA_PLUS_WIDTH      960
    151 #define WVGA_PLUS_HEIGHT     720
    152 
    153 #define MP1_WIDTH      1280
    154 #define MP1_HEIGHT      960
    155 #define MP2_WIDTH      1600
    156 #define MP2_HEIGHT     1200
    157 #define MP3_WIDTH      2048
    158 #define MP3_HEIGHT     1536
    159 #define MP5_WIDTH      2592
    160 #define MP5_HEIGHT     1944
    161 #define MP8_WIDTH      3264
    162 #define MP8_HEIGHT     2448
    163 #define MP12_WIDTH     4000
    164 #define MP12_HEIGHT    3000
    165 
    166 #define SVGA_WIDTH      800
    167 #define SVGA_HEIGHT     600
    168 #define XGA_WIDTH      1024
    169 #define XGA_HEIGHT      768
    170 #define HD720_WIDTH    1280
    171 #define HD720_HEIGHT    720
    172 #define HD720_PLUS_WIDTH    1440
    173 #define HD720_PLUS_HEIGHT   1080
    174 #define WXGA_WIDTH     1280
    175 #define WXGA_HEIGHT     768
    176 #define HD1080_WIDTH   1920
    177 #define HD1080_HEIGHT  1080
    178 
    179 
    180 #define ONEMP_WIDTH    1280
    181 #define SXGA_WIDTH     1280
    182 #define UXGA_WIDTH     1600
    183 #define QXGA_WIDTH     2048
    184 #define FIVEMP_WIDTH   2560
    185 
    186 
    187 #define ONEMP_HEIGHT    960
    188 #define SXGA_HEIGHT     1024
    189 #define UXGA_HEIGHT     1200
    190 #define QXGA_HEIGHT     1536
    191 #define FIVEMP_HEIGHT   1920
    192 
    193 
    194 typedef enum
    195 {
    196   RESOLUTION_MIN,
    197   QCIF                  = RESOLUTION_MIN,
    198   QVGA,
    199   VGA,
    200   WVGA,
    201   WVGA_PLUS ,
    202   HD720,
    203   HD720_PLUS,
    204   HD1080,
    205   RESOLUTION_PREVIEW_VIDEO_MAX = HD1080,
    206   WXGA,
    207   MP1,
    208   MP2,
    209   MP3,
    210   MP5,
    211   MP8,
    212   MP12,
    213   RESOLUTION_MAX         = MP12,
    214 } Camera_Resolution;
    215 
    216 typedef struct{
    217     uint16_t width;
    218     uint16_t  height;
    219     char * name;
    220     char * str_name;
    221     int supported;
    222 } DIMENSION_TBL_T;
    223 
    224 typedef enum {
    225     WHITE_BALANCE_STATE,
    226     WHITE_BALANCE_TEMPERATURE,
    227     BRIGHTNESS_CTRL,
    228     EV,
    229     CONTRAST_CTRL,
    230     SATURATION_CTRL,
    231     SHARPNESS_CTRL
    232 } Get_Ctrl_modes;
    233 
    234 typedef enum {
    235     AUTO_EXP_FRAME_AVG,
    236     AUTO_EXP_CENTER_WEIGHTED,
    237     AUTO_EXP_SPOT_METERING,
    238     AUTO_EXP_SMART_METERING,
    239     AUTO_EXP_USER_METERING,
    240     AUTO_EXP_SPOT_METERING_ADV,
    241     AUTO_EXP_CENTER_WEIGHTED_ADV,
    242     AUTO_EXP_MAX
    243 } Exp_Metering_modes;
    244 
    245 typedef enum {
    246   ISO_AUTO,
    247   ISO_DEBLUR,
    248   ISO_100,
    249   ISO_200,
    250   ISO_400,
    251   ISO_800,
    252   ISO_1600,
    253   ISO_MAX
    254 } ISO_modes;
    255 
    256 typedef enum {
    257   BESTSHOT_AUTO,
    258   BESTSHOT_ACTION,
    259   BESTSHOT_PORTRAIT,
    260   BESTSHOT_LANDSCAPE,
    261   BESTSHOT_NIGHT,
    262   BESTSHOT_NIGHT_PORTRAIT,
    263   BESTSHOT_THEATRE,
    264   BESTSHOT_BEACH,
    265   BESTSHOT_SNOW,
    266   BESTSHOT_SUNSET,
    267   BESTSHOT_ANTISHAKE,
    268   BESTSHOT_FIREWORKS,
    269   BESTSHOT_SPORTS,
    270   BESTSHOT_PARTY,
    271   BESTSHOT_CANDLELIGHT,
    272   BESTSHOT_ASD,
    273   BESTSHOT_BACKLIGHT,
    274   BESTSHOT_FLOWERS,
    275   BESTSHOT_AR,
    276   BESTSHOT_HDR,
    277   BESTSHOT_MAX
    278 }Bestshot_modes;
    279 
    280 typedef enum {
    281   SPL_EFFECT_OFF,
    282   SPL_EFFECT_MONO,
    283   SPL_EFFECT_NEGATIVE,
    284   SPL_EFFECT_SOLARIZE,
    285   SPL_EFFECT_SEPIA,
    286   SPL_EFFECT_POSTERIZE,
    287   SPL_EFFECT_WHITEBOARD,
    288   SPL_EFFECT_BLACKBOARD,
    289   SPL_EFFECT_AQUA,
    290   SPL_EFFECT_EMBOSS,
    291   SPL_EFFECT_SKETCH,
    292   SPL_EFFECT_NEON,
    293   SPL_EFFECT_BEAUTY,
    294   SPL_EFFECT_MAX
    295 } spl_effect_modes;
    296 
    297 typedef enum {
    298   ANTIBANDING_OFF,
    299   ANTIBANDING_60HZ,
    300   ANTIBANDING_50HZ,
    301   ANTIBANDING_AUTO,
    302   ANTIBANDING_MAX,
    303 }antibanding_types;
    304 
    305 typedef enum {
    306   MODE_NO_FLIP,
    307   MODE_FLIP_H,
    308   MODE_FLIP_V,
    309   MODE_FLIP_V_H,
    310   MODE_FLIP_MAX,
    311 }flipmodes_types;
    312 
    313 typedef enum {
    314     FLASH_MODE_OFF,
    315     FLASH_MODE_AUTO,
    316     FLASH_MODE_ON,
    317     FLASH_MODE_TORCH,
    318     FLASH_MODE_MAX,
    319 }Flash_modes;
    320 
    321 typedef enum {
    322   WB_OFF,
    323   WB_AUTO,
    324   WB_INCANDESCENT,
    325   WB_FLUORESCENT,
    326   WB_WARM_FLUORESCENT,
    327   WB_DAYLIGHT,
    328   WB_CLOUDY_DAYLIGHT,
    329   WB_TWILIGHT,
    330   WB_SHADE,
    331   WB_MANUAL,
    332   WB_MAX
    333 } White_Balance_modes;
    334 
    335 typedef enum {
    336   MANUAL_WB_CCT,
    337   MANUAL_WB_GAIN,
    338   MANUAL_WB_MAX
    339 }Manual_wb_modes;
    340 
    341 typedef enum
    342 {
    343   MENU_ID_MAIN,
    344   MENU_ID_WHITEBALANCECHANGE,
    345   MENU_ID_EXPMETERINGCHANGE,
    346   MENU_ID_GET_CTRL_VALUE,
    347   MENU_ID_TOGGLEAFR,
    348   MENU_ID_ISOCHANGE,
    349   MENU_ID_BRIGHTNESSCHANGE,
    350   MENU_ID_CONTRASTCHANGE,
    351   MENU_ID_EVCHANGE,
    352   MENU_ID_SATURATIONCHANGE,
    353   MENU_ID_ZOOMCHANGE,
    354   MENU_ID_SHARPNESSCHANGE,
    355   MENU_ID_BESTSHOT,
    356   MENU_ID_FLASHMODE,
    357   MENU_ID_SENSORS,
    358   MENU_ID_SWITCH_RES,
    359   MENU_ID_SPECIAL_EFFECTS,
    360   MENU_ID_WHITEBALANCE_MANUAL,
    361   MENU_ID_ANTI_BANDING,
    362   MENU_ID_FLIP_MODE,
    363   MENU_ID_INVALID,
    364 } menu_id_change_t;
    365 
    366 typedef enum
    367 {
    368   DECREASE_ZOOM,
    369   INCREASE_ZOOM,
    370   INCREASE_STEP_ZOOM,
    371   DECREASE_STEP_ZOOM,
    372 } Camera_Zoom;
    373 
    374 typedef enum
    375 {
    376   INC_CONTRAST,
    377   DEC_CONTRAST,
    378 } Camera_Contrast_changes;
    379 
    380 typedef enum
    381 {
    382   INC_BRIGHTNESS,
    383   DEC_BRIGHTNESS,
    384 } Camera_Brightness_changes;
    385 
    386 typedef enum
    387 {
    388   INCREASE_EV,
    389   DECREASE_EV,
    390 } Camera_EV_changes;
    391 
    392 typedef enum {
    393   INC_SATURATION,
    394   DEC_SATURATION,
    395 } Camera_Saturation_changes;
    396 
    397 typedef enum
    398 {
    399   INC_ISO,
    400   DEC_ISO,
    401 } Camera_ISO_changes;
    402 
    403 typedef enum
    404 {
    405   INC_SHARPNESS,
    406   DEC_SHARPNESS,
    407 } Camera_Sharpness_changes;
    408 
    409 typedef enum {
    410   ZOOM_IN,
    411   ZOOM_OUT,
    412 } Zoom_direction;
    413 
    414 typedef struct{
    415     Camera_main_menu_t main_menu;
    416     char * menu_name;
    417 } CAMERA_MAIN_MENU_TBL_T;
    418 
    419 typedef struct{
    420     char * menu_name;
    421     int present;
    422 } CAMERA_SENSOR_MENU_TLB_T;
    423 
    424 typedef struct{
    425     Camera_Resolution cs_id;
    426     uint16_t width;
    427     uint16_t  height;
    428     char * name;
    429     char * str_name;
    430 } PREVIEW_DIMENSION_TBL_T;
    431 
    432 typedef struct {
    433   White_Balance_modes wb_id;
    434   char * wb_name;
    435 } WHITE_BALANCE_TBL_T;
    436 
    437 typedef struct {
    438   Manual_wb_modes wb_id;
    439   char * wb_name;
    440 } MN_WHITE_BALANCE_TBL_T;
    441 
    442 typedef struct {
    443   Get_Ctrl_modes get_ctrl_id;
    444   char * get_ctrl_name;
    445 } GET_CTRL_TBL_T;
    446 
    447 typedef struct{
    448   Exp_Metering_modes exp_metering_id;
    449   char * exp_metering_name;
    450 } EXP_METERING_TBL_T;
    451 
    452 typedef struct {
    453   Bestshot_modes bs_id;
    454   char *name;
    455 } BESTSHOT_MODE_TBT_T;
    456 
    457 typedef struct {
    458   spl_effect_modes sp_id;
    459   char *name;
    460 } SPECIAL_EFFECT_MODE_TBT_T;
    461 
    462 typedef struct {
    463   antibanding_types sp_id;
    464   char *name;
    465 } ANTI_BANDING_TBT_T;
    466 
    467 typedef struct {
    468   flipmodes_types sp_id;
    469   char *name;
    470 }FLIP_MODES_TBT_T;
    471 
    472 typedef struct {
    473   Flash_modes bs_id;
    474   char *name;
    475 } FLASH_MODE_TBL_T;
    476 
    477 typedef struct {
    478   ISO_modes iso_modes;
    479   char *iso_modes_name;
    480 } ISO_TBL_T;
    481 
    482 typedef struct {
    483   Zoom_direction zoom_direction;
    484   char * zoom_direction_name;
    485 } ZOOM_TBL_T;
    486 
    487 typedef struct {
    488   Camera_Sharpness_changes sharpness_change;
    489   char *sharpness_change_name;
    490 } SHARPNESS_TBL_T;
    491 
    492 typedef struct {
    493   Camera_Brightness_changes bc_id;
    494   char * brightness_name;
    495 } CAMERA_BRIGHTNESS_TBL_T;
    496 
    497 typedef struct {
    498   Camera_Contrast_changes cc_id;
    499   char * contrast_name;
    500 } CAMERA_CONTRST_TBL_T;
    501 
    502 typedef struct {
    503   Camera_EV_changes ec_id;
    504   char * EV_name;
    505 } CAMERA_EV_TBL_T;
    506 
    507 typedef struct {
    508   Camera_Saturation_changes sc_id;
    509   char * saturation_name;
    510 } CAMERA_SATURATION_TBL_T;
    511 
    512 typedef struct {
    513   Camera_Sharpness_changes bc_id;
    514   char * sharpness_name;
    515 } CAMERA_SHARPNESS_TBL_T;
    516 
    517 #endif /* __MM_QCAMERA_MAIN_MENU_H__ */
    518