📄 icetek-dm642-pci.c
字号:
#include "ICETEK-DM642-PCI.h"
#include "math.h"
unsigned char m_dbFrameY[SIMGWIDTH*SIMGHEIGHT];
unsigned char m_dbFrameU[SIMGWIDTH1*SIMGHEIGHT1];
unsigned char m_dbFrameV[SIMGWIDTH1*SIMGHEIGHT1];
unsigned char m_dbTargetImageR[SIMGWIDTH*SIMGHEIGHT];
unsigned char m_dbTargetImageG[SIMGWIDTH*SIMGHEIGHT];
unsigned char m_dbTargetImageB[SIMGWIDTH*SIMGHEIGHT];
unsigned int m_uVideoStatus,m_bFreeze;
void ICETEKDM642PCIBoardInit()
{
m_uVideoStatus=m_bFreeze=0;
}
void ICETEKDM642PCIYUVRGB()
{
int i,j;
int r,g,b,y,u,v;
unsigned char *py,*pu,*pv,*pr,*pg,*pb;
py=m_dbFrameY; pu=m_dbFrameU; pv=m_dbFrameV;
pr=m_dbTargetImageR; pg=m_dbTargetImageG; pb=m_dbTargetImageB;
for ( i=0;i<SIMGHEIGHT;i++ )
{
for ( j=0;j<SIMGWIDTH;j+=2 ) //列720点,360个32bit,
{
u=(*pu); v=(*pv); y=(*py);
u-=128; v-=128;
r=y+1.402*u;
g=y-0.34414*u-0.71414*v;
b=y+1.772*v;
if ( r>255 ) r=255;
else if ( r<0 ) r=0;
if ( g>255 ) g=255;
else if ( g<0 ) g=0;
if ( b>255 ) b=255;
else if ( b<0 ) b=0;
(*pr)=r; pr++;
(*pg)=g; pg++;
(*pb)=b; pb++;
py++; y=(*py);
r=y+1.402*u;
g=y-0.34414*u-0.71414*v;
b=y+1.772*v;
if ( r>255 ) r=255;
else if ( r<0 ) r=0;
if ( g>255 ) g=255;
else if ( g<0 ) g=0;
if ( b>255 ) b=255;
else if ( b<0 ) b=0;
(*pr)=r; pr++;
(*pg)=g; pg++;
(*pb)=b; pb++;
py++; pu++; pv++;
}
}
}
void mInitVPort()
{
unsigned long int ii;
/* Unlock PERCFG through PCFGLOCK */
*((unsigned long *)0x1b3f018) = 0x10c0010c;
/* Enable VP0-VP2, I2C and McASP0 in PERCFG */
*((unsigned long *)0x1b3f000) = 0x78;
/* Read back PERCFG */
ii = *((unsigned long *)0x1b3f000);
/* Wait at least 128 CPU cycles */
EVMDM642_wait(128);
*((unsigned long *)0x1c400c0)=0x8000; //reset vport0
*((unsigned long *)0x1c440c0)=0x8000; //reset vport1
EVMDM642_wait(256);
*((unsigned long *)0x1c400c0)=0x00001; //enable double chn
*((unsigned long *)0x1c440c0)=0x00001; //enable double chn
EVMDM642_wait(256);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -