blob: 1b9eb4e10ca5299adc080db0103810e46536b44f [file] [log] [blame]
/* Copyright (c) 2013, 2016, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __MM_QCAMERA_MAIN_MENU_H__
#define __MM_QCAMERA_MAIN_MENU_H__
// Camera dependencies
#include "mm_camera_interface.h"
#include "mm_jpeg_interface.h"
#define VIDEO_BUFFER_SIZE (PREVIEW_WIDTH * PREVIEW_HEIGHT * 3/2)
#define THUMBNAIL_BUFFER_SIZE (THUMBNAIL_WIDTH * THUMBNAIL_HEIGHT * 3/2)
#define SNAPSHOT_BUFFER_SIZE (PICTURE_WIDTH * PICTURE_HEIGHT * 3/2)
/*===========================================================================
* Macro
*===========================================================================*/
#define PREVIEW_FRAMES_NUM 5
#define VIDEO_FRAMES_NUM 5
#define THUMBNAIL_FRAMES_NUM 1
#define SNAPSHOT_FRAMES_NUM 1
#define MAX_NUM_FORMAT 32
typedef enum
{
START_PREVIEW,
STOP_PREVIEW,
SET_WHITE_BALANCE,
SET_TINTLESS_ENABLE,
SET_TINTLESS_DISABLE,
SET_EXP_METERING,
GET_CTRL_VALUE,
TOGGLE_AFR,
SET_ISO,
BRIGHTNESS_GOTO_SUBMENU,
CONTRAST_GOTO_SUBMENU,
EV_GOTO_SUBMENU,
SATURATION_GOTO_SUBMENU,
SET_ZOOM,
SET_SHARPNESS,
TAKE_JPEG_SNAPSHOT,
START_RECORDING,
STOP_RECORDING,
BEST_SHOT,
LIVE_SHOT,
FLASH_MODES,
TOGGLE_ZSL,
TAKE_RAW_SNAPSHOT,
SWITCH_SNAP_RESOLUTION,
TOGGLE_WNR,
EXIT
} Camera_main_menu_t;
typedef enum
{
ACTION_NO_ACTION,
ACTION_START_PREVIEW,
ACTION_STOP_PREVIEW,
ACTION_SET_WHITE_BALANCE,
ACTION_SET_TINTLESS_ENABLE,
ACTION_SET_TINTLESS_DISABLE,
ACTION_SET_EXP_METERING,
ACTION_GET_CTRL_VALUE,
ACTION_TOGGLE_AFR,
ACTION_SET_ISO,
ACTION_BRIGHTNESS_INCREASE,
ACTION_BRIGHTNESS_DECREASE,
ACTION_CONTRAST_INCREASE,
ACTION_CONTRAST_DECREASE,
ACTION_EV_INCREASE,
ACTION_EV_DECREASE,
ACTION_SATURATION_INCREASE,
ACTION_SATURATION_DECREASE,
ACTION_SET_ZOOM,
ACTION_SHARPNESS_INCREASE,
ACTION_SHARPNESS_DECREASE,
ACTION_TAKE_JPEG_SNAPSHOT,
ACTION_START_RECORDING,
ACTION_STOP_RECORDING,
ACTION_SET_BESTSHOT_MODE,
ACTION_TAKE_LIVE_SNAPSHOT,
ACTION_SET_FLASH_MODE,
ACTION_SWITCH_CAMERA,
ACTION_TOGGLE_ZSL,
ACTION_TAKE_RAW_SNAPSHOT,
ACTION_SWITCH_RESOLUTION,
ACTION_TOGGLE_WNR,
ACTION_EXIT
} camera_action_t;
#define INVALID_KEY_PRESS 0
#define BASE_OFFSET ('Z' - 'A' + 1)
#define BASE_OFFSET_NUM ('Z' - 'A' + 2)
#define PAD_TO_WORD(a) (((a)+3)&~3)
#define SQCIF_WIDTH 128
#define SQCIF_HEIGHT 96
#define QCIF_WIDTH 176
#define QCIF_HEIGHT 144
#define QVGA_WIDTH 320
#define QVGA_HEIGHT 240
#define HD_THUMBNAIL_WIDTH 256
#define HD_THUMBNAIL_HEIGHT 144
#define CIF_WIDTH 352
#define CIF_HEIGHT 288
#define VGA_WIDTH 640
#define VGA_HEIGHT 480
#define WVGA_WIDTH 800
#define WVGA_HEIGHT 480
#define WVGA_PLUS_WIDTH 960
#define WVGA_PLUS_HEIGHT 720
#define MP1_WIDTH 1280
#define MP1_HEIGHT 960
#define MP2_WIDTH 1600
#define MP2_HEIGHT 1200
#define MP3_WIDTH 2048
#define MP3_HEIGHT 1536
#define MP5_WIDTH 2592
#define MP5_HEIGHT 1944
#define MP8_WIDTH 3264
#define MP8_HEIGHT 2448
#define MP12_WIDTH 4000
#define MP12_HEIGHT 3000
#define SVGA_WIDTH 800
#define SVGA_HEIGHT 600
#define XGA_WIDTH 1024
#define XGA_HEIGHT 768
#define HD720_WIDTH 1280
#define HD720_HEIGHT 720
#define HD720_PLUS_WIDTH 1440
#define HD720_PLUS_HEIGHT 1080
#define WXGA_WIDTH 1280
#define WXGA_HEIGHT 768
#define HD1080_WIDTH 1920
#define HD1080_HEIGHT 1080
#define ONEMP_WIDTH 1280
#define SXGA_WIDTH 1280
#define UXGA_WIDTH 1600
#define QXGA_WIDTH 2048
#define FIVEMP_WIDTH 2560
#define ONEMP_HEIGHT 960
#define SXGA_HEIGHT 1024
#define UXGA_HEIGHT 1200
#define QXGA_HEIGHT 1536
#define FIVEMP_HEIGHT 1920
typedef enum
{
RESOLUTION_MIN,
QCIF = RESOLUTION_MIN,
QVGA,
VGA,
WVGA,
WVGA_PLUS ,
HD720,
HD720_PLUS,
HD1080,
RESOLUTION_PREVIEW_VIDEO_MAX = HD1080,
WXGA,
MP1,
MP2,
MP3,
MP5,
MP8,
MP12,
RESOLUTION_MAX = MP12,
} Camera_Resolution;
typedef struct{
uint16_t width;
uint16_t height;
char * name;
char * str_name;
int supported;
} DIMENSION_TBL_T;
typedef enum {
WHITE_BALANCE_STATE,
WHITE_BALANCE_TEMPERATURE,
BRIGHTNESS_CTRL,
EV,
CONTRAST_CTRL,
SATURATION_CTRL,
SHARPNESS_CTRL
} Get_Ctrl_modes;
typedef enum {
AUTO_EXP_FRAME_AVG,
AUTO_EXP_CENTER_WEIGHTED,
AUTO_EXP_SPOT_METERING,
AUTO_EXP_SMART_METERING,
AUTO_EXP_USER_METERING,
AUTO_EXP_SPOT_METERING_ADV,
AUTO_EXP_CENTER_WEIGHTED_ADV,
AUTO_EXP_MAX
} Exp_Metering_modes;
typedef enum {
ISO_AUTO,
ISO_DEBLUR,
ISO_100,
ISO_200,
ISO_400,
ISO_800,
ISO_1600,
ISO_MAX
} ISO_modes;
typedef enum {
BESTSHOT_AUTO,
BESTSHOT_ACTION,
BESTSHOT_PORTRAIT,
BESTSHOT_LANDSCAPE,
BESTSHOT_NIGHT,
BESTSHOT_NIGHT_PORTRAIT,
BESTSHOT_THEATRE,
BESTSHOT_BEACH,
BESTSHOT_SNOW,
BESTSHOT_SUNSET,
BESTSHOT_ANTISHAKE,
BESTSHOT_FIREWORKS,
BESTSHOT_SPORTS,
BESTSHOT_PARTY,
BESTSHOT_CANDLELIGHT,
BESTSHOT_ASD,
BESTSHOT_BACKLIGHT,
BESTSHOT_FLOWERS,
BESTSHOT_AR,
BESTSHOT_HDR,
BESTSHOT_MAX
}Bestshot_modes;
typedef enum {
FLASH_MODE_OFF,
FLASH_MODE_AUTO,
FLASH_MODE_ON,
FLASH_MODE_TORCH,
FLASH_MODE_MAX,
}Flash_modes;
typedef enum {
WB_AUTO,
WB_INCANDESCENT,
WB_FLUORESCENT,
WB_WARM_FLUORESCENT,
WB_DAYLIGHT,
WB_CLOUDY_DAYLIGHT,
WB_TWILIGHT,
WB_SHADE,
WB_MAX
} White_Balance_modes;
typedef enum
{
MENU_ID_MAIN,
MENU_ID_WHITEBALANCECHANGE,
MENU_ID_EXPMETERINGCHANGE,
MENU_ID_GET_CTRL_VALUE,
MENU_ID_TOGGLEAFR,
MENU_ID_ISOCHANGE,
MENU_ID_BRIGHTNESSCHANGE,
MENU_ID_CONTRASTCHANGE,
MENU_ID_EVCHANGE,
MENU_ID_SATURATIONCHANGE,
MENU_ID_ZOOMCHANGE,
MENU_ID_SHARPNESSCHANGE,
MENU_ID_BESTSHOT,
MENU_ID_FLASHMODE,
MENU_ID_SENSORS,
MENU_ID_SWITCH_RES,
MENU_ID_INVALID,
} menu_id_change_t;
typedef enum
{
DECREASE_ZOOM,
INCREASE_ZOOM,
INCREASE_STEP_ZOOM,
DECREASE_STEP_ZOOM,
} Camera_Zoom;
typedef enum
{
INC_CONTRAST,
DEC_CONTRAST,
} Camera_Contrast_changes;
typedef enum
{
INC_BRIGHTNESS,
DEC_BRIGHTNESS,
} Camera_Brightness_changes;
typedef enum
{
INCREASE_EV,
DECREASE_EV,
} Camera_EV_changes;
typedef enum {
INC_SATURATION,
DEC_SATURATION,
} Camera_Saturation_changes;
typedef enum
{
INC_ISO,
DEC_ISO,
} Camera_ISO_changes;
typedef enum
{
INC_SHARPNESS,
DEC_SHARPNESS,
} Camera_Sharpness_changes;
typedef enum {
ZOOM_IN,
ZOOM_OUT,
} Zoom_direction;
typedef struct{
Camera_main_menu_t main_menu;
char * menu_name;
} CAMERA_MAIN_MENU_TBL_T;
typedef struct{
char * menu_name;
int present;
} CAMERA_SENSOR_MENU_TLB_T;
typedef struct{
Camera_Resolution cs_id;
uint16_t width;
uint16_t height;
char * name;
char * str_name;
} PREVIEW_DIMENSION_TBL_T;
typedef struct {
White_Balance_modes wb_id;
char * wb_name;
} WHITE_BALANCE_TBL_T;
typedef struct {
Get_Ctrl_modes get_ctrl_id;
char * get_ctrl_name;
} GET_CTRL_TBL_T;
typedef struct{
Exp_Metering_modes exp_metering_id;
char * exp_metering_name;
} EXP_METERING_TBL_T;
typedef struct {
Bestshot_modes bs_id;
char *name;
} BESTSHOT_MODE_TBT_T;
typedef struct {
Flash_modes bs_id;
char *name;
} FLASH_MODE_TBL_T;
typedef struct {
ISO_modes iso_modes;
char *iso_modes_name;
} ISO_TBL_T;
typedef struct {
Zoom_direction zoom_direction;
char * zoom_direction_name;
} ZOOM_TBL_T;
typedef struct {
Camera_Sharpness_changes sharpness_change;
char *sharpness_change_name;
} SHARPNESS_TBL_T;
typedef struct {
Camera_Brightness_changes bc_id;
char * brightness_name;
} CAMERA_BRIGHTNESS_TBL_T;
typedef struct {
Camera_Contrast_changes cc_id;
char * contrast_name;
} CAMERA_CONTRST_TBL_T;
typedef struct {
Camera_EV_changes ec_id;
char * EV_name;
} CAMERA_EV_TBL_T;
typedef struct {
Camera_Saturation_changes sc_id;
char * saturation_name;
} CAMERA_SATURATION_TBL_T;
typedef struct {
Camera_Sharpness_changes bc_id;
char * sharpness_name;
} CAMERA_SHARPNESS_TBL_T;
#endif /* __MM_QCAMERA_MAIN_MENU_H__ */