📄 post.c
字号:
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_24B(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_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_QCIF_YCbCr420_PQVGA_16B_Offset(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;
while(!postProcessingDone);
//LCD Envid On have to be executed in this point.
Uart_Printf("Test of Zoom In/Out, PIP Operation\n");
Uart_Printf("w.z.s.a for Zoom in/out\n");
Uart_Printf("r.c.f.d for Coordination of zoomed image\n");
Uart_Printf("y.b.h.g for PIP\n");
Uart_Printf("i.m.k.j for Coordination of PIP image\n");
while(1) {
// Code is needed.......
}
rINTSUBMSK |= BIT_SUB_POST;
rINTMSK |= BIT_LCD_POST;
}
void Test_Post_2M_YCbCr420_PQVGA_16B(void)
{
U32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
U32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
U32 InFrameBuffer, OutFrameBuffer;
U32 mode;
U32 i;
OrgSrcWidth=SrcWidth=1600; //no source offset
OrgSrcHeight=SrcHeight=1200; //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;
InFrameBuffer=0x12000000;
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
while(1) {
Uart_Printf("0: Disable Dithering, 1: Enable Dithering \n");
i=Uart_GetIntNum();
if(i==0) rLCDDITHCON &= ~(1);
else if(i==1) rLCDDITHCON =(3<<5)|(1<<3)|(3<<1)|(1);
Uart_Printf("rLCDDITHCON:0x%x\n", rLCDDITHCON);
}
rINTSUBMSK |= BIT_SUB_POST;
rINTMSK |= BIT_LCD_POST;
}
void Test_Post_2M_YCbCr420_PQVGA_24B(void)
{
U32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
U32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
U32 InFrameBuffer, OutFrameBuffer;
U32 mode;
U32 i;
OrgSrcWidth=SrcWidth=1600; //no source offset
OrgSrcHeight=SrcHeight=1200; //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;
InFrameBuffer=0x12000000;
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
while(1) {
Uart_Printf("0: Disable Dithering, 1: Enable Dithering \n");
i=Uart_GetIntNum();
if(i==0) rLCDDITHCON &= ~(1);
else if(i==1) rLCDDITHCON =(1<<5)|(1<<3)|(1<<1)|(1);
Uart_Printf("rLCDDITHCON:0x%x\n", rLCDDITHCON);
}
rINTSUBMSK |= BIT_SUB_POST;
rINTMSK |= BIT_LCD_POST;
}
void Test_Post_CIF_YCbCr420_PQVGA_16B_Offset(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;
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;
while(!postProcessingDone);
//LCD Envid On have to be executed in this point.
Uart_Printf("Test of Zoom In/Out, PIP Operation\n");
Uart_Printf("w.z.s.a for Zoom in/out\n");
Uart_Printf("r.c.f.d for Coordination of zoomed image\n");
Uart_Printf("y.b.h.g for PIP\n");
Uart_Printf("i.m.k.j for Coordination of PIP image\n");
while(1) {
// Code is needed.......
}
rINTSUBMSK |= BIT_SUB_POST;
rINTMSK |= BIT_LCD_POST;
}
/*
void PostEnvidOn(void)
{
rMODE|=(1<<5);
}
*/
void Test_Post_YCbCr420_PQVGA_Padded(void)
{
U32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
U32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
U32 InFrameBuffer, OutFrameBuffer;
U32 mode;
U32 i;
Uart_Printf("Select size of input image[0:QCIF, 1:CIF]:");
i=Uart_GetIntNum();
if(i==0) {
SrcWidth=QCIF_XSIZE;
SrcHeight=QCIF_YSIZE;
OrgSrcWidth=QCIF_XSIZE+32;
OrgSrcHeight=QCIF_YSIZE+32;
}
else if(i==1) {
SrcWidth=CIF_XSIZE;
SrcHeight=CIF_YSIZE;
OrgSrcWidth=CIF_XSIZE+32;
OrgSrcHeight=CIF_YSIZE+32;
}
Uart_Printf("\n");
Uart_Printf("Select bpp of output image[0:16B, 1:24B]:");
i=Uart_GetIntNum();
if(i==0) {
mode=POST_IN_YCBYCR420|POST_OUT_RGB16B;
LcdBGInit(MODE_PAR_16BIT565_240320|MODE_NO_VIRTUAL_16B);
}
else if(i==1) {
mode=POST_IN_YCBYCR420|POST_OUT_RGB24B;
LcdBGInit(MODE_PAR_18BIT_240320|MODE_NO_VIRTUAL_24B);
}
// OrgSrcWidth=SrcWidth=CIF_XSIZE; //no source offset
// OrgSrcHeight=SrcHeight=CIF_YSIZE; //no source offset
SrcStartX=SrcStartY=16;
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_YCbCr420_PQVGA_Offset(void)
{
S32 OrgSrcWidth, OrgSrcHeight, SrcWidth, SrcHeight, SrcStartX, SrcStartY;
S32 OrgDstWidth, OrgDstHeight, DstWidth, DstHeight, DstStartX, DstStartY;
U32 InFrameBuffer, OutFrameBuffer;
U32 mode;
U32 i;
Uart_Printf("Select size of input image[0:QCIF, 1:CIF]:");
i=Uart_GetIntNum();
if(i==0) {
OrgSrcWidth=QCIF_XSIZE;
OrgSrcHeight=QCIF_YSIZE;
}
else if(i==1) {
OrgSrcWidth=CIF_XSIZE;
OrgSrcHeight=CIF_YSIZE;
}
else {
Uart_Printf("Error is occured during seleting size of input image\n");
return;
}
Uart_Printf("\n");
Uart_Printf("Select bpp of output image[0:16B, 1:24B]:");
i=Uart_GetIntNum();
if(i==0) {
mode=POST_IN_YCBYCR420|POST_OUT_RGB16B;
LcdBGInit(MODE_PAR_16BIT565_240320|MODE_NO_VIRTUAL_16B);
GlibInit(MODE_PAR_16BIT565_240320, BGBUFFER1);
}
else if(i==1) {
mode=POST_IN_YCBYCR420|POST_OUT_RGB24B;
LcdBGInit(MODE_PAR_18BIT_240320|MODE_NO_VIRTUAL_24B);
GlibInit(MODE_PAR_18BIT_240320, BGBUFFER1);
}
else {
Uart_Printf("Error is occured during seleting bpp of input image\n");
return;
}
SrcWidth=OrgSrcWidth;
SrcHeight=OrgSrcHeight;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -