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