⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmidc_internal.h

📁 手机Camera部分上层软件代码
💻 H
📖 第 1 页 / 共 5 页
字号:
/*****************************************************************************
** 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 + -