📄 dm642main.c
字号:
/*----------------------------------------------------------*/
/*初始化Video Port*/
/*将Vedio Port设为采集输入,以下初始化顺序依次为u4通道,u2通道,u7通道,u9通道*/
portNumber = 1;
vpHchannel1 = bt656_8bit_ncfc(portNumber);//打开一个VP口,进行采集,
//并配置相应DMA通道,函数体详见vportcap.c中子函数
bt656_capture_start(vpHchannel1);
/*等待第一帧数据采集完成*/
while(capNewFrame == 0){}
/*将数据存入显示缓冲区,并清采集完成的标志*/
capNewFrame =0;
VP_close(vpHchannel1);//采集完成,关闭VP口
for(i=0;i<numLines;i++)
{
/*传送Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(disYbuffer + i * numPixels),
numPixels);
/*传送Cb缓冲区*/
DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)),
(void *)(disCbbuffer + i * (numPixels >> 1)),
numPixels>>1);
/*传送Cr缓冲区*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)),
(void *)(disCrbuffer + i * (numPixels >> 1)),
numPixels>>1);
}
portNumber1 = 0;
asm( " nop " );
asm( " nop " );
vpHchannel0 = bt656_8bit_ncfc(portNumber1);
bt656_capture_start(vpHchannel0);
/*等待第一帧数据采集完成*/
while(capNewFrame1 == 0){}
/*将数据存入显示缓冲区,并清采集完成的标志*/
capNewFrame1 =0;
VP_close(vpHchannel0);
//VP_FSETH(vpHchannel0, VCACTL, VCEN, 0x00);
//VP_FSETH(vpHchannel0, VCACTL, BLKCAP,0x01);
for(i=0;i<numLines;i++)
{
/*传送Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(disYbuffer1 + i * numPixels),
numPixels);
/*传送Cb缓冲区*/
DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)),
(void *)(disCbbuffer1 + i * (numPixels >> 1)),
numPixels>>1);
/*传送Cr缓冲区*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)),
(void *)(disCrbuffer1 + i * (numPixels >> 1)),
numPixels>>1);
}
portNumber2 = 2;
WV=0;
vpHchannel2 = bt656_8bit_ncfc(portNumber2);
bt656_capture_start(vpHchannel2);
/*等待第一帧数据采集完成*/
while(capNewFrame2 == 0){}
/*将数据存入显示缓冲区,并清采集完成的标志*/
capNewFrame2 =0;
VP_close(vpHchannel2);
//VP_FSETH(vpHchannel0, VCACTL, VCEN, 0x00);
//VP_FSETH(vpHchannel0, VCACTL, BLKCAP,0x01);
for(i=0;i<numLines;i++)
{
/*传送Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(disYbuffer2 + i * numPixels),
numPixels);
/*传送Cb缓冲区*/
DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)),
(void *)(disCbbuffer2 + i * (numPixels >> 1)),
numPixels>>1);
/*传送Cr缓冲区*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)),
(void *)(disCrbuffer2 + i * (numPixels >> 1)),
numPixels>>1);
}
portNumber2 = 2;
WV=1;
vpHchannel2 = bt656_8bit_ncfcb(portNumber2);
bt656_capture_start(vpHchannel2);
/*等待第一帧数据采集完成*/
while(capNewFrame3 == 0){}
/*将数据存入显示缓冲区,并清采集完成的标志*/
capNewFrame3 =0;
VP_close(vpHchannel2);
//VP_FSETH(vpHchannel0, VCACTL, VCEN, 0x00);
//VP_FSETH(vpHchannel0, VCACTL, BLKCAP,0x01);
for(i=0;i<numLines;i++)
{
/*传送Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(disYbuffer3 + i * numPixels),
numPixels);
/*传送Cb缓冲区*/
DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)),
(void *)(disCbbuffer3 + i * (numPixels >> 1)),
numPixels>>1);
/*传送Cr缓冲区*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)),
(void *)(disCrbuffer3 + i * (numPixels >> 1)),
numPixels>>1);
}
/*启动显示模块*/
//bt656_display_start(vpHchannel0);
/*建立采集的循环*/
ED=1;
for(;;)
{
portNumber = 1;
vpHchannel1 = bt656_8bit_ncfc(portNumber);
bt656_capture_start(vpHchannel1);
while(capNewFrame == 0){}
if(capNewFrame == 1)
{
VP_close(vpHchannel1);
/*将数据装入显示缓冲区,并清采集完成的标志*/
capNewFrame =0;
//disNewFrame =0;
for(i=0;i<numLines;i++)
{
/*传送Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(disYbuffer + i * numPixels),
numPixels);
/*传送Cb缓冲区*/
DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)),
(void *)(disCbbuffer + i * (numPixels >> 1)),
numPixels>>1);
/*传送Cr缓冲区*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)),
(void *)(disCrbuffer + i * (numPixels >> 1)),
numPixels>>1);
}
}
portNumber1 = 0;
vpHchannel0 = bt656_8bit_ncfc(portNumber1);
bt656_capture_start(vpHchannel0);
while(capNewFrame1 == 0){}
if(capNewFrame1 == 1)
{
VP_close(vpHchannel0);
/*将数据装入显示缓冲区,并清采集完成的标志*/
capNewFrame1 =0;
//disNewFrame =0;
for(i=0;i<numLines;i++)
{
/*传送Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(disYbuffer1 + i * numPixels),
numPixels);
/*传送Cb缓冲区*/
DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)),
(void *)(disCbbuffer1 + i * (numPixels >> 1)),
numPixels>>1);
/*传送Cr缓冲区*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)),
(void *)(disCrbuffer1 + i * (numPixels >> 1)),
numPixels>>1);
}
}
portNumber2 = 2;
WV=0;
vpHchannel2 = bt656_8bit_ncfc(portNumber2);
bt656_capture_start(vpHchannel2);
while(capNewFrame2 == 0){}
if(capNewFrame2 == 1)
{
VP_close(vpHchannel2);
/*将数据装入显示缓冲区,并清采集完成的标志*/
capNewFrame2 =0;
//disNewFrame =0;
for(i=0;i<numLines;i++)
{
/*传送Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(disYbuffer2 + i * numPixels),
numPixels);
/*传送Cb缓冲区*/
DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)),
(void *)(disCbbuffer2 + i * (numPixels >> 1)),
numPixels>>1);
/*传送Cr缓冲区*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)),
(void *)(disCrbuffer2 + i * (numPixels >> 1)),
numPixels>>1);
}
}
portNumber2 = 2;
WV=1;
vpHchannel2 = bt656_8bit_ncfcb(portNumber2);
bt656_capture_start(vpHchannel2);
while(capNewFrame3 == 0){}
if(capNewFrame3 == 1)
{
VP_close(vpHchannel2);
/*将数据装入显示缓冲区,并清采集完成的标志*/
capNewFrame3 =0;
//disNewFrame =0;
for(i=0;i<numLines;i++)
{
/*传送Y缓冲区*/
DAT_copy((void *)(capYbuffer + i * numPixels),
(void *)(disYbuffer3 + i * numPixels),
numPixels);
/*传送Cb缓冲区*/
DAT_copy((void *)(capCbbuffer + i * (numPixels >> 1)),
(void *)(disCbbuffer3 + i * (numPixels >> 1)),
numPixels>>1);
/*传送Cr缓冲区*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)),
(void *)(disCrbuffer3 + i * (numPixels >> 1)),
numPixels>>1);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -