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

📄 post.c

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 C
📖 第 1 页 / 共 3 页
字号:
 /*****************************************
  NAME: Post.c
  DESC: Post Processor test codes
  HISTORY:  2004.01.31:draft ver 0.0
 *****************************************/
 
#include <string.h>
#include "24a0addr.h"
#include "24a0lib.h"
#include "def.h"
#include "post.h"
#include "lcdlib.h"
#include "imagedef.h"
#include "flash.h"



extern U32 downloadAddress; 
volatile U32 postProcessingDone;
U32 ADDRStartY[4], ADDREndY[4];
U32 ADDRStartCb[4], ADDREndCb[4];
U32 ADDRStartCr[4], ADDREndCr[4];
U32 ADDRStartRGB[4], ADDREndRGB[4];



void Test_SoftwareConver_420(void);

void * post_function[][2]=
{
	(void *)PostDownloadImage,							"Image Downloading                                    ",
	(void *)Test_Post_QCIF_YCbCr420_PQVGA_16B,			"QCIF YCbCr420 to PQVGA 16bpp                 ",
	(void *)Test_Post_QCIF_YCbCr420_PQVGA_24B,			"QCIF YCbCr420 to PQVGA 24bpp                 ",
	(void *)Test_Post_QCIF_YCbCr420_PQVGA_16B_Offset,	"QCIF YCbCr420 to PQVGA 16bpp with offset ",
	(void *)Test_Post_PQVGA_YCbCr420_PQVGA_16B,		"PQVGA YCbCr420 to PQVGA 16bpp              ",
	(void *)Test_Post_PQVGA_YCbCr420_PQVGA_24B,		"PQVGA YCbCr420 to PQVGA 24bpp              ",
	(void *)Test_Post_CIF_YCbCr420_PQVGA_16B,			"CIF YCbCr420 to PQVGA 16bpp                   ",
	(void *)Test_Post_CIF_YCbCr420_PQVGA_24B,			"CIF YCbCr420 to PQVGA 24bpp                   ",
	(void *)Test_Post_CIF_YCbCr420_PQVGA_16B_Offset,	"CIF YCbCr420 to PQVGA 16bpp with offset   ",
	(void *)Test_Post_2M_YCbCr420_PQVGA_16B,			"1600x1200 YCbCr420 to PQVGA 16bpp        ",
	(void *)Test_Post_2M_YCbCr420_PQVGA_24B,			"1600x1200 YCbCr420 to PQVGA 24bpp        ",	
	(void *)Test_Post_YCbCr420_PQVGA_Padded,			"Post Test with Padded Image                       ",
	(void *)Test_Post_YCbCr420_PQVGA_Offset,			"Post Test with Input/Out Offset                     ",
	(void *)Test_Post_RGB_RGB_PQVGA,					"Post Test RGB to RGB                                  ",

	0,0
};

void PostDisplayFunction(void)
{
	int i;
	
	i=0;	
	Uart_Printf("\n\n");
	while(1)	{   //display menu
	    Uart_Printf("%2d:%s",i,post_function[i][1]);
	    i++;
	    if((int)(post_function[i][0])==0) {
			Uart_Printf("\n");
			break;
	    }
	    if((i%2)==0) Uart_Printf("\n");
	}
}

void Ch27_POST(void)
{
	int i;

	Uart_Printf("\n----Test of Post Processor----\n");

	//LCD Initializtion

	Uart_Printf("If you want to test Post Processor, then you must download image to memory before testing\n");
	
	while(1) {
		PostDisplayFunction();
		Uart_Printf("\nSelect(-1 to exit): ");
		i = Uart_GetIntNum();
		if(i==-1) break;
		
		if(i>=0 && (i<(sizeof(post_function)/8)) ) 
	    	( (void (*)(void)) (post_function[i][0]) )();	// execute selected function.
	}

}


void Test_Post_QCIF_YCbCr420_176220_16B(void)
{

	U32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
	U32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
	U32 InFrameBuffer, OutFrameBuffer;
	U32 mode;

	OrgSrcWidth=SrcWidth=QCIF_XSIZE; //no source offset
	OrgSrcHeight=SrcHeight=QCIF_YSIZE; //no source offset
	SrcStartX=SrcStartY=0;
	OrgDstWidth=DstWidth=176; //no destination offset
	OrgDstHeight=DstHeight=220; //no destination offset
	DstStartX=DstStartY=0;
	InFrameBuffer=downloadAddress;
	OutFrameBuffer=LCDFRAMEBUFFERBG1;
	mode=POST_IN_YCBYCR420|POST_OUT_RGB16B;
	
	//LCD Initialization 
	LcdBGInit(MODE_SER_16BIT565_176220|MODE_NO_VIRTUAL_16B);	


	PostInit(OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY, 
			OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY, 
			InFrameBuffer, OutFrameBuffer, mode);

	pISR_LCD_POST=(unsigned)PostIsr;
	rINTMSK &= ~(BIT_LCD_POST);
	rINTSUBMSK &= ~(BIT_SUB_POST);


	PostStartProcessing(0);


	while(!postProcessingDone); //waiting for post-processing done 
	postProcessingDone=0;
	
	LcdEnvidOnOff(1); //LCD Envid On

	rINTSUBMSK |= BIT_SUB_POST;
	rINTMSK |= BIT_LCD_POST;
	
}

void Test_Post_QCIF_YCbCr420_176220_24B(void)
{

	U32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
	U32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
	U32 InFrameBuffer, OutFrameBuffer;
	U32 mode;

	OrgSrcWidth=SrcWidth=QCIF_XSIZE; //no source offset
	OrgSrcHeight=SrcHeight=QCIF_YSIZE; //no source offset
	SrcStartX=SrcStartY=0;
	OrgDstWidth=DstWidth=176; //no destination offset
	OrgDstHeight=DstHeight=220; //no destination offset
	DstStartX=DstStartY=0;
	InFrameBuffer=downloadAddress;
	OutFrameBuffer=LCDFRAMEBUFFERBG1;
	mode=POST_IN_YCBYCR420|POST_OUT_RGB24B;
	
	//LCD Initialization 
	LcdBGInit(MODE_SER_18BIT_176220|MODE_NO_VIRTUAL_24B);	


	PostInit(OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY, 
			OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY, 
			InFrameBuffer, OutFrameBuffer, mode);

	pISR_LCD_POST=(unsigned)PostIsr;
	rINTMSK &= ~(BIT_LCD_POST);
	rINTSUBMSK &= ~(BIT_SUB_POST);

#if 1
	PostStartProcessing(0);
#else
	if(mode&POST_IN_YCBYCR420)
		amount=OrgSrcWidth*OrgSrcHeight*3/2;

	if(mode&POST_OUT_RGB16B)
		amount+=OrgDstWidth*OrgDstHeight*2;
	else if(mode&POST_OUT_RGB24B)
		amount+=OrgDstWidth*OrgDstHeight*4;
	PostStartProcessing(amount, 0);
#endif

	while(!postProcessingDone); //waiting for post-processing done 
	postProcessingDone=0;
	
	LcdEnvidOnOff(1); //LCD Envid On

	rINTSUBMSK |= BIT_SUB_POST;
	rINTMSK |= BIT_LCD_POST;
	
}

void Test_Post_QCIF_YCbCr420_PQVGA_16B(void)
{

	U32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
	U32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
	U32 InFrameBuffer, OutFrameBuffer;
	U32 mode;

	OrgSrcWidth=SrcWidth=QCIF_XSIZE; //no source offset
	OrgSrcHeight=SrcHeight=QCIF_YSIZE; //no source offset
	SrcStartX=SrcStartY=0;
	OrgDstWidth=DstWidth=PQVGA_XSIZE; //no destination offset
	OrgDstHeight=DstHeight=PQVGA_YSIZE; //no destination offset
	DstStartX=DstStartY=0;
	InFrameBuffer=downloadAddress;
	OutFrameBuffer=LCDFRAMEBUFFERBG1;
	mode=POST_IN_YCBYCR420|POST_OUT_RGB16B;
	
	//LCD Initialization 
	LcdBGInit(MODE_PAR_16BIT565_240320|MODE_NO_VIRTUAL_16B);	


	PostInit(OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY, 
			OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY, 
			InFrameBuffer, OutFrameBuffer, mode);

	pISR_LCD_POST=(unsigned)PostIsr;
	rINTMSK &= ~(BIT_LCD_POST);
	rINTSUBMSK &= ~(BIT_SUB_POST);

#if 1
	PostStartProcessing(0);
#else
	if(mode&POST_IN_YCBYCR420)
		amount=OrgSrcWidth*OrgSrcHeight*3/2;

	if(mode&POST_OUT_RGB16B)
		amount+=OrgDstWidth*OrgDstHeight*2;
	else if(mode&POST_OUT_RGB24B)
		amount+=OrgDstWidth*OrgDstHeight*4;
	PostStartProcessing(amount, 0);
#endif

	while(!postProcessingDone); //waiting for post-processing done 
	postProcessingDone=0;
	
	LcdEnvidOnOff(1); //LCD Envid On

	rINTSUBMSK |= BIT_SUB_POST;
	rINTMSK |= BIT_LCD_POST;
	
}

void Test_Post_QCIF_YCbCr420_PQVGA_24B(void)
{

	U32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
	U32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
	U32 InFrameBuffer, OutFrameBuffer;
	U32 mode;

	OrgSrcWidth=SrcWidth=QCIF_XSIZE; //no source offset
	OrgSrcHeight=SrcHeight=QCIF_YSIZE; //no source offset
	SrcStartX=SrcStartY=0;
	OrgDstWidth=DstWidth=PQVGA_XSIZE; //no destination offset
	OrgDstHeight=DstHeight=PQVGA_YSIZE; //no destination offset
	DstStartX=DstStartY=0;
	InFrameBuffer=downloadAddress;
	OutFrameBuffer=LCDFRAMEBUFFERBG1;
	mode=POST_IN_YCBYCR420|POST_OUT_RGB24B;
	
	//LCD Initialization 
	LcdBGInit(MODE_PAR_18BIT_240320|MODE_NO_VIRTUAL_24B);	


	PostInit(OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY, 
			OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY, 
			InFrameBuffer, OutFrameBuffer, mode);

	pISR_LCD_POST=(unsigned)PostIsr;
	rINTMSK &= ~(BIT_LCD_POST);
	rINTSUBMSK &= ~(BIT_SUB_POST);

#if 1
	PostStartProcessing(0);
#else
	if(mode&POST_IN_YCBYCR420)
		amount=OrgSrcWidth*OrgSrcHeight*3/2;

	if(mode&POST_OUT_RGB16B)
		amount+=OrgDstWidth*OrgDstHeight*2;
	else if(mode&POST_OUT_RGB24B)
		amount+=OrgDstWidth*OrgDstHeight*4;
	PostStartProcessing(amount, 0);
#endif

	while(!postProcessingDone); //waiting for post-processing done 
	postProcessingDone=0;
	
	LcdEnvidOnOff(1); //LCD Envid On

	rINTSUBMSK |= BIT_SUB_POST;
	rINTMSK |= BIT_LCD_POST;
	
}

void Test_Post_PQVGA_YCbCr420_PQVGA_16B(void)
{

	U32 i;
	U32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
	U32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
	U32 InFrameBuffer, OutFrameBuffer;
	U32 mode;

	OrgSrcWidth=SrcWidth=PQVGA_XSIZE; //no source offset
	OrgSrcHeight=SrcHeight=PQVGA_YSIZE; //no source offset
	SrcStartX=SrcStartY=0;
	OrgDstWidth=DstWidth=PQVGA_XSIZE; //no destination offset
	OrgDstHeight=DstHeight=PQVGA_YSIZE; //no destination offset
	DstStartX=DstStartY=0;
	InFrameBuffer=downloadAddress;
	OutFrameBuffer=LCDFRAMEBUFFERBG1;

	mode=0;
	Uart_Printf("Select Input format of Post Processor\n");
	Uart_Printf("0:YCBYCR420, 1:YCBYCR422, 2:CBYCRY\n");
	i=Uart_GetIntNum();
	switch(i) {
		case 0:
			mode|=POST_IN_YCBYCR420;
			break;
		case 1:
			mode|=POST_IN_YCBYCR422;
			break;
		case 2:
			mode|=POST_IN_CBYCRY422;
			break;			
		default:			
			mode|=POST_IN_YCBYCR420;
			break;
	}	

	Uart_Printf("Select Output format of Post Processor\n");
	Uart_Printf("0:RG16, 1:RGB24\n");
	i=Uart_GetIntNum();
	switch(i) {
		case 0:
			mode|=POST_OUT_RGB16B;
			LcdBGInit(MODE_PAR_16BIT565_240320|MODE_NO_VIRTUAL_16B);
			break;
		case 1:
			mode|=POST_OUT_RGB24B;
			LcdBGInit(MODE_PAR_18BIT_240320|MODE_NO_VIRTUAL_24B);
			break;
		default:			
			mode|=POST_OUT_RGB16B;
			LcdBGInit(MODE_PAR_16BIT565_240320|MODE_NO_VIRTUAL_16B);
			break;
	}
	
	//mode=POST_IN_YCBYCR420|POST_OUT_RGB16B;
	
	//LCD Initialization 
	//LcdBGInit(MODE_PAR_16BIT565_240320|MODE_NO_VIRTUAL_16B);	


	PostInit(OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY, 
			OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY, 
			InFrameBuffer, OutFrameBuffer, mode);

	pISR_LCD_POST=(unsigned)PostIsr;
	rINTMSK &= ~(BIT_LCD_POST);
	rINTSUBMSK &= ~(BIT_SUB_POST);

	Uart_Printf("rMODE:0x%x\n", rMODE);

#if 1
	PostStartProcessing(0);
#else
	if(mode&POST_IN_YCBYCR420)
		amount=OrgSrcWidth*OrgSrcHeight*3/2;

	if(mode&POST_OUT_RGB16B)
		amount+=OrgDstWidth*OrgDstHeight*2;
	else if(mode&POST_OUT_RGB24B)
		amount+=OrgDstWidth*OrgDstHeight*4;
	PostStartProcessing(amount, 0);
#endif

	while(!postProcessingDone); //waiting for post-processing done 
	postProcessingDone=0;
	
	LcdEnvidOnOff(1); //LCD Envid On

	rINTSUBMSK |= BIT_SUB_POST;
	rINTMSK |= BIT_LCD_POST;
	
}

void Test_Post_PQVGA_YCbCr420_PQVGA_24B(void)
{

	U32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
	U32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
	U32 InFrameBuffer, OutFrameBuffer;
	U32 mode;

	OrgSrcWidth=SrcWidth=PQVGA_XSIZE; //no source offset
	OrgSrcHeight=SrcHeight=PQVGA_YSIZE; //no source offset
	SrcStartX=SrcStartY=0;
	OrgDstWidth=DstWidth=PQVGA_XSIZE; //no destination offset
	OrgDstHeight=DstHeight=PQVGA_YSIZE; //no destination offset
	DstStartX=DstStartY=0;
	InFrameBuffer=downloadAddress;
	OutFrameBuffer=LCDFRAMEBUFFERBG1;
	mode=POST_IN_YCBYCR420|POST_OUT_RGB24B;
	
	//LCD Initialization 
	LcdBGInit(MODE_PAR_18BIT_240320|MODE_NO_VIRTUAL_24B);	


	PostInit(OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY, 
			OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY, 
			InFrameBuffer, OutFrameBuffer, mode);

	pISR_LCD_POST=(unsigned)PostIsr;
	rINTMSK &= ~(BIT_LCD_POST);
	rINTSUBMSK &= ~(BIT_SUB_POST);

#if 1
	PostStartProcessing(0);
#else
	if(mode&POST_IN_YCBYCR420)
		amount=OrgSrcWidth*OrgSrcHeight*3/2;

	if(mode&POST_OUT_RGB16B)
		amount+=OrgDstWidth*OrgDstHeight*2;
	else if(mode&POST_OUT_RGB24B)
		amount+=OrgDstWidth*OrgDstHeight*4;
	PostStartProcessing(amount, 0);
#endif

	while(!postProcessingDone); //waiting for post-processing done 
	postProcessingDone=0;
	
	LcdEnvidOnOff(1); //LCD Envid On

	rINTSUBMSK |= BIT_SUB_POST;
	rINTMSK |= BIT_LCD_POST;
	
}


void Test_Post_CIF_YCbCr420_PQVGA_16B(void)
{

	U32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
	U32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
	U32 InFrameBuffer, OutFrameBuffer;
	U32 mode;

	OrgSrcWidth=SrcWidth=CIF_XSIZE; //no source offset
	OrgSrcHeight=SrcHeight=CIF_YSIZE; //no source offset
	SrcStartX=SrcStartY=0;
	OrgDstWidth=DstWidth=PQVGA_XSIZE; //no destination offset
	OrgDstHeight=DstHeight=PQVGA_YSIZE; //no destination offset
	DstStartX=DstStartY=0;
	InFrameBuffer=downloadAddress;
	OutFrameBuffer=LCDFRAMEBUFFERBG1;
	mode=POST_IN_YCBYCR420|POST_OUT_RGB16B;
	
	//LCD Initialization 
	LcdBGInit(MODE_PAR_16BIT565_240320|MODE_NO_VIRTUAL_16B);	


	PostInit(OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY, 
			OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY, 
			InFrameBuffer, OutFrameBuffer, mode);

	pISR_LCD_POST=(unsigned)PostIsr;
	rINTMSK &= ~(BIT_LCD_POST);
	rINTSUBMSK &= ~(BIT_SUB_POST);

#if 1
	PostStartProcessing(0);
#else
	if(mode&POST_IN_YCBYCR420)
		amount=OrgSrcWidth*OrgSrcHeight*3/2;

⌨️ 快捷键说明

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