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

📄 .#v5hdemo.c.1.16

📁 中芯微VC0528测试程序
💻 16
📖 第 1 页 / 共 2 页
字号:

#include "V5Hdemo.h"
#include <string.h>
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\timer.h"
#include "..\inc\picture.h"

#include "..\..\vc0528rdk\vim_high_api.h"
#include "..\..\vc0528demo\inc\thin_usr.h"
#include "..\..\vc0528demo\inc\fat_thin.h"
#include "..\..\vc0528rdk\VIM_AVI_Recorder.h"
extern void Delay(int time);
extern F_FILE *g_file;

UINT8 JpegBuf[0x160000];
UINT32 Jpeg_Length=0;
UINT8 ThumbBuf[0x1000];
UINT8 YUVBuf[0x15000];
UINT8 BmpBuf[176*220*2];
UINT8 VideoBuf[0x10000];
UINT32 Video_Length=0;
UINT32 Video_FrameCount=0;
extern UINT8 TestJpegData[];

char* V5HDEMO_GetFile(char *string,unsigned long *length)
{
	if(strstr(string,"jpeg_ram"))
	{
		*length=Jpeg_Length;
		return (char*)JpegBuf;
	}
	else if(strstr(string,"video_ram"))
	{
		*length=Video_Length;
		return (char*)VideoBuf;
	}	
	else if(strstr(string,"bmp_ram"))
	{
		*length=128*160*2;
		return (char*)BmpBuf;
	}	
	else if(strstr(string,"yuv_ram"))
	{
		*length=128*160*2;
		return (char*)YUVBuf;
	}	
	return 0;
}
char* V5HDEMO_DownFile(char *string)
{
	if(strstr(string,"jpeg_ram"))
	{
		return (char*)JpegBuf;
	}
	else
	if(strstr(string,"video_ram"))
	{
		return (char*)VideoBuf;
	}	
	else
	if(strstr(string,"bmp_ram"))
	{
		return (char*)BmpBuf;
	}	
	return 0;
}
void V5HDEMO_DrawRGB( int startx, int starty,int Width,int Height)
{
	VIM_HAPI_DrawLCDRctngl(VIM_HAPI_B0_LAYER,startx,starty,Width,Height,(UINT8*)ThumbBuf);	
	VIM_HAPI_UpdateLCD(VIM_HAPI_B0_LAYER,startx,starty,Width,Height);
	
}

#define DECODE_AUTO_BASE	10
UINT32 fileIndex=1;
extern unsigned char JPEG_128x160_422[];
 void V5HDEMO_Decode(int Width,int Height, int DecodeMode)
{
	UINT8  mode = VIM_HAPI_GetWorkMode();
	UINT16 Widthpic,Heightpic;
UINT16 result;
#if 0						//decode file in ROM
	F_FILE *file;
	const char name[200];
	if (fileIndex>2) 
	 	 fileIndex=1;	
	sprintf(name,"/%d.jpg",fileIndex);
	file=f_open(name,"r+");
	if(file==0)
		Uart_Printf("\n open error");
	DecodeMode=VIM_DECODE_RESIZE_TO_RGB;
 #endif
       
	VIM_HAPI_SetLCDSize(VIM_HAPI_B1_LAYER,0,0,0,0);	
	VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,176,220);
	VIM_HAPI_SetLCDMirror(0,VIM_HAPI_B0_LAYER);
	memset(BmpBuf,0,Width*Height*2);
	switch (DecodeMode)
	{
	case VIM_DECODE_RESIZE_TO_RGB:
#if 0
			result=VIM_HAPI_Decode_Jpeg(VIM_HAPI_ROM_SAVE,VIM_DECODE_RESIZE_TO_RGB,file,BmpBuf,0xfffffff, 128*160*2,Width,Height);
			Uart_Printf("\n VIM_HAPI_Decode_Jpeg result = %d\n", result);
#else
			//JpegBuf JPEG_128x160_422
			VIM_HAPI_Decode_Jpeg(VIM_HAPI_RAM_SAVE,VIM_DECODE_RESIZE_TO_RGB,JpegBuf,BmpBuf,0x200000, 176*220*2,Width,Height);
#endif
		break;
	case VIM_DECODE_RESIZE_TO_YUV:
		VIM_HAPI_Decode_Jpeg(VIM_HAPI_RAM_SAVE,VIM_DECODE_RESIZE_TO_YUV,JpegBuf, YUVBuf,0x200000, 0x15000,Width,Height);
		VIM_HAPI_YuvToRgb(YUVBuf,BmpBuf,Width,Height,VIM_CON_UYVY_565);
		break;
	case VIM_DECODE_WITHFRAME_TO_YUV:
		VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,128,160,0);
		VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,40,40,0xf800);
		VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_OVERLAY,0);
		VIM_HAPI_Decode_Jpeg(VIM_HAPI_RAM_SAVE,VIM_DECODE_WITHFRAME_TO_YUV,JpegBuf, YUVBuf,0x200000, 0x15000,Width,Height);
		VIM_HAPI_YuvToRgb(YUVBuf,BmpBuf,Width,Height,VIM_CON_UYVY_565);
		break;
	case VIM_DECODE_WITHFRAME_TO_RGB:
		VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,128,160,0);
		VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,40,40,0xf800);
		VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_OVERLAY,0);
		VIM_HAPI_Decode_Jpeg(VIM_HAPI_RAM_SAVE,VIM_DECODE_WITHFRAME_TO_RGB,JpegBuf, BmpBuf,0x200000, 128*160*2,Width,Height);
		break;
	case VIM_DECODE_RESIZE_TO_RGB+DECODE_AUTO_BASE:
		VIM_HAPI_Decode_Jpeg(VIM_HAPI_RAM_SAVE,VIM_DECODE_RESIZE_TO_RGB,NULL, BmpBuf,0x200000, 128*160*2,Width,Height);

		break;
	case VIM_DECODE_RESIZE_TO_YUV+DECODE_AUTO_BASE:
		VIM_HAPI_Decode_Jpeg(VIM_HAPI_RAM_SAVE,VIM_DECODE_RESIZE_TO_YUV,NULL, YUVBuf,0x200000, 0x15000,Width,Height);
		VIM_HAPI_YuvToRgb(YUVBuf,BmpBuf,Width,Height,VIM_CON_UYVY_565);
		break;
	case VIM_DECODE_WITHFRAME_TO_YUV+DECODE_AUTO_BASE:
		VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,128,160,0);
		VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,40,40,0xf800);
		VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_OVERLAY,0);
		VIM_HAPI_Decode_Jpeg(VIM_HAPI_RAM_SAVE,VIM_DECODE_WITHFRAME_TO_YUV,NULL, YUVBuf,0x200000, 128*160*2,Width,Height);
		VIM_HAPI_YuvToRgb(YUVBuf,BmpBuf,Width,Height,VIM_CON_UYVY_565);
		break;
	case VIM_DECODE_WITHFRAME_TO_RGB+DECODE_AUTO_BASE:
		VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,128,160,0);
		VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,40,40,0xf800);
		VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_OVERLAY,0);
		VIM_HAPI_Decode_Jpeg(VIM_HAPI_RAM_SAVE,VIM_DECODE_WITHFRAME_TO_RGB,NULL, BmpBuf,0x200000, 128*160*2,Width,Height);
		break;
	}
	
	VIM_HAPI_SetWorkMode(VIM_HAPI_MODE_PHOTOPROCESS);
	VIM_HAPI_SetLCDWorkMode(VIM_HAPI_LCDMODE_BLONLY,0);
	VIM_HAPI_SetLCDColordep(VIM_HAPI_COLORDEP_16BIT);
	VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,128,160,0);
	VIM_HAPI_UpdateLCD(VIM_HAPI_B0_LAYER,0,0,128,160);
	Delay(100);
	VIM_HAPI_GetPictureSize(&Widthpic,&Heightpic);
	if(Widthpic<=Width)
		Width=Widthpic;
	if(Heightpic<=Height)
		Height=Heightpic;	
	
	VIM_HAPI_DrawLCDRctngl(VIM_HAPI_B0_LAYER,0,0,Width,Height,BmpBuf);	
	VIM_HAPI_UpdateLCD(VIM_HAPI_B0_LAYER,0,0,Width,Height);
	Delay(1000);
	VIM_HAPI_SetWorkMode(mode);
#if 0
	f_close(file);
	Uart_Printf("\n file %s display findish", name);
	fileIndex=fileIndex+1;
#endif
}
  void V5HDEMO_Encode(int Width,int Height)
{
/*UINT32 i=0;
	memset(YUVBuf,0,0x15000);
	for(i=0;i<(128*160*2)/4;i++)
		{
		YUVBuf[i*4]=84;//u
		YUVBuf[i*4+1]=76;//y
		YUVBuf[i*4+2]=255;//v
		YUVBuf[i*4+3]=76;//y
		}*/
	//memset(YUVBuf,0,0x15000);
	
	//V5H_Encode_Jpeg(YUVBuf,JpegBuf,Width*Height*2,0x10000,Width,Height);
	//Jpeg_Length=V5H_Capture_GetLength();
}
UINT8 CAPTUREEND;
void V5HDEMO_CaptureMulitiCallback(UINT8 Status, UINT32 Byte_Length)
{
	switch (Status)
	{
	case VIM_HAPI_ONEFRAME_END:
		Beep(1);
		Delay(100);
		Beep(0);
		break;
	case VIM_HAPI_CAPTURE_END:
		Beep(1);
		Delay(50);
		Beep(0);
		f_close(g_file);
		CAPTUREEND=1;
		Jpeg_Length=Byte_Length;
		Uart_Printf("\n568 ISR_MarbEncDone!CapFileLength=%d",Byte_Length);
		break;
	//case V5H_FIFO_FULL:
		//Uart_Printf("\n568 ISR_MarbFifoCnt!CapFileLength=%x",Byte_Length);
		//break;
	case VIM_HAPI_BUF_ERROR:
		CAPTUREEND=1;
		f_close(g_file);
		Uart_Printf("\n568 ISR_Buf error,ID%d",Byte_Length);
		break;
	}
}
void V5HDEMO_CaptureAviCallback(UINT8 Status, UINT32 Byte_Length)
{
UINT8 error;
	switch (Status)
	{
	case VIM_HAPI_ONEFRAME_END:

		break;
	case VIM_HAPI_CAPTURE_END:
		Beep(1);
		Delay(50);
		Beep(0);
		Uart_Printf("\n file id =0x%x",g_file);
		error=f_close(g_file);
		if(error)
			Uart_Printf("\n close file error=%d",error);
		Uart_Printf("\n578 avi TIME=%d",ReturnTime());
		CAPTUREEND=1;
		Jpeg_Length=Byte_Length;
		Uart_Printf("\n578 ISR_MarbEncDone!CapFileLength=%x",Byte_Length);
		break;
	//case V5H_FIFO_FULL:
		//Uart_Printf("\n568 ISR_MarbFifoCnt!CapFileLength=%x",Byte_Length);
		//break;
	case VIM_HAPI_BUF_ERROR:
		CAPTUREEND=1;
		f_close(g_file);
		Uart_Printf("\n568 ISR_Buf error,ID%d",Byte_Length);
		break;
	}
}
void V5HDEMO_CaptureStill(void)
{
	UINT16 count=0xfff,Result,num=0;

#if 0
	Jpeg_Length=0;
	CAPTUREEND=0;
	Result=VIM_HAPI_CaptureStill(VIM_HAPI_RAM_SAVE,JpegBuf,0x160000,0);
	Jpeg_Length=VIM_HAPI_GetCaptureLength();
	if(Result)
		Uart_Printf("\n568 ISR_Buf error=%d",Result);
	else
		Uart_Printf("\nlength =%d",Jpeg_Length);
#else
	
	char g_namestr[20];
	
	F_FIND find;
	InitMalloc();
			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);
			}
			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);
			Jpeg_Length=VIM_HAPI_GetCaptureLength();
			Uart_Printf("\n capture file size : %d  ",Jpeg_Length);
			Beep(0x1);
			Delay(10);
			Beep(0x0);

	/*Jpeg_Length=0;
	CAPTUREEND=0;
	g_file=f_open("1.jpg","w+");//
	if(g_file==0)
		Uart_Printf("\n open error");
	else
		Result=VIM_HAPI_CaptureStill(VIM_HAPI_ROM_SAVE,g_file,0x160000,V5HDEMO_CaptureMulitiCallback);
	if(Result)
		Uart_Printf("\n568 ISR_Buf error=%d",Result);
	//Jpeg_Length=VIM_HAPI_GetCaptureLength();
*/
#endif
}

void DrawBack(void)
{
	VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,240,160);
	VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,0,240,160,0);
	VIM_HAPI_UpdateLCD(VIM_HAPI_B0_LAYER,0,0,240,160);
	Delay(50);
	VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,160,240,160);
	VIM_HAPI_DrawLCDPureColor(VIM_HAPI_B0_LAYER,0,160,240,160,0);
	VIM_HAPI_UpdateLCD(VIM_HAPI_B0_LAYER,0,160,240,160);
	Delay(50);
	VIM_HAPI_SetLCDSize(VIM_HAPI_B0_LAYER,0,0,0,0);
}
void V5HDEMO_DisplayRomAuto(const char * name)
{
	UINT16 count=0xfff,Result,num=0;


		char g_namestr[20];
	F_FIND find;

			if(f_chdir(name))
				return;
			if(f_findfirst("*.*", &find))
				return;	
			
			g_file=f_open(find.filename,"r+");
		
			DrawBack();
			VIM_HAPI_SetLCDMirror(VIM_HAPI_ROTATE_0,VIM_HAPI_A_LAYER);
			VIM_HAPI_Display_Jpeg(VIM_HAPI_ROM_SAVE,g_file,0xffffff,0,0,240,320);
			Delay(1000);
			DrawBack();
			VIM_HAPI_SetLCDMirror(VIM_HAPI_ROTATE_90,VIM_HAPI_A_LAYER);
			VIM_HAPI_Display_Jpeg(VIM_HAPI_ROM_SAVE,g_file,0xffffff,0,0,320,240);
			Delay(1000);
			DrawBack();
			VIM_HAPI_SetLCDMirror(VIM_HAPI_ROTATE_180,VIM_HAPI_A_LAYER);
			VIM_HAPI_Display_Jpeg(VIM_HAPI_ROM_SAVE,g_file,0xffffff,0,0,240,320);
			Delay(1000);
			DrawBack();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -