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