亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mmicamera.c

?? 是一個(gè)手機(jī)功能的模擬程序
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
/*

	攝像頭模塊與mmi的接口代碼

	2004.7.1 WYJ 整理
	2004.7.8 WYJ 加入部分驅(qū)動(dòng),基礎(chǔ)版本
	2004.7.15   WYJ 完成基本功能 
	
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


#if defined (NEW_FRAME)

	#include "typedefs.h"
	#include "vsi.h"
	#include "pei.h"
	#include "custom.h"
	#include "gsm.h"

#else  /* NEW_FRAME */

	#include "stddefs.h"
	#include "custom.h"
	#include "gsm.h"
	#include "vsi.h"

#endif /* NEW_FRAME */

#include "Mfw_sys.h"

#include "mfw_mfw.h"
#include "mfw_win.h"
#include "mfw_kbd.h"
#include "mfw_edt.h"
#include "mfw_tim.h"
#include "mfw_phb.h"
#include "mfw_sms.h"
#include "mfw_icn.h"
#include "mfw_mnu.h"
#include "mfw_lng.h"
#include "mfw_sat.h"
#include "mfw_kbd.h"
#include "mfw_nm.h"
#include "Mfw_cm.h"
#include "dspl.h"
#include "MmiMmi.h"
#include "MmiMain.h"
#include "MmiDummy.h"
#include "MmiDialogs.h"
#include "MmiLists.h"
#include "MmiCall.h"
#include "MmiMenu.h"
#include "MmiSoftKeys.h"
#include "MmiResources.h"
#include "MmiBlkLangDB.h"
#include "MmiBookUtils.h"
#include "MmiEditor.h"
#include "MmiEditor_i.h"
#include "MmiBookshared.h"
#include "mmiSmsMenu.h"
#include "Mmismssend.h"
#include "mmiutilapi.h"
#include "mmidialogs.h"
#include "mmitextinput.h"
#include "mmisounds_defs.h"
#include "GameDisplay.h"  //yangx Add

#include "mmicamera.h"

#include "mmiutilapi.h"

/* camera 驅(qū)動(dòng)接口函數(shù) */
#include "cam_api.h"

/* camera 狀態(tài)變量 */
CAMEXT CamExt;
//extern unsigned long jpg_buf[1024*20];
extern unsigned char jpg_buf[1024*20*4];

// trace 
#define	TRACE(s)	MI_dbgPrintf  s
//#define TRACE(s)

// 動(dòng)態(tài)分配空間失敗,暫時(shí)使用靜態(tài)空間
//unsigned char    tmpjpg[176*240*4];
extern const unsigned char bm_bkg[];
// capture窗口顯示用圖片 有待擴(kuò)展
/***********************************************************************************
 *
 *  模塊:   文件管理模塊   
 *
 *  描述:   對(duì)ffs進(jìn)行操作,負(fù)責(zé)camera部分添加刪除記錄等工作
 *
 *  歷史:   2004.7.1 WYJ 創(chuàng)建
 *  
 ***********************************************************************************/

/* 模塊內(nèi)部使用的宏 */
    
/* 文件接口屬性 */
#define MAX_CAM_FILE        10           // 存儲(chǔ)文件數(shù)量
#define MAX_CAM_CAPACITY    (1024*200)      // 最大容量暫定100k
#define MAX_CAM_NAME        15          // 最大文件名長度,實(shí)際是6個(gè)漢字
#define CAM_FATH            "/cam"      // 默認(rèn)路徑
#define CAM_CONFFILE        "/cam/filecon"//圖片文件控制管理文件名
#define CAM_OPTION_FILE     "/cam/option"   //屬性文件

/* 模塊內(nèi)部使用的結(jié)構(gòu)體 */

// 每個(gè)圖片文件信息
typedef struct
{
    int     jpg_type;                       // jpg圖片分辨率
    int     size;                           // 圖片大小
    char    flag;                           // 記錄是否為空,0 表示記錄為空 
    char    file_name[MAX_CAM_NAME];        // 用戶定義的文件名
}Flash_CAMFile;

// 圖片文件信息
typedef struct  
{
    int     capacity;                       // 當(dāng)前ffs里所有圖片文件容量之和
    int     file_sum;                       // 文件數(shù)量             
    char    index[MAX_CAM_FILE];            // cam_file的索引表, 以用戶拍攝順序?yàn)樗饕?    Flash_CAMFile   cam_file[MAX_CAM_FILE]; // 文件信息數(shù)組
}Flash_CAM;

// camera需保存的參數(shù)
typedef struct
{
    CAMU16  m_nCurSize;
    CAMU16  m_nJPEGQFactor;
      int     melody; 
}Flash_CAM_OPTION;

typedef struct{
	T_MMI_CONTROL mmi_control;
	T_MFW_HND       parent_win;
	T_MFW_HND win;
	T_MFW_HND kbd;
	UBYTE frame_index;
}CAM_OSD;

CAM_OSD Cam_osd_data;

/* 模塊函數(shù)聲明 */
static  int         IsCamFfs_Full(int   newfile);
static  int         Add_One_Record(char *name, unsigned char *pPic, int size/*, int jpgtype*/);
static  int         Delete_One_Record(int   index);
static  int         Delete_All(void);

/* 全局變量的定義 */
Flash_CAM       cam_control;            //與ffs里圖片文件控制管理文件同步的數(shù)組

Flash_CAM_OPTION    cam_option;

/* 
 *  描述:   camera 需要用到的文件系統(tǒng)的初始化,將ffs內(nèi)容讀到變量cam_control
 *          若目錄為空,就創(chuàng)建目錄及文件
 *  返回:   0:成功 
*/
int  Cam_Ffs_Init()
{
T_FFS_DIR   dir;                        // no use to user
int         status;                     // 返回值
T_FFS_STAT  s;                          // ffs api 需要

    /* 創(chuàng)建目錄 */
    status = ffs_opendir(CAM_FATH, &dir);
    TRACE(("ffs_opendir: %d", status));

    if(status <= EFFS_OK)               // 目錄不存在
    {
        status = ffs_mkdir(CAM_FATH);
        TRACE(("ffs_mkdir: %d", status));
    }

    /* 讀數(shù)據(jù)到cam_control */
    status = ffs_stat(CAM_CONFFILE, &s);
    TRACE(("ffs_stat(CAM_CONFFILE, s): %d", status));
    if(status != EFFS_NOTFOUND)         // 文件已存在,讀數(shù)據(jù)
    {
        status = ffs_fread(CAM_CONFFILE, &cam_control, sizeof(Flash_CAM));
        TRACE(("ffs_fread return:%d", status));
    }
    else                                // 創(chuàng)建一個(gè)初始化文件
    {
        memset(&cam_control, 0, sizeof(Flash_CAM));
        status = ffs_fwrite(CAM_CONFFILE, &cam_control, sizeof(Flash_CAM));
        TRACE(("ffs_fwrite return:%d", status));
    }

    /* 讀數(shù)據(jù)到cam_option */
    status = ffs_stat(CAM_OPTION_FILE, &s);
    TRACE(("ffs_stat(CAM_CONFFILE, s): %d", status));
    if(status != EFFS_NOTFOUND)         // 文件已存在,讀數(shù)據(jù)
    {
        status = ffs_fread(CAM_OPTION_FILE, &cam_option, sizeof(Flash_CAM_OPTION));
        TRACE(("ffs_fread return:%d", status));
        CamExt.m_nCurSize = cam_option.m_nCurSize;
        CamExt.m_nJPEGQFactor = cam_option.m_nJPEGQFactor;
    }
    else                                // 創(chuàng)建一個(gè)初始化文件
    {
        memset(&cam_control, 0, sizeof(Flash_CAM));
        status = ffs_fwrite(CAM_OPTION_FILE, &cam_option, sizeof(Flash_CAM_OPTION));
        TRACE(("ffs_fwrite return:%d", status));
    }
    return 1;
}


/* 
 *  描述:   判斷camera ffs空間是否已滿,包括文件數(shù)量及總大小
 *  返回:   1:滿
 */
static  int IsCamFfs_Full(int   newfile)
{
    if(cam_control.file_sum == MAX_CAM_FILE || cam_control.capacity+newfile > MAX_CAM_CAPACITY)
    	{
	TRACE(("M2C: CamFfs Full"));
        return 1;
    	}
    else
    	{
    	TRACE(("M2C: CamFfs not Full"));
        return 0; 	
    	}
}

/* 
 *  描述:   判斷camera ffs是否為空,刪除時(shí)用到
 *  返回:   1:空
 */
static int IsCamFfs_Empty(void)
{
    if(cam_control.file_sum)
        return 0;
    else
        return 1;
}

/*
 * 描述:    添加一張圖片記錄
 * 返回:    -1: 磁盤滿 -2: 磁盤操作有錯(cuò) 0:成功
 */
static  int Add_One_Record(char * name, unsigned char * pPic, int size/*, int jpgtype*/)
{
char    ffsname[20];                    // ffs文件名
int     i, j;
int     status;

    // 檢查
    if(IsCamFfs_Full(size))
        return -1;

    // 找一個(gè)空位
    i = find_One_Space();
    if(i == -1)
        return -1;
        
    /* 添加一條圖片記錄 */
    
    /* 寫ffs圖片文件 */


	
    memset(ffsname, 0, sizeof(ffsname));
    sprintf(ffsname, "%s/%02d.jpg", CAM_FATH, i);

    status = ffs_fwrite(ffsname, pPic, size);
    TRACE(("ffs_fwrite return:%d", status));
    if(status != EFFS_OK)
        return -2;

    /* 更新 cam_control 數(shù)據(jù) */
    cam_control.index[cam_control.file_sum] = i;
    cam_control.cam_file[i].size = size;
   // cam_control.cam_file[i].jpg_type = jpgtype; //Marked by Cathy
    memcpy(cam_control.cam_file[i].file_name, name, MAX_CAM_NAME);

    cam_control.cam_file[i].flag = 1;
    cam_control.file_sum++;
    cam_control.capacity += size;

    status = ffs_fwrite(CAM_CONFFILE, &cam_control, sizeof(Flash_CAM));
    TRACE(("ffs_fwrite return:%d", status));
    if(status != EFFS_OK)
        return -2;

    return 0;

}

/* 
 * 描述:    刪除一張圖片 
 * 參數(shù):    索引index: 0 - cam_control.file_sum
 * 返回:    0:成功
 */
static  int Delete_One_Record(int   index)
{
int     i;
int     file_pos;                       // 要?jiǎng)h除的cam_file文件序號(hào)
char    ffsname[20];                    // ffs文件名
int     status;

    file_pos = cam_control.index[index];

    /* 修改索引表 */
    for(i=0; i<MAX_CAM_FILE-index-1; i++)
        cam_control.index[index+i] = cam_control.index[index+i+1];

    /* 刪除圖片文件 */
    cam_control.cam_file[file_pos].flag = 0;
    memset(ffsname, 0, sizeof(ffsname));
    sprintf(ffsname, "%s/%02d.jpg", CAM_FATH, file_pos);
    status = ffs_remove(ffsname);
    TRACE(("ffs_remove return:%d", status));

    /* 修改總?cè)萘考皥D片數(shù)量 */
    cam_control.capacity -= cam_control.cam_file[file_pos].size;
    cam_control.file_sum--;

    /* 寫ffs操作 */
    status = ffs_fwrite(CAM_CONFFILE, &cam_control, sizeof(Flash_CAM));
    TRACE(("ffs_fwrite return:%d", status));

    return 0;
}

/* 
 * 描述:    刪除所有圖片文件
 * 返回:    0:成功
 */
static  int Delete_All(void)
{
int     i;
int     status;
char    ffsname[20];                    // ffs文件名

    /* 刪除所有圖片文件 */
    for(i=0; i<cam_control.file_sum; i++)
    {
        memset(ffsname, 0, sizeof(ffsname));
        sprintf(ffsname, "%s/%02d.jpg", CAM_FATH, cam_control.index[i]);
        status = ffs_remove(ffsname);
        TRACE(("ffs_remove return:%d", status));
    }

    /* 初始化控制文件 */
    memset(&cam_control, 0, sizeof(Flash_CAM));
    status = ffs_fwrite(CAM_CONFFILE, &cam_control, sizeof(Flash_CAM));
    TRACE(("ffs_fwrite return:%d", status));

    return 0;
}

/* 
 * 描述:    找到一個(gè)cam_control.cam_file 里的空位
 * 返回:    -1:沒有空間 其他:索引位置
 */
int find_One_Space()
{
int     i;

    for(i=0; i<MAX_CAM_FILE; i++)
    {
        if(cam_control.cam_file[i].flag == 0)
            return i;
    }
    return -1;
}

/***********************************************************************************
 *
 *  模塊:   驅(qū)動(dòng)接口模塊   
 *
 *  描述:   提供給mmi驅(qū)動(dòng)的接口
 *
 *  歷史:   2004.7.1 WYJ 創(chuàng)建
 *  
 ***********************************************************************************/
 
/* 設(shè)置Camera狀態(tài) */
#define M2C_START_PREVIEW   1           // 開始預(yù)覽
#define M2C_STOP_PREVIEW    2           // 停止預(yù)覽
#define M2C_CAPTURE         3           // 捕獲一幅圖片
#define M2C_SWITCH_OFF      4           // 關(guān)camera
#define M2C_SWITCH_ON       5           // 開camera


/* 對(duì)底層進(jìn)行操作 */
Boolean CaptureJpeg(void);  //added by cathy
static  int     M2C_Set_Camera_State(int    state);
static  int     M2C_Disp_Saved_Pic(int  index);
static  int     M2C_Disp_Captured_Pic(void);
static  int     M2C_Get_Captured_Size(void);
static  int     M2C_Get_Captured_Pic(unsigned char *p/*, int size*/);
static  void    M2C_Control_Refresh(int flag);


/*
 *  描述:   調(diào)用底層接口,對(duì)camera狀態(tài)進(jìn)行操作
 *  返回:   1: 成功
 */
static int  M2C_Set_Camera_State(int    state)
{

	PREVIEWINFO   prvinfo;

	char name[] = {'P','h','o','t','o','\0'};
	int i;
	UINT32 addr1,addr2;
	
    switch(state)
    {
        case    M2C_SWITCH_ON:
        TRACE(("M2C: switch on"));
        //Camera_OnEnterCamera();    //Marked by Cathy
        return  1;
 
    case    M2C_START_PREVIEW:
        TRACE(("M2C: start preview"));
       //Camera_PreviewOn();     //Marked by Cathy
//	Overlay_Windows_Update(0,0,0,0,0);

	CamPreview_On();

//end cathy   	

//        M2C_Control_Refresh(R2D_REFRESH_DISABLE);
        return  1;
    
    case    M2C_STOP_PREVIEW:
        TRACE(("M2C: stop preview"));
       // Camera_OnExitCamera();   //Marked by Cathy
       CamPreview_Off();
	Exit_Camera_Mode();
//        M2C_Control_Refresh(R2D_REFRESH_ENABLE);
        return  1;

    case    M2C_CAPTURE:
        TRACE(("M2C: start capture"));
        //Camera_StillCapture();       //Marked by Cathy      
            Camera_OnCapture();

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美洲天堂一区二卡三卡四卡视频| 日韩av高清在线观看| 欧美优质美女网站| 国产一区二区三区在线观看免费视频| 一区二区三区久久久| 精品国产一区二区三区不卡| 在线视频国内自拍亚洲视频| 国产一区二区三区在线观看免费| 香蕉成人伊视频在线观看| 国产欧美一区二区精品久导航| 欧美一区二区三区四区视频| 色婷婷久久久综合中文字幕| 国产成人在线视频网站| 久久 天天综合| 亚洲成人三级小说| 亚洲精品乱码久久久久久日本蜜臀| 久久久久久久久久电影| 精品日韩在线观看| 宅男在线国产精品| 欧美日韩综合在线| 色婷婷精品久久二区二区蜜臀av| 国产成人av资源| 韩国三级电影一区二区| 视频一区国产视频| 亚洲国产日产av| 亚洲综合成人网| 亚洲精品日韩综合观看成人91| 国产精品拍天天在线| 国产亚洲人成网站| www国产亚洲精品久久麻豆| 欧美一区二区三区婷婷月色 | 国产在线观看一区二区| 日韩va亚洲va欧美va久久| 亚洲福利一区二区| 亚洲国产一区二区视频| 亚洲国产色一区| 亚洲成av人片在线观看| 亚洲aⅴ怡春院| 日本亚洲三级在线| 秋霞国产午夜精品免费视频| 日韩影院精彩在线| 欧美aⅴ一区二区三区视频| 蜜臀久久久99精品久久久久久| 日本视频一区二区| 久草在线在线精品观看| 国产精品996| eeuss国产一区二区三区| 91在线观看美女| 日本久久一区二区三区| 欧美色爱综合网| 5566中文字幕一区二区电影| 欧美成va人片在线观看| 久久精品视频网| ...xxx性欧美| 亚洲成人av福利| 国产曰批免费观看久久久| 国产ts人妖一区二区| 93久久精品日日躁夜夜躁欧美| 色哟哟欧美精品| 欧美高清www午色夜在线视频| 91精品国产综合久久婷婷香蕉| 日韩写真欧美这视频| 久久精品一区二区| 亚洲图片另类小说| 日韩av电影免费观看高清完整版 | www.日韩av| 欧美图片一区二区三区| 日韩精品一区国产麻豆| 国产精品国产三级国产普通话蜜臀 | 一区二区三区日本| 免费看精品久久片| 成人精品一区二区三区四区| 91黄色免费看| 精品人在线二区三区| 18成人在线观看| 日韩av一区二区三区四区| 国产精品一区二区三区乱码| 99久久伊人精品| 91精品久久久久久蜜臀| 国产女主播在线一区二区| 亚洲五月六月丁香激情| 国产一区二区0| 欧美日韩在线播| 欧美国产乱子伦| 男男成人高潮片免费网站| 成人app网站| 欧美一区二区三区在线看| 18欧美乱大交hd1984| 精品一区二区三区日韩| 一道本成人在线| 久久影院午夜论| 午夜精品影院在线观看| 国产成人在线视频播放| 欧美精品1区2区3区| 中文字幕一区在线| 精品影视av免费| 欧美日韩精品欧美日韩精品| 日本一区二区综合亚洲| 免费av成人在线| 在线视频欧美精品| 国产精品久久久久影院色老大| 另类综合日韩欧美亚洲| 欧美亚洲国产bt| 国产欧美一二三区| 久久精品免费观看| 精品视频免费在线| 亚洲女同一区二区| 成人一区二区三区在线观看| 精品日本一线二线三线不卡 | 成人免费电影视频| 精品久久久久99| 日本视频中文字幕一区二区三区| 91色在线porny| 国产精品久久久久四虎| 国产精品自拍av| 精品久久久久久久一区二区蜜臀| 午夜久久久久久| 欧美日韩一区久久| 一区二区三区视频在线看| 91免费精品国自产拍在线不卡| 久久久久国产一区二区三区四区 | 欧美性生活久久| 亚洲欧美国产三级| 91蝌蚪porny成人天涯| 国产精品久久久久久久久果冻传媒| 久久国产精品色婷婷| 欧美一级午夜免费电影| 日韩av不卡在线观看| 91精品国产综合久久精品图片| 亚洲第一av色| 欧美日韩久久久一区| 偷拍亚洲欧洲综合| 在线播放/欧美激情| 日韩精品91亚洲二区在线观看| 欧美三片在线视频观看| 亚洲第一激情av| 91麻豆精品91久久久久同性| 午夜精品爽啪视频| 777亚洲妇女| 免费成人av在线| 久久日韩粉嫩一区二区三区| 国产精品123| 亚洲国产精品99久久久久久久久| 国产成人高清视频| 亚洲少妇最新在线视频| 欧美系列亚洲系列| 午夜国产精品一区| 欧美高清视频不卡网| 久久精品理论片| 国产精品无码永久免费888| heyzo一本久久综合| 一区二区久久久久| 欧美福利一区二区| 韩国精品在线观看| 国产精品麻豆网站| 色呦呦日韩精品| 麻豆一区二区三区| 国产欧美日本一区视频| 一本久久综合亚洲鲁鲁五月天| 亚洲一区二区黄色| 欧美一区二区免费观在线| 福利电影一区二区三区| 亚洲精品视频观看| 日韩欧美国产麻豆| 懂色一区二区三区免费观看| 亚洲天堂免费在线观看视频| 欧美夫妻性生活| 国产东北露脸精品视频| 亚洲精品乱码久久久久久| 69堂成人精品免费视频| 国产成人在线网站| 午夜国产精品一区| 国产亚洲欧美日韩在线一区| 一本到高清视频免费精品| 日本欧美一区二区| 欧美国产日产图区| 欧美一区二区三区在线电影| 成人禁用看黄a在线| 午夜精品成人在线视频| 欧美国产精品v| 欧美日韩在线三区| 国产成人综合视频| 日本午夜一本久久久综合| 欧美激情一区二区三区蜜桃视频 | 欧美aaaaa成人免费观看视频| 国产精品免费看片| 7777精品伊人久久久大香线蕉的| 成人免费黄色在线| 美女性感视频久久| 亚洲最大成人综合| 久久精品视频网| 欧美一区二区观看视频| 97久久精品人人爽人人爽蜜臀| 九色综合国产一区二区三区| 亚洲一区二区视频| 国产精品国产馆在线真实露脸| 日韩一级片在线播放| 欧美在线观看视频一区二区三区| 大胆亚洲人体视频| 麻豆国产精品一区二区三区|