blob: f4d233b5e2c19b99b6d8c021af282de5868c0c8f [file] [log] [blame]
/*
Copyright (c) 2011-2012, 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__
#include "mm_camera_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 4
#define VIDEO_FRAMES_NUM 4
#define THUMBNAIL_FRAMES_NUM 1
#define SNAPSHOT_FRAMES_NUM 1
#define MAX_NUM_FORMAT 32
typedef enum
{
STOP_CAMERA = 1,
PREVIEW_VIDEO_RESOLUTION = 2,
TAKE_YUV_SNAPSHOT = 3,
TAKE_RAW_SNAPSHOT = 4,
TAKE_ZSL_SNAPSHOT = 5,
//TAKE_LIVE_SNAPSHOT = 17,
START_RECORDING = 6,
START_RDI = 7,
STOP_RDI = 8,
SWITCH_CAMERA = 9,
//STOP_RECORDING = 7,
//SET_WHITE_BALANCE = 3,
//SET_EXP_METERING = 4,
//GET_CTRL_VALUE = 5,
//TOGGLE_AFR = 6,
//SET_ISO = 7,
//BRIGHTNESS_GOTO_SUBMENU = 8,
//CONTRAST_GOTO_SUBMENU = 9,
//EV_GOTO_SUBMENU = 10,
//SATURATION_GOTO_SUBMENU = 11,
//SET_ZOOM = 12,
//SET_SHARPNESS = 13,
} Camera_main_menu_t;
typedef enum
{
ACTION_NO_ACTION,
ACTION_STOP_CAMERA,
ACTION_PREVIEW_VIDEO_RESOLUTION,
ACTION_TAKE_YUV_SNAPSHOT,
ACTION_TAKE_RAW_SNAPSHOT,
ACTION_TAKE_ZSL_SNAPSHOT,
ACTION_TAKE_LIVE_SNAPSHOT,
ACTION_START_RECORDING,
ACTION_STOP_RECORDING,
ACTION_START_RDI,
ACTION_STOP_RDI,
ACTION_SWITCH_CAMERA,
ACTION_SET_WHITE_BALANCE,
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,
} 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 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 SVGA_WIDTH 800
#define SVGA_HEIGHT 600
#define XGA_WIDTH 1024
#define XGA_HEIGHT 768
#define HD720_WIDTH 1280
#define HD720_HEIGHT 720
#define WXGA_WIDTH 1280
#define WXGA_HEIGHT 768
#define HD1080_WIDTH 1920
#define HD1080_HEIGHT 1080
typedef enum
{
RESOLUTION_MIN = 1,
SQCIF = RESOLUTION_MIN,
QCIF = 2,
QVGA = 3,
CIF = 4,
VGA = 5,
WVGA = 6,
SVGA = 7,
XGA = 8,
HD720 = 9,
RESOLUTION_PREVIEW_VIDEO_MAX = HD720,
WXGA = 10,
MP1 = 11,
MP2 = 12,
HD1080 = 13,
MP3 = 14,
MP5 = 15,
RESOLUTION_MAX = MP5,
} Camera_Resolution;
typedef enum {
WHITE_BALANCE_STATE = 1,
WHITE_BALANCE_TEMPERATURE = 2,
BRIGHTNESS_CTRL = 3,
EV = 4,
CONTRAST_CTRL = 5,
SATURATION_CTRL = 6,
SHARPNESS_CTRL = 7,
} Get_Ctrl_modes;
typedef enum {
WHITE_BALANCE_AUTO = 1,
WHITE_BALANCE_OFF = 2,
WHITE_BALANCE_DAYLIGHT = 3,
WHITE_BALANCE_INCANDESCENT = 4,
WHITE_BALANCE_FLUORESCENT = 5,
} White_Balance_modes;
typedef enum {
EXP_METERING_FRAME_AVERAGE = 1,
EXP_METERING_CENTER_WEIGHTED = 2,
EXP_METERING_SPOT_METERING = 3,
} Exp_Metering_modes;
typedef enum {
ISO_AUTO = 1,
ISO_DEBLUR = 2,
ISO_100 = 3,
ISO_200 = 4,
ISO_400 = 5,
ISO_800 = 6,
ISO_1600 = 7,
} ISO_modes;
typedef enum
{
MENU_ID_MAIN,
MENU_ID_PREVIEWVIDEORESOLUTIONCHANGE,
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_SWITCHCAMERA,
MENU_ID_RECORD,
MENU_ID_INVALID,
} menu_id_change_t;
typedef enum
{
INCREASE_ZOOM = 1,
DECREASE_ZOOM = 2,
INCREASE_STEP_ZOOM = 3,
DECREASE_STEP_ZOOM = 4,
} Camera_Zoom;
typedef enum
{
INC_CONTRAST = 1,
DEC_CONTRAST = 2,
} Camera_Contrast_changes;
typedef enum
{
INC_BRIGHTNESS = 1,
DEC_BRIGHTNESS = 2,
} Camera_Brightness_changes;
typedef enum
{
INCREASE_EV = 1,
DECREASE_EV = 2,
} Camera_EV_changes;
typedef enum {
INC_SATURATION = 1,
DEC_SATURATION = 2,
} Camera_Saturation_changes;
typedef enum
{
INC_ISO = 1,
DEC_ISO = 2,
} Camera_ISO_changes;
typedef enum
{
INC_SHARPNESS = 1,
DEC_SHARPNESS = 2,
} Camera_Sharpness_changes;
typedef enum {
ZOOM_IN = 1,
ZOOM_OUT = 2,
} Zoom_direction;
typedef enum
{
LIVE_SNAPSHOT_MENU = 1,
STOP_RECORDING_MENU = 2,
} Record_changes;
typedef struct{
Camera_main_menu_t main_menu;
char * menu_name;
} CAMERA_MAIN_MENU_TBL_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 {
int cam_id;
char * cam_name;
} CAMERA_TBL_T;
typedef struct {
int act_id;
char * act_name;
} RECORD_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 {
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;
typedef struct {
void *frameThread;
int8_t (*setDimension)(int , void *);
int8_t (*setDefaultParams)(int );
int8_t (*registerPreviewBuf)(int , void *, uint32_t, struct msm_frame *, int8_t );
int8_t (*unregisterPreviewBuf)(int , void *, uint32_t, int , unsigned char *);
int8_t (*registerVideoBuf)(int , void *, uint32_t, struct msm_frame *, int8_t );
int8_t (*unregisterVideoBuf)(int , void *, uint32_t, int , unsigned char *);
int8_t (*startPreview)(int );
int8_t (*stopPreview)(int );
int8_t (*startVideo)(int );
int8_t (*stopVideo)(int );
int8_t (*startRecording)(int );
int8_t (*stopRecording)(int );
int8_t (*startSnapshot)(int );
int8_t (*startRawSnapshot)(int );
int8_t (*registerSnapshotBuf)(int , void *, int , int ,
unsigned char *, unsigned char *);
int8_t (*registerRawSnapshotBuf)(int , void *, int , unsigned char *);
int8_t (*unregisterSnapshotBuf)(int , void *, int , int ,
unsigned char *, unsigned char *);
int8_t (*unregisterRawSnapshotBuf)(int , void *, int , unsigned char *);
int8_t (*getPicture)(int fd, struct crop_info *cropInfo );
int8_t (*stopSnapshot)(int );
int8_t (*jpegEncode)(const char *path, void *, int, int , unsigned char *,
unsigned char *, void *, camera_encoding_rotate_t rotate);
int8_t (*setZoom)(int , void *);
int8_t (*getMaxZoom)(int fd, void *pZm);
int8_t (*setSpecialEffect)(int, int effect);
int8_t (*setBrightness)(int, int);
int8_t (*setContrast)(int, int);
int8_t (*setSaturation)(int, int);
int8_t (*setEV)(int , int );
int8_t (*setAntiBanding)(int , int32_t antibanding);
int8_t (*setWhiteBalance)(int , int32_t );
int8_t (*setAecMode)(int , camera_auto_exposure_mode_type );
int8_t (*setIso)(int , camera_iso_mode_type );
int8_t (*setSharpness)(int , int );
int8_t (*setAutoFocus)(int , isp3a_af_mode_t, cam_af_ctrl_t *);
int8_t (*sethjr) (int fd, int8_t hjr_status);
int8_t (*setLensShading) (int fd, int8_t rolloff_status);
int8_t (*setLedMode) (int fd, led_mode_t led_mode);
int8_t (*getSharpness_AF) (int fd, int32_t *sharpness);
int8_t (*setMotionIso) (int fd, motion_iso_t motion_iso);
int8_t (*setHue) (int fd, int32_t hue);
int8_t (*cancelAF) (int fd);
int8_t (*getAfStep) (int fd, int32_t *afStep);
int8_t (*setAfStep) (int fd, int32_t afStep);
int8_t (*enableAFD) (int fd);
int8_t (*prepareSnapshot) (int fd);
int8_t (*setFpsMode) (int fd, fps_mode_t fps_mode);
int8_t (*setFps) (int fd, uint16_t fps);
int8_t (*setAFFocusRect) (int fd, cam_af_focusrect_t af_focus_rect);
} interface_ctrl_t;
int8_t native_interface_init(interface_ctrl_t *intrfcCtrl, int *camfd);
int8_t v4l2_interface_init(interface_ctrl_t *intrfcCtrl, int *videofd);
int set_zoom (int zoom_action_param);
int set_hjr (void);
int LensShading (void);
int decrease_contrast (void);
int increase_contrast (void);
int decrease_saturation (void);
int increase_saturation (void);
int decrease_brightness (void);
int increase_brightness (void);
int decrease_EV (void);
int increase_EV (void);
int set_iso (int iso_action_param);
int decrease_sharpness (void);
int increase_sharpness (void);
int SpecialEffect (void);
int set_exp_metering (int exp_metering_action_param);
int LED_mode_change (void);
int set_sharpness_AF (void);
int set_auto_focus (void);
int set_antibanding (void);
int set_whitebalance (int wb_action_param);
int print_current_menu ();
int set_MotionIso (void);
int start_preview (void);
int stop_preview (void);
static int start_video (void);
static int stop_video (void);
int start_recording (void);
int stop_recording (void);
int snapshot_resolution (int);
int preview_video_resolution (int);
int system_init(void);
int system_destroy(void);
int toggle_hue(void);
int cancel_af(void);
int get_af_step();
int set_af_step();
int enable_afd();
int prepare_snapshot();
int set_fps_mode(void);
int get_ctrl_value (int ctrl_value_mode_param);
int toggle_afr ();
int take_yuv_snapshot(int cam_id);
int take_raw_snapshot();
#endif /* __MM_QCAMERA_MAIN_MENU_H__ */