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