📄 testapi.c
字号:
DisplayHeight =MAINFRAME_WIDTH_DEFAULT+30-4;
}
VIM_HAPI_SetLCDMirror(DisplayRotation,4);
User_DrawLCDBlack(4,4,MAINFRAME_WIDTH_DEFAULT-8,MAINFRAME_WIDTH_DEFAULT+30-4);
if(g_file)
VIM_HAPI_Display_Jpeg(VIM_HAPI_ROM_SAVE, g_file,0xffffffff, 4, 4, Displaywidth, DisplayHeight);
JpegOffsetX=JpegOffsetY=0;
break;
case VIDEO_FILE:
break;
default:
break;
}
}
void User_MediaPlayerKeyUp(void)
{
UINT16 result;
switch (MediaPlayerFileType)
{
case JPEG_FILE:
if(PanHeightIndex>0)
PanHeightIndex-=1;
if (PictureHeight>(DisplayHeight+6))
{
JpegOffsetY=PanHeightIndex*(PictureHeight-DisplayHeight)/6;
User_MediaPlayerDisplayPan();
}
/*if(PanHeightIndex>0)
PanHeightIndex-=1;
User_MediaPlayerDisplayPan();*/
break;
case VIDEO_FILE:
break;
default:
break;
}
}
void User_MediaPlayerKeyDown(void)
{
switch (MediaPlayerFileType)
{
case JPEG_FILE:
if(PanHeightIndex<6)
PanHeightIndex+=1;
if (PictureHeight>(DisplayHeight+6))
{
JpegOffsetY=PanHeightIndex*(PictureHeight-DisplayHeight)/6;
if(PanHeightIndex==6)
JpegOffsetY=PictureHeight-DisplayHeight;
User_MediaPlayerDisplayPan();
}
/*if(PanHeightIndex<6)
PanHeightIndex+=1;
User_MediaPlayerDisplayPan();*/
break;
case VIDEO_FILE:
break;
default:
break;
}
}
void User_MediaPlayerKeyLeft(void)
{
switch (MediaPlayerFileType)
{
case JPEG_FILE:
if(PanWidthIndex>0)
PanWidthIndex-=1;
if (Picturewidth>(Displaywidth+6))
{
JpegOffsetX=PanWidthIndex*(Picturewidth-Displaywidth)/6;
User_MediaPlayerDisplayPan();
}
break;
case VIDEO_FILE:
#if VIM_USER_SUPPORT_REALTIME_ROTATION
VIM_HAPI_SetLCDMirror(VIM_HAPI_ROTATE_90,VIM_HAPI_A_LAYER);
VIM_HAPI_ChangeVideoSize(0,0,176,144);
MMI_SetUpdateB0Area(0,0,0,0);
MMI_SetUpdateArea(0,0,0,0);
#endif
break;
default:
break;
}
}
void User_MediaPlayerKeyRight(void)
{
switch (MediaPlayerFileType)
{
case JPEG_FILE:
if(PanWidthIndex<6)
PanWidthIndex+=1;
if (Picturewidth>(Displaywidth+6))
{
JpegOffsetX=PanWidthIndex*(Picturewidth-Displaywidth)/6;
if(PanWidthIndex==6)
JpegOffsetX=Picturewidth-Displaywidth;
User_MediaPlayerDisplayPan();
}
break;
case VIDEO_FILE:
#if VIM_USER_SUPPORT_REALTIME_ROTATION
VIM_HAPI_SetLCDMirror(VIM_HAPI_ROTATE_270,VIM_HAPI_A_LAYER);
VIM_HAPI_ChangeVideoSize(0,0,320,240);
MMI_SetUpdateB0Area(0,0,0,0);
MMI_SetUpdateArea(0,0,0,0);
#endif
break;
default:
break;
}
}
//////////////////////////camera/////////////////////////////////////////////////////////////
void Menu_SavePicture(UINT iMsg, WPARAM wParam, LPARAM lParam);
void PrintCamjpegReg(void)
{
}
#define CAMERA_ITEM 2
#define VIDEO_ITEM 4
extern int mainSelectedItem;
UINT8 gbEncode = 0;
UINT8 gbPlayingRecode = 0;
UINT8 gbVideoGUIClose = 0;
int User_InitCamera(void)
{
UINT16 w,h,result;
VIM_HAPI_CPTURE_QUALITY quality;
SpecialEffec=0;
switch(MMI_VideoSetting[0].Value)
{
case 2:
w=1280;
h=960;
break;
case 1:
w=640;
h=480;
break;
case 0:
w=320;
h=240;
break;
}
switch( MMI_VideoSetting[1].Value)
{
case 0:
quality=VIM_HAPI_CPTURE_QUALITY_HIGH;
break;
case 1:
quality=VIM_HAPI_CPTURE_QUALITY_MID;
break;
case 2:
quality=VIM_HAPI_CPTURE_QUALITY_LOW;
break;
}
switch (mainSelectedItem)
{
case CAMERA_ITEM:
VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_CAMERAON);
VIM_HAPI_SetEffect(0);
User_DrawLCDBlack(4,4,MAINFRAME_WIDTH_DEFAULT-8,MAINFRAME_WIDTH_DEFAULT+30-4);
//VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,MAINFRAME_WIDTH_DEFAULT,32+4);
//VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
//MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
VIM_HAPI_SetLCDMirror(VIM_HAPI_ROTATE_0, VIM_HAPI_A_LAYER);
VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_OVERLAY,0xffff);
VIM_HAPI_SetLCDColordep(VIM_HAPI_COLORDEP_16BIT);
VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,4,4,MAINFRAME_WIDTH_DEFAULT-8,32+4,0xffff);
VIM_HAPI_SetCaptureParameter(w,h);
//VIM_HAPI_SetPreviewParameter(4,4,MAINFRAME_WIDTH_DEFAULT-8,MAINFRAME_WIDTH_DEFAULT+30-4);
//VIM_HAPI_SetPreviewParameter(4,(MAINFRAME_WIDTH_DEFAULT+30-4-200)/2,240-8,200);
if(w==1280)
VIM_HAPI_SetPreviewParameter(30,60,176,176);
else
VIM_HAPI_SetPreviewParameter(12,40,240-24,188);
VIM_HAPI_SetCaptureQuality(quality);
Uart_Printf("VIM_HAPI_SetCaptureQuality =%d \r\n",quality);
#ifdef FASET_PREVIEW
if(g_outindex==0)
FastPreview=1;
else
FastPreview=0;
result=VIM_HAPI_SetPreviewMode(VIM_HAPI_PREVIEW_ON);
#else
result=VIM_HAPI_SetPreviewMode(VIM_HAPI_PREVIEW_ON);
#endif
Uart_Printf("\n VIM_HAPI_SetPreviewMode return : %d ",result);
MMI_SetUpdateB0Area(4,4,MAINFRAME_WIDTH_DEFAULT-8,32);
MMI_SetUpdateArea(0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
BypassUpdate=2;
break;
case VIDEO_ITEM:
MMI_SetCameraInfo(NULL,NULL,"RECORD",NULL);
if(w==1280)
{
w=640;
h=480;
}
VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_CAMERAON);
VIM_HAPI_SetEffect(0);
User_DrawLCDBlack(4,4,MAINFRAME_WIDTH_DEFAULT-8,MAINFRAME_WIDTH_DEFAULT+30-4);
VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,MAINFRAME_WIDTH_DEFAULT,32+4);
//VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,0,0);
//VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,0,0,0);
VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
VIM_HAPI_SetLCDMirror(VIM_HAPI_ROTATE_0, VIM_HAPI_A_LAYER);
VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_OVERLAY,0xffff);
VIM_HAPI_SetLCDColordep(VIM_HAPI_COLORDEP_16BIT);
VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,4,4,MAINFRAME_WIDTH_DEFAULT-8,32+4,0xffff);
VIM_HAPI_SetCaptureQuality(VIM_HAPI_CPTURE_QUALITY_MID);
VIM_HAPI_SetCaptureParameter(w,h);
//VIM_HAPI_SetPreviewParameter(4,4,MAINFRAME_WIDTH_DEFAULT-8,MAINFRAME_WIDTH_DEFAULT+30-4);
VIM_HAPI_SetPreviewParameter(12,40,240-24,184);
//VIM_HAPI_SetPreviewParameter(12,40,216,184);
#ifdef FASET_PREVIEW
if(g_outindex==0)
FastPreview=1;
else
FastPreview=0;
result=VIM_HAPI_SetPreviewMode(VIM_HAPI_PREVIEW_ON);
#else
result=VIM_HAPI_SetPreviewMode(VIM_HAPI_PREVIEW_ON);
#endif
MMI_SetUpdateB0Area(4,4,MAINFRAME_WIDTH_DEFAULT-8,32);
MMI_SetUpdateArea(0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
BypassUpdate=0;
break;
default:
break;
}
return 1;
}
int USER_ExitInitCamera()
{
return 1;
}
int USER_closeCamera()
{
Uart_Printf("USER_closeCamera \r\n");
switch (mainSelectedItem)
{
case CAMERA_ITEM:
case VIDEO_ITEM:
default:
VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_BYPASS);//through mode power on lcd
BypassUpdate=1;
MMI_SetUpdateB0Area(0,0,0,0);
MMI_SetUpdateArea(0,0,MAINFRAME_WIDTH_DEFAULT,MAINFRAME_HEIGHT_DEFAULT);
break;
}
return 1;
}
void Menu_Camera(UINT iMsg, WPARAM wParam, LPARAM lParam)
{
VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_BYPASS);//through mode power on lcd
BypassUpdate=1;
SetCameraStart(User_InitCamera,USER_ExitInitCamera,USER_closeCamera);
MCameraMain(NULL,NULL,NULL,SW_SHOW);
}
/***************************** use up and down key do preview zoom change ******************************
up zoom step->
down zoom step->
****************************************************************************************************/
int User_CameraUp()
{
UINT16 result;
result=VIM_HAPI_SetPreviewZoom(VIM_HAPI_CHANGE_ADD,1);
Uart_Printf("\n VIM_HAPI_SetPreviewZoom return : %d ",result);
Uart_Printf("\n FastPreview : %d ",FastPreview);
return 1;
}
int User_CameraDown()
{
UINT16 result;
result=VIM_HAPI_SetPreviewZoom(VIM_HAPI_CHANGE_DEC,1);
Uart_Printf("\n VIM_HAPI_SetPreviewZoom return : %d ",result);
Uart_Printf("\n FastPreview : %d ",FastPreview);
return 1;
}
/************************************use left and right key capture size chang ************************************
left capture size up ->
right capture size down ->
****************************************************************************************************/
int User_CameraLeft()
{
UINT16 result;
if(g_outindex)
g_outindex--;
#ifdef FASET_PREVIEW
if(g_outindex==0)
FastPreview=1;
else
FastPreview=0;
result=VIM_HAPI_SetPreviewMode(VIM_HAPI_PREVIEW_ON);
#else
result=VIM_HAPI_SetPreviewMode(VIM_HAPI_PREVIEW_ON);
#endif
Uart_Printf("\n VIM_HAPI_SetPreviewMode return : %d ",result);
Uart_Printf("\n FastPreview : %d ",FastPreview);
}
/*
if((g_outindex==VIM_HAPI_HALFPIXEL)&&(MMI_VideoSetting[0].Value==2))
VIM_HAPI_SetCaptureParameter(1280,960);
*/
int User_CameraRight()
{
UINT16 result;
if(g_outindex==0)
g_outindex++;
#ifdef FASET_PREVIEW
if(g_outindex==0)
FastPreview=1;
else
FastPreview=0;
result=VIM_HAPI_SetPreviewMode(VIM_HAPI_PREVIEW_ON);
#else
result=VIM_HAPI_SetPreviewMode(VIM_HAPI_PREVIEW_ON);
#endif
Uart_Printf("\n VIM_HAPI_SetPreviewMode return : %d ",result);
}
/***********************************************************************************************************
user middle key do preview with frame(need creat new nemu do finish this function)
****************************************************************************************************/
int User_CameraMiddle()
{
SpecialEffec++;
if (SpecialEffec>4)
SpecialEffec=0;
VIM_HAPI_SetEffect(SpecialEffec);
return 1;
}
static unsigned int gCaptureSize = 0;
/***********************************************************************************************************
do capture
****************************************************************************************************/
char g_namestr[20];
int User_CameraOK()
{
UINT16 result,num=0;
AviInfo info;
F_SPACE space;
UINT16 w,h;
F_FIND find;
switch(MMI_VideoSetting[0].Value)
{
case 2:
case 1:
info.wFrameRate=4;
w=640;
h=480;
break;
case 0:
info.wFrameRate=8;
w=320;
h=240;
break;
}
switch (mainSelectedItem)
{
case CAMERA_ITEM:
sprintf(g_namestr,"vim%d.jpg",num);
while(1)
{
if(f_findfirst(g_namestr, &find))//have not the same name
break;
num++;
sprintf(g_namestr,"vim%d.jpg",num);
}
fn_getfreespace(&space);
Uart_Printf("\n space.free=%d ",space.free);
if(space.free<0x160000)
{
Uart_Printf("\n can not capture");
return;
}
g_file=f_open(g_namestr,"w+");
result=VIM_HAPI_CaptureStill(VIM_HAPI_ROM_SAVE,g_file,0x160000,0);
Uart_Printf("\n VIM_HAPI_CaptureStill return : %d ",result);
result=f_close(g_file);
Uart_Printf("\n f_close return : %d ",result);
gCaptureSize=VIM_HAPI_GetCaptureLength();
Uart_Printf("\n capture file size : %d ",gCaptureSize);
Beep(0x1);
NU_Sleep(10);
Beep(0x0);
Menu_SavePicture(0,0,0);
break;
case VIDEO_ITEM:
g_file=f_open("video.avi","w+");
Uart_Printf("\n open file ok! ");
MMI_SetCameraInfo(" "," "," ","STOP");
fn_getfreespace(&space);
info.wCaptureWidth=w;
info.wCaptureHeight=h;
Uart_Printf("\n space.free=%d ",space.free);
info.dFileMaxSize=space.free-0x8000;//space.free/2; //qiguai
//info.dFileMaxSize=space.free-0x400000;//space.free/2; //qiguai
//info.wFrameRate=4;
framecounter=0;
CAPTUREEND=0;
Avi_LoadInfo(&info,ROMSAVE,User_CaptureAviCallback);
Avi_StartCapture(g_file);
//Menu_SavePicture(0,0,0);
break;
default:
break;
}
return 1;
}
/////////////////////////savePicture.c/////////////////////////////////////
extern int mainSelectedItem;
void User_CaptureAviCallback(UINT8 Status, UINT32 Byte_Length)
{
UINT8 error;
switch (Status)
{
case VIM_HAPI_ONEFRAME_END:
framecounter++;
g_withframe++;
//Uart_Printf("\n record frame: %d",framecounter);
break;
case VIM_HAPI_CAPTURE_END:
Beep(1);
Delay(50);
Beep(0);
CAPTUREEND=1;
g_withframe=0;
if (mainSelectedItem==VIDEO_ITEM)
Avi_StopCapture();
if(g_file)
{
f_close(g_file);
Uart_Printf("\n close file ok! ");
}
Uart_Printf("\n578 ISR_MarbEncDone!CapFileLength=%x",Byte_Length);
break;
case VIM_HAPI_BUF_ERROR:
CAPTUREEND=1;
Uart_Printf("\n578 ISR_Buf error,ID%d",Byte_Length);
break;
}
}
void User_CaptureOneFrame(UNSIGNED val)
{
UINT16 result;
VIM_HAPI_Timer();
}
int User_InitSavePicture(void)
{
Displaywidth =MAINFRAME_WIDTH_DEFAULT-8;
DisplayHeight =MAINFRAME_WIDTH_DEFAULT+30-4;
JpegOffsetX=JpegOffsetY=0;
DisplayRotation=PanHeightIndex=PanWidthIndex=0;
SpecialEffec=0;
switch (mainSelectedItem)
{
case CAMERA_ITEM:
MMI_SetSavePictureInfo(" ←PAN →","↑ PAN ↓"," SPACIAL ","CANLE");
break;
case VIDEO_ITEM:
MMI_SetSavePictureInfo("←OUT INDEX→","↑ ZOOM ↓","PAUSE","STOP");
break;
}
return 1;
}
int USER_ExitInitSavePicture()
{
UINT16 result;
AviInfo info;
UINT32 TIME;
switch (mainSelectedItem)
{
case CAMERA_ITEM:
MediaPlayerFileType=JPEG_FILE;
g_file=f_open(g_namestr,"r+");
User_DrawLCDBlack(4,4,MAINFRAME_WIDTH_DEFAULT-8,320-4);
VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,MAINFRAME_WIDTH_DEFAULT,32+4);
VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,MAINFRAME_WIDTH_DEFAULT+30,MAINFRAME_WIDTH_DEFAULT,
MAINFRAME_HEIGHT_DEFAULT-MAINFRAME_WIDTH_DEFAULT-30);
result=VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_AFIRST,0);
Uart_Printf("\n VIM_HAPI_SetLCDWorkMode return : %d ",result);
if(g_file)
result=VIM_HAPI_Display_Jpeg(VIM_HAPI_ROM_SAVE, g_file,gCaptureSize, 4,4,MAINFRAME_WIDTH_DEFAULT-8,MAINFRAME_WIDTH_DEFAULT+30-4);
Uart_Printf("\n VIM_HAPI_Display_Jpeg return : %d ",result);
Delay(100);
User_GetPictureSize();
MMI_SetUpdateB0Area(0,0,0,0);
VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_BLONLY,0);
break;
case VIDEO_ITEM:
/* g_file=f_open("video.avi","w+");
Uart_Printf("\n open file ok! ");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -