Home | History | Annotate | Download | only in inc
      1 /*
      2 Copyright (c) 2011-2012, The Linux Foundation. All rights reserved.
      3 
      4 Redistribution and use in source and binary forms, with or without
      5 modification, are permitted provided that the following conditions are
      6 met:
      7     * Redistributions of source code must retain the above copyright
      8       notice, this list of conditions and the following disclaimer.
      9     * Redistributions in binary form must reproduce the above
     10       copyright notice, this list of conditions and the following
     11       disclaimer in the documentation and/or other materials provided
     12       with the distribution.
     13     * Neither the name of The Linux Foundation nor the names of its
     14       contributors may be used to endorse or promote products derived
     15       from this software without specific prior written permission.
     16 
     17 THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
     18 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     19 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
     20 ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
     21 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     22 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
     24 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     25 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
     26 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
     27 IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     28 */
     29 
     30 #ifndef __MM_QCAMERA_MAIN_MENU_H__
     31 #define __MM_QCAMERA_MAIN_MENU_H__
     32 
     33 #include "mm_camera_interface.h"
     34 
     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    4
     44 #define VIDEO_FRAMES_NUM      4
     45 #define THUMBNAIL_FRAMES_NUM  1
     46 #define SNAPSHOT_FRAMES_NUM   1
     47 #define MAX_NUM_FORMAT        32
     48 
     49 typedef enum
     50 {
     51   STOP_CAMERA = 1,
     52   PREVIEW_VIDEO_RESOLUTION = 2,
     53   TAKE_YUV_SNAPSHOT = 3,
     54   TAKE_RAW_SNAPSHOT = 4,
     55   TAKE_ZSL_SNAPSHOT = 5,
     56   //TAKE_LIVE_SNAPSHOT = 17,
     57   START_RECORDING = 6,
     58   START_RDI = 7,
     59   STOP_RDI = 8,
     60   SWITCH_CAMERA = 9,
     61   //STOP_RECORDING = 7,
     62   //SET_WHITE_BALANCE = 3,
     63   //SET_EXP_METERING = 4,
     64   //GET_CTRL_VALUE = 5,
     65   //TOGGLE_AFR = 6,
     66   //SET_ISO = 7,
     67   //BRIGHTNESS_GOTO_SUBMENU = 8,
     68   //CONTRAST_GOTO_SUBMENU = 9,
     69   //EV_GOTO_SUBMENU = 10,
     70   //SATURATION_GOTO_SUBMENU = 11,
     71   //SET_ZOOM = 12,
     72   //SET_SHARPNESS = 13,
     73 } Camera_main_menu_t;
     74 
     75 typedef enum
     76 {
     77   ACTION_NO_ACTION,
     78   ACTION_STOP_CAMERA,
     79   ACTION_PREVIEW_VIDEO_RESOLUTION,
     80   ACTION_TAKE_YUV_SNAPSHOT,
     81   ACTION_TAKE_RAW_SNAPSHOT,
     82   ACTION_TAKE_ZSL_SNAPSHOT,
     83   ACTION_TAKE_LIVE_SNAPSHOT,
     84   ACTION_START_RECORDING,
     85   ACTION_STOP_RECORDING,
     86   ACTION_START_RDI,
     87   ACTION_STOP_RDI,
     88   ACTION_SWITCH_CAMERA,
     89   ACTION_SET_WHITE_BALANCE,
     90   ACTION_SET_EXP_METERING,
     91   ACTION_GET_CTRL_VALUE,
     92   ACTION_TOGGLE_AFR,
     93   ACTION_SET_ISO,
     94   ACTION_BRIGHTNESS_INCREASE,
     95   ACTION_BRIGHTNESS_DECREASE,
     96   ACTION_CONTRAST_INCREASE,
     97   ACTION_CONTRAST_DECREASE,
     98   ACTION_EV_INCREASE,
     99   ACTION_EV_DECREASE,
    100   ACTION_SATURATION_INCREASE,
    101   ACTION_SATURATION_DECREASE,
    102   ACTION_SET_ZOOM,
    103   ACTION_SHARPNESS_INCREASE,
    104   ACTION_SHARPNESS_DECREASE,
    105 } camera_action_t;
    106 
    107 #define INVALID_KEY_PRESS 0
    108 #define BASE_OFFSET  ('Z' - 'A' + 1)
    109 #define BASE_OFFSET_NUM  ('Z' - 'A' + 2)
    110 #define PAD_TO_WORD(a)  (((a)+3)&~3)
    111 
    112 
    113 #define SQCIF_WIDTH     128
    114 #define SQCIF_HEIGHT     96
    115 #define QCIF_WIDTH      176
    116 #define QCIF_HEIGHT     144
    117 #define QVGA_WIDTH      320
    118 #define QVGA_HEIGHT     240
    119 #define HD_THUMBNAIL_WIDTH      256
    120 #define HD_THUMBNAIL_HEIGHT     144
    121 #define CIF_WIDTH       352
    122 #define CIF_HEIGHT      288
    123 #define VGA_WIDTH       640
    124 #define VGA_HEIGHT      480
    125 #define WVGA_WIDTH      800
    126 #define WVGA_HEIGHT     480
    127 
    128 #define MP1_WIDTH      1280
    129 #define MP1_HEIGHT      960
    130 #define MP2_WIDTH      1600
    131 #define MP2_HEIGHT     1200
    132 #define MP3_WIDTH      2048
    133 #define MP3_HEIGHT     1536
    134 #define MP5_WIDTH      2592
    135 #define MP5_HEIGHT     1944
    136 
    137 #define SVGA_WIDTH      800
    138 #define SVGA_HEIGHT     600
    139 #define XGA_WIDTH      1024
    140 #define XGA_HEIGHT      768
    141 #define HD720_WIDTH    1280
    142 #define HD720_HEIGHT    720
    143 #define WXGA_WIDTH     1280
    144 #define WXGA_HEIGHT     768
    145 #define HD1080_WIDTH   1920
    146 #define HD1080_HEIGHT  1080
    147 
    148 typedef enum
    149 {
    150   RESOLUTION_MIN         = 1,
    151   SQCIF                  = RESOLUTION_MIN,
    152   QCIF                   = 2,
    153   QVGA                   = 3,
    154   CIF                    = 4,
    155   VGA                    = 5,
    156   WVGA                   = 6,
    157   SVGA                   = 7,
    158   XGA                    = 8,
    159   HD720                  = 9,
    160   RESOLUTION_PREVIEW_VIDEO_MAX = HD720,
    161   WXGA                   = 10,
    162   MP1                    = 11,
    163   MP2                    = 12,
    164   HD1080                 = 13,
    165   MP3                    = 14,
    166   MP5                    = 15,
    167   RESOLUTION_MAX         = MP5,
    168 } Camera_Resolution;
    169 
    170 
    171 typedef enum {
    172     WHITE_BALANCE_STATE = 1,
    173     WHITE_BALANCE_TEMPERATURE = 2,
    174     BRIGHTNESS_CTRL = 3,
    175     EV = 4,
    176     CONTRAST_CTRL = 5,
    177     SATURATION_CTRL = 6,
    178     SHARPNESS_CTRL = 7,
    179 } Get_Ctrl_modes;
    180 
    181 typedef enum {
    182   WHITE_BALANCE_AUTO         = 1,
    183   WHITE_BALANCE_OFF          = 2,
    184   WHITE_BALANCE_DAYLIGHT     = 3,
    185   WHITE_BALANCE_INCANDESCENT = 4,
    186   WHITE_BALANCE_FLUORESCENT  = 5,
    187 } White_Balance_modes;
    188 
    189 typedef enum {
    190 	EXP_METERING_FRAME_AVERAGE   = 1,
    191 	EXP_METERING_CENTER_WEIGHTED = 2,
    192   EXP_METERING_SPOT_METERING   = 3,
    193 } Exp_Metering_modes;
    194 
    195 typedef enum {
    196   ISO_AUTO = 1,
    197   ISO_DEBLUR = 2,
    198   ISO_100 = 3,
    199   ISO_200 = 4,
    200   ISO_400 = 5,
    201   ISO_800 = 6,
    202   ISO_1600 = 7,
    203 } ISO_modes;
    204 
    205 typedef enum
    206 {
    207   MENU_ID_MAIN,
    208   MENU_ID_PREVIEWVIDEORESOLUTIONCHANGE,
    209   MENU_ID_WHITEBALANCECHANGE,
    210   MENU_ID_EXPMETERINGCHANGE,
    211   MENU_ID_GET_CTRL_VALUE,
    212   MENU_ID_TOGGLEAFR,
    213   MENU_ID_ISOCHANGE,
    214   MENU_ID_BRIGHTNESSCHANGE,
    215   MENU_ID_CONTRASTCHANGE,
    216   MENU_ID_EVCHANGE,
    217   MENU_ID_SATURATIONCHANGE,
    218   MENU_ID_ZOOMCHANGE,
    219   MENU_ID_SHARPNESSCHANGE,
    220   MENU_ID_SWITCHCAMERA,
    221   MENU_ID_RECORD,
    222   MENU_ID_INVALID,
    223 } menu_id_change_t;
    224 
    225 typedef enum
    226 {
    227   INCREASE_ZOOM      = 1,
    228   DECREASE_ZOOM      = 2,
    229   INCREASE_STEP_ZOOM = 3,
    230   DECREASE_STEP_ZOOM = 4,
    231 } Camera_Zoom;
    232 
    233 typedef enum
    234 {
    235   INC_CONTRAST = 1,
    236   DEC_CONTRAST = 2,
    237 } Camera_Contrast_changes;
    238 
    239 typedef enum
    240 {
    241   INC_BRIGHTNESS = 1,
    242   DEC_BRIGHTNESS = 2,
    243 } Camera_Brightness_changes;
    244 
    245 typedef enum
    246 {
    247   INCREASE_EV = 1,
    248   DECREASE_EV = 2,
    249 } Camera_EV_changes;
    250 
    251 typedef enum {
    252   INC_SATURATION = 1,
    253   DEC_SATURATION = 2,
    254 } Camera_Saturation_changes;
    255 
    256 typedef enum
    257 {
    258   INC_ISO = 1,
    259   DEC_ISO = 2,
    260 } Camera_ISO_changes;
    261 
    262 typedef enum
    263 {
    264   INC_SHARPNESS = 1,
    265   DEC_SHARPNESS = 2,
    266 } Camera_Sharpness_changes;
    267 
    268 typedef enum {
    269   ZOOM_IN = 1,
    270   ZOOM_OUT = 2,
    271 } Zoom_direction;
    272 
    273 typedef enum
    274 {
    275   LIVE_SNAPSHOT_MENU = 1,
    276   STOP_RECORDING_MENU = 2,
    277 } Record_changes;
    278 
    279 typedef struct{
    280     Camera_main_menu_t main_menu;
    281     char * menu_name;
    282 } CAMERA_MAIN_MENU_TBL_T;
    283 
    284 typedef struct{
    285     Camera_Resolution cs_id;
    286     uint16_t width;
    287     uint16_t  height;
    288     char * name;
    289     char * str_name;
    290 } PREVIEW_DIMENSION_TBL_T;
    291 
    292 typedef struct {
    293   White_Balance_modes wb_id;
    294   char * wb_name;
    295 } WHITE_BALANCE_TBL_T;
    296 
    297 typedef struct {
    298   int cam_id;
    299   char * cam_name;
    300 } CAMERA_TBL_T;
    301 
    302 typedef struct {
    303   int act_id;
    304   char * act_name;
    305 } RECORD_TBL_T;
    306 
    307 typedef struct {
    308   Get_Ctrl_modes get_ctrl_id;
    309   char * get_ctrl_name;
    310 } GET_CTRL_TBL_T;
    311 
    312 typedef struct{
    313   Exp_Metering_modes exp_metering_id;
    314   char * exp_metering_name;
    315 } EXP_METERING_TBL_T;
    316 
    317 typedef struct {
    318   ISO_modes iso_modes;
    319   char *iso_modes_name;
    320 } ISO_TBL_T;
    321 
    322 typedef struct {
    323   Zoom_direction zoom_direction;
    324   char * zoom_direction_name;
    325 } ZOOM_TBL_T;
    326 
    327 typedef struct {
    328   Camera_Sharpness_changes sharpness_change;
    329   char *sharpness_change_name;
    330 } SHARPNESS_TBL_T;
    331 
    332 typedef struct {
    333   Camera_Brightness_changes bc_id;
    334   char * brightness_name;
    335 } CAMERA_BRIGHTNESS_TBL_T;
    336 
    337 typedef struct {
    338   Camera_Contrast_changes cc_id;
    339   char * contrast_name;
    340 } CAMERA_CONTRST_TBL_T;
    341 
    342 typedef struct {
    343   Camera_EV_changes ec_id;
    344   char * EV_name;
    345 } CAMERA_EV_TBL_T;
    346 
    347 typedef struct {
    348   Camera_Saturation_changes sc_id;
    349   char * saturation_name;
    350 } CAMERA_SATURATION_TBL_T;
    351 
    352 typedef struct {
    353   Camera_Sharpness_changes bc_id;
    354   char * sharpness_name;
    355 } CAMERA_SHARPNESS_TBL_T;
    356 
    357 
    358 typedef struct {
    359   void    *frameThread;
    360   int8_t (*setDimension)(int , void *);
    361   int8_t (*setDefaultParams)(int );
    362   int8_t (*registerPreviewBuf)(int , void *, uint32_t, struct msm_frame *, int8_t );
    363   int8_t (*unregisterPreviewBuf)(int , void *, uint32_t, int , unsigned char *);
    364   int8_t (*registerVideoBuf)(int , void *, uint32_t, struct msm_frame *, int8_t );
    365   int8_t (*unregisterVideoBuf)(int , void *, uint32_t, int , unsigned char *);
    366   int8_t (*startPreview)(int );
    367   int8_t (*stopPreview)(int );
    368   int8_t (*startVideo)(int );
    369   int8_t (*stopVideo)(int );
    370   int8_t (*startRecording)(int );
    371   int8_t (*stopRecording)(int );
    372   int8_t (*startSnapshot)(int );
    373   int8_t (*startRawSnapshot)(int );
    374 
    375   int8_t (*registerSnapshotBuf)(int , void *, int , int ,
    376     unsigned char *, unsigned char *);
    377 
    378   int8_t (*registerRawSnapshotBuf)(int , void *, int , unsigned char *);
    379 
    380   int8_t (*unregisterSnapshotBuf)(int , void *, int , int ,
    381     unsigned char *, unsigned char *);
    382 
    383   int8_t (*unregisterRawSnapshotBuf)(int , void *, int , unsigned char *);
    384   int8_t (*getPicture)(int fd, struct crop_info *cropInfo );
    385   int8_t (*stopSnapshot)(int );
    386   int8_t (*jpegEncode)(const char *path, void *, int, int , unsigned char *,
    387     unsigned char *, void *, camera_encoding_rotate_t rotate);
    388   int8_t (*setZoom)(int , void *);
    389   int8_t (*getMaxZoom)(int fd, void *pZm);
    390   int8_t (*setSpecialEffect)(int, int effect);
    391   int8_t (*setBrightness)(int, int);
    392   int8_t (*setContrast)(int, int);
    393   int8_t (*setSaturation)(int, int);
    394   int8_t (*setEV)(int , int );
    395   int8_t (*setAntiBanding)(int , int32_t antibanding);
    396   int8_t (*setWhiteBalance)(int , int32_t );
    397   int8_t (*setAecMode)(int , camera_auto_exposure_mode_type );
    398   int8_t (*setIso)(int , camera_iso_mode_type );
    399   int8_t (*setSharpness)(int , int );
    400   int8_t (*setAutoFocus)(int , isp3a_af_mode_t, cam_af_ctrl_t *);
    401   int8_t (*sethjr) (int fd, int8_t hjr_status);
    402   int8_t (*setLensShading) (int fd, int8_t rolloff_status);
    403   int8_t (*setLedMode) (int fd, led_mode_t led_mode);
    404   int8_t (*getSharpness_AF) (int fd, int32_t *sharpness);
    405   int8_t (*setMotionIso) (int fd, motion_iso_t motion_iso);
    406   int8_t (*setHue) (int fd, int32_t hue);
    407   int8_t (*cancelAF) (int fd);
    408   int8_t (*getAfStep) (int fd, int32_t *afStep);
    409   int8_t (*setAfStep) (int fd, int32_t afStep);
    410   int8_t (*enableAFD) (int fd);
    411   int8_t (*prepareSnapshot) (int fd);
    412   int8_t (*setFpsMode) (int fd, fps_mode_t fps_mode);
    413   int8_t (*setFps) (int fd, uint16_t fps);
    414   int8_t (*setAFFocusRect) (int fd, cam_af_focusrect_t af_focus_rect);
    415 } interface_ctrl_t;
    416 
    417 int8_t native_interface_init(interface_ctrl_t *intrfcCtrl, int *camfd);
    418 int8_t v4l2_interface_init(interface_ctrl_t *intrfcCtrl, int *videofd);
    419 
    420 int set_zoom (int zoom_action_param);
    421 int set_hjr (void);
    422 int LensShading (void);
    423 int decrease_contrast (void);
    424 int increase_contrast (void);
    425 int decrease_saturation (void);
    426 int increase_saturation (void);
    427 int decrease_brightness (void);
    428 int increase_brightness (void);
    429 int decrease_EV (void);
    430 int increase_EV (void);
    431 int set_iso (int iso_action_param);
    432 int decrease_sharpness (void);
    433 int increase_sharpness (void);
    434 int SpecialEffect (void);
    435 int set_exp_metering (int exp_metering_action_param);
    436 int LED_mode_change (void);
    437 int set_sharpness_AF (void);
    438 int set_auto_focus (void);
    439 int set_antibanding (void);
    440 int set_whitebalance (int wb_action_param);
    441 int print_current_menu ();
    442 int set_MotionIso (void);
    443 int start_preview (void);
    444 int stop_preview (void);
    445 static int start_video (void);
    446 static int stop_video (void);
    447 int start_recording (void);
    448 int stop_recording (void);
    449 int snapshot_resolution (int);
    450 int preview_video_resolution (int);
    451 int system_init(void);
    452 int system_destroy(void);
    453 int toggle_hue(void);
    454 int cancel_af(void);
    455 int get_af_step();
    456 int set_af_step();
    457 int enable_afd();
    458 int prepare_snapshot();
    459 int set_fps_mode(void);
    460 int get_ctrl_value (int ctrl_value_mode_param);
    461 int toggle_afr ();
    462 int take_yuv_snapshot(int cam_id);
    463 int take_raw_snapshot();
    464 #endif /* __MM_QCAMERA_MAIN_MENU_H__ */
    465