📄 mmidc_internal.h
字号:
/*****************************************************************************
** File Name: mmidc_internal.h *
** Author: Bruce.chi *
** Date: 30/08/2005 *
** Copyright: 2003 Spreadtrum, Incorporated. All Rights Reserved. *
** Description: This file is used to describe DC modual internal interface*
*****************************************************************************
** Important Edit History *
** --------------------------------------------------------------------------*
** DATE NAME DESCRIPTION *
** 08/2005 Bruce.Chi Create
******************************************************************************/
#ifndef _DC_INTERNAL_H_
#define _DC_INTERNAL_H_
/**--------------------------------------------------------------------------*
** Include Files *
**--------------------------------------------------------------------------*/
#include "mmidc.h"
#include "mmk_type.h"
#include "guicommon.h"
#include "guilcd.h"
#include "mmi_id.h"
#include "guilistbox.h"
#include "mmi_common.h"
#ifdef WIN32
#include "mmidc_win32_simu.h"
#else
#include "digitalcamera.h"
#endif
#include "ffs.h"
/**--------------------------------------------------------------------------*
** Compiler Flag *
**--------------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C"
{
#endif
/**--------------------------------------------------------------------------*
** MACRO DEFINITION *
**--------------------------------------------------------------------------*/
#define DC_ASSERT_LOW SCI_ASSERT
//#define MMIDC_DEBUG
#define MMIDC_TEST
#ifdef MMIDC_ZOOM_SUPPORT
#ifdef _LCD_QVGA_
#define MMIDC_MAX_ZOOM_NUM 2 // QVGA支持2档变焦
#else
#define MMIDC_MAX_ZOOM_NUM 4 // 支持4档变焦
#endif
#endif
#define MMIDC_MAX_PHOTO_NUM 200//照片的最大数量
#define MMIDC_INVALID_PHOTO_INDEX (MMIDC_MAX_PHOTO_NUM + 1) //无效的photo index,用于区分对以有的photo操作还是新建photo
#define MMIDC_MAX_PHOTO_NAME_LEN MMI_MAX_FILENAME_LEN//照片名的最大长度,包括扩展名,单位为byte
#define MMIDC_DEFAULT_DIR "DC" //照片存储的目录
#define MMIDC_DEFAULT_DIR_LEN 10
#define MMIDC_DEFAULT_SUBFIX ".jpg" // DC文件后缀名
#define MMIDC_DEFAULT_SUBFIX_LEN 4 // DC文件后缀名的长度,不用strlen得到,是为了加速
#define DCHW_OSD_SLOT_MAX_NUM 6 //由底层决定,6600M只支持6个OSD SLOT
#define DCHW_MAX_OSD_IMG_PIXEL 256 //由底层决定,6600M OSD IMAGE的像素个数为256
#define DCHW_MAX_OSD_IMG_CR_PALLETE 64 //由底层决定,6600M OSD IMAGE的颜色表为64个
#define MMIDC_IMG_EXPAND_1 0 //由底层决定,放大系数1
#define MMIDC_IMG_EXPAND_2 1 //由底层决定,放大系数2
#define MMIDC_IMG_EXPAND_4 2 //由底层决定,放大系数4
#define MAX_PART_IN1CIRCLE DCHW_OSD_SLOT_MAX_NUM //像框分块的最大个数
#define MAX_OSD_STRING_NUM DCHW_OSD_SLOT_MAX_NUM //OSD 文字的最大数目
#define MAX_OSDMENU_NUM_IN1SCREEN DCHW_OSD_SLOT_MAX_NUM //一屏幕放置的OSD menu image数目
#ifdef MMIDC_OSD_CIRCLE_SUPPORT
#ifndef MMI_ENABLE_AUTO_FOCUS
#ifndef MMIDC_FLASH
#define DC_OSD_MENU_NUM 10 //DC OSD MENU的数目
#else
#define DC_OSD_MENU_NUM 11
#endif
#else
#ifndef MMIDC_FLASH
#define DC_OSD_MENU_NUM 11 //DC OSD MENU的数目
#else
#define DC_OSD_MENU_NUM 12 //DC OSD MENU的数目
#endif
#endif
#else
#ifndef MMI_ENABLE_AUTO_FOCUS
#ifndef MMIDC_FLASH
#define DC_OSD_MENU_NUM 9 //DC OSD MENU的数目
#else
#define DC_OSD_MENU_NUM 10
#endif
#else
#ifndef MMIDC_FLASH
#define DC_OSD_MENU_NUM 10 //DC OSD MENU的数目
#else
#define DC_OSD_MENU_NUM 11
#endif
#endif
#endif
#ifdef _LCD_QVGA_ //用于验证QVGA
#define MMIDC_MAINSCREEN_WIDTH 240
#define MMIDC_MAINSCREEN_HEIGHT 320
#else
#define MMIDC_MAINSCREEN_WIDTH MMI_MAINSCREEN_WIDTH
#define MMIDC_MAINSCREEN_HEIGHT MMI_MAINSCREEN_HEIGHT
#endif
#define DV_OSD_MENU_NUM 10 //DV OSD MENU的数目
#define DC_OSD_CIRCLE_NUM 3 //像框的数目
#define OSD_MENU_CHAR_LEFT_MARGIN 2 //OSD离屏幕左边的距离
#define OSD_MENU_CHAR_CN_WIDTH 16 //OSD MENU的文字,都用16x16的。
#define OSD_IMG_WIDTH OSD_MENU_CHAR_CN_WIDTH
#define OSD_IMG_HEIGHT 16 //OSD 图片的高度
#define OSD_MENU_IMG_INTERVAL ((MMIDC_MAINSCREEN_WIDTH - 2 * OSD_MENU_CHAR_LEFT_MARGIN - MAX_OSDMENU_NUM_IN1SCREEN * OSD_IMG_WIDTH) / MAX_OSDMENU_NUM_IN1SCREEN)//4 //
#define HINT_IMAGE_HEIGHT 20 //preview带像框的时候,preview window下面的提示图片的高度。具体意思请看visio图。
#define OSD_MENU_CHAR_EN_WIDHT 32
#define MMIDC_ITEM_NUM_2 2
#define MMIDC_CAPTURE_PREFILTER_STATE TRUE
#define MMIDC_CAPTURE_I_SMOOTH 0x40
#define MMIDC_REVIEW_POSTFILTER_STATE TRUE
#define MMIDC_REVIEW_I_SMOOTH 0x1062
//#define MMIDC_OSD_MENU_DEFAULT_COLOR 0x0F00
/**--------------------------------------------------------------------------*
** TYPE AND CONSTANT *
**--------------------------------------------------------------------------*/
#define MMIDC_BRIGHTNESS_MAX (SENSOR_EFFECT_BRIGHTNESS_END - SENSOR_EFFECT_BRIGHTNESS_BEGIN - 1) //9, the macro came from digitalcamera.h
#define MMIDC_CONTRAST_MAX (SENSOR_EFFECT_CONTRAST_END - SENSOR_EFFECT_CONTRAST_BEGIN - 1) //7
#define MJPEG_HIGH_FRAME_RATE 10 //10FPS
#define MJPEG_MIDD_FRAME_RATE 8 //8FPS
#define MJPEG_LOW_FRAME_RATE 6 //6FPS
#define MP4_HIGH_FRAME_RATE 10 //10FPS
#define MP4_MIDD_FRAME_RATE 7 //7FPS
#define MP4_LOW_FRAME_RATE 5 //5FPS
#define PHOTO_HIGH_QULITY 6 //param for low layer driver
#define PHOTO_LOW_QULITY 4
#define MJPEG_HIGH_QULITY 4
#define MJPEG_LOW_QULITY 2
typedef enum
{
MMIDC_CIRCLE_NONE,
MMIDC_CIRCLE_1,
MMIDC_CIRCLE_2,
MMIDC_CIRCLE_3,
MMIDC_CIRCLE_MAX
}MMIDC_CIRCLE_E;
typedef struct
{
uint16 width; //图片宽度
uint16 height; //图片高度
//而且:宽度高度只是下面几种之一
//2x128,4x64,8x32,16x16,32x8,64x4,128x2
//之所以把width,height列出来而不是采用enum,是为了以后扩展
// int i_expand_facotr; //图片放大倍数(1, 2, 4)
uint8 c_color_index[DCHW_MAX_OSD_IMG_PIXEL];
//256个点。256这个数目由底层给出
//bit[7] bit[6]----- osd operation mode:
//00 transparent,
//01 half-transparent
//10 XOR
//11 overwrite
//bit[5]..bit[0]-----color index
}MMIDC_OSD_IMG_DATA_T;
typedef uint32 MMIDC_OSD_PALATTE_T[DCHW_MAX_OSD_IMG_CR_PALLETE];
//调色板表。
//data format is shown as following:
//bit[ 7]~bit[ 0] V value(-128~127)
//bit[15]~bit[ 8] U value(-128~127)
//bit[23]~bit[16] Y value(-128~127)
//bit[31]~bit[24] reserved
typedef enum
{
OSD_IMG_PART_TOP,
OSD_IMG_PART_LEFT,
OSD_IMG_PART_RIGHT,
OSD_IMG_PART_BOTTOM,
OSD_IMG_PART_MAX
}OSD_IMG_POSITION_E;
typedef struct
{
int i_expand_factor; //放大倍数
RECT_T st_rect; //OSD图片repeat的区域
OSD_IMG_POSITION_E e_img_pos; //OSD图片位置
const MMIDC_OSD_IMG_DATA_T *p_osd_data; //OSD图片数据
}MMIDC_OSD_CIRCLE_PART_T;
typedef struct
{
int i_osd_part_num; //一副像框由几个OSD小图片组成
const MMIDC_OSD_CIRCLE_PART_T *st_circle_part[MAX_PART_IN1CIRCLE];//各个像框part
const MMIDC_OSD_PALATTE_T *p_pallete_data; //OSD图片调色板
}MMIDC_OSD_CIRCLE_T;
typedef enum
{
PREVIEW_WIN_FULLSCREEN_CHAR_OSDMENU, //预览,主屏全屏、文字OSD MENU
PREVIEW_WIN_FULLSCREEN_IMAGE_OSDMENU, //预览,主屏全屏、图片OSD MENU
PREVIEW_WIN_PARTSCREEN_CIRCLE_OSD, //预览,主屏半屏、像框
PREVIEW_WIN_SUBLCD_NO_OSD, //预览,副屏
PREVIEW_WIN_MODE_MAX
}PREV_WIN_MODE_E; //PREVIEW/CAP窗口显示模式
typedef enum
{
CAP_WIN_FULLSCREEN_CHAR_OSDMENU, //拍照主屏全屏、文字OSD MENU
CAP_WIN_PARTSCREEN_NO_OSD, //拍照主屏半屏、无OSD
CAP_WIN_SUBLCD_NO_OSD, //拍照副屏
CAP_WIN_MODE_MAX
}CAP_WIN_MODE_E; //PREVIEW/CAP窗口显示模式
typedef enum
{
CAPTURE_OSD_NONE, //无Capture OSD
CAPTURE_OSD_TIME, //时间OSD
CAPTURE_OSD_CHARACTER, //文字OSD,这个由用户输入得到
CAPTURE_OSD_MAX
}MMIDC_CAPTURE_OSD_TYPE; //拍照OSD类型。跟PreviewOSD不一样,是保存在照片上的。
typedef struct
{
MMIDC_CAPTURE_OSD_TYPE e_osd_type; //拍照OSD类型
int i_image_osd_index; //图片OSD index,仅e_osd_type为
//CAPTURE_OSD_IMAGE时有效。
uint8 str[(MAX_OSD_STRING_NUM << 1) + 2];
//文字OSD字符串内容,仅e_osd_type为
//CAPTURE_OSD_CHARACTER时有效
BOOLEAN is_ucs2;
uint16 str_len;
}MMIDC_CAPTURE_OSD_INFO; //拍照OSD数据
typedef struct
{
int cur_img_osd_menu_index;
int left_img_osd_menu_index;
MMIDC_CIRCLE_E e_circle_osd_index;
}MMIDC_PREVIEW_OSD_INFO;
typedef enum
{
MMIDC_PREVIEW_NO_AF, //没有AF情况下的preview
MMIDC_PREVIEW_AF_CONTINUOUS, //连续AF的preview
MMIDC_PREVIEW_AF_SINGLE, //单次AF的preview
MMIDC_CAPTURE_NO_AF, //capture
MMIDC_CAPTURE_OSD, //osd文字
MMIDV_PREVIEW_NO_AF, //dv preview
MMIDC_TRIMRECT_TYPE_MAX
}MMIDC_TRIMRECT_TYPE_E;
typedef struct
{
int i_contrast; //对比度
MMIDC_PHOTO_EFFECT_E e_effect; //效果(正常、黑白、蓝色、绿色、红色、帆布、底片)
int i_brightness; //亮度
MMIDC_PHOTO_MODE_E e_mode; //模式(室内、室外)
MMIDC_PHOTO_QUALITY_E e_quality; //质量(高级、普通)
MMIDC_PHOTO_SIZE_E e_photo_size; //照片大小(1280x960、640x480、320x240)
MMIVC_VIDEO_SIZE_E e_video_size; //录像大小
BOOLEAN b_shutter_voice;//快门声音(开、关)
MMIDC_OVERTIME_CAP_E e_overtime; //延时拍照(关、5秒、10秒、20秒、30秒、60秒)
int i_focus; //焦距(目前不支持)
BOOLEAN b_flash_enabled;//闪光灯(开、关)
MMIDC_CAPTURE_OSD_INFO st_cap_osd_info;//拍照OSD信息
MMIDC_PREV_FRAME_RATE_E e_frame_rate; //帧率(高、低)
MMIDV_VOICE_REC_E e_dv_voice_rec; //录音功能(开、关)
MMIDV_FORMAT_E e_dv_format; //video格式
FILE_DEV_E_T e_storage_dev; //存储位置
MMIDC_AF_TYPE_E e_af; //auto focus 类型
//以上是MMI提供接口给用户可随时调节的。以下是对用户不可见的。
LCD_ID_E e_lcd; //屏幕选择(主屏、副屏),冗余数据
BOOLEAN b_prefilter; //是否加上prefilter
int i_sooth; //光滑度
PREV_WIN_MODE_E e_prevwin_mode; //预览界面,窗口模式屏幕选择(主屏全屏、主屏半屏、副屏)
CAP_WIN_MODE_E e_capwin_mode; //拍照界面,窗口模式屏幕选择(主屏全屏、主屏半屏、副屏)
MMIDC_PREVIEW_OSD_INFO st_preview_osd_info; //预览界面,OSD信息
BOOLEAN is_from_dc; //DC还是DV预览
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -