📄 tskprocess修正版.c
字号:
/*
* Copyright 2004 by SEED Incorporated.
* All rights reserved. Property of SEED Incorporated.
* Restricted rights to use, duplicate or disclose this code are
* granted through contract.
*
*/
/* "@(#) DDK 1.11.00.00 23-12-04 (ddk-b13)" */
#include <vport.h>
#include <vportcap.h>
#include <tvp51xx.h>
#include <csl_edma.h>
#include <fvid.h>
#include <csl_dat.h>
#include <csl_cache.h>
#include <scom.h>
//#include <GlobalDef.h>
//#include <dwcif.h>
#include <c6x.h>
#include "appData.h"
#include "seeddm642.h"
#include "seedvpm642cfg.h"
#include "seedvpm642_vcapparams.h"
#include "seedvpm642_vdisparams.h"
#include "seedvpm642_tskprocess.h"
#pragma DATA_ALIGN(_srcW1, 8);
#pragma DATA_ALIGN(_srcZ1, 8);
#pragma DATA_ALIGN(_srcW2, 8);
#pragma DATA_ALIGN(_srcZ2, 8);
#pragma DATA_SECTION(_srcW1,".spec_data")
#pragma DATA_SECTION(_srcZ1,".spec_data")
#pragma DATA_SECTION(_srcW2,".spec_data")
#pragma DATA_SECTION(_srcZ2,".spec_data")
unsigned char _srcW1[720 * 576];
unsigned char _srcZ1[720 * 576];
unsigned char _srcW2[720 * 576];
unsigned char _srcZ2[720 * 576];
#pragma DATA_ALIGN(__desty, 8);
#pragma DATA_SECTION(__desty,".spec_data")
unsigned char __desty[720 * 576];
#pragma DATA_ALIGN(__destcb, 8);
#pragma DATA_SECTION(__destcb,".spec_data")
unsigned char __destcb[360 * 576];
#pragma DATA_ALIGN(__destcr, 8);
#pragma DATA_SECTION(__destcr,".spec_data")
unsigned char __destcr[360* 576];
/*#pragma DATA_ALIGN(Y0IN,8)
#pragma DATA_SECTION(Y0IN,".spec_data")
unsigned char Y0IN[720 * 576];
#pragma DATA_ALIGN(Y1IN,8)
#pragma DATA_SECTION(Y1IN,".spec_data")
unsigned char Y1IN[720 * 576]; */
#pragma DATA_ALIGN(YOUT,8)
#pragma DATA_SECTION(YOUT,".spec_data")
unsigned char YOUT[720 * 576];
#pragma DATA_ALIGN(CBOUT,8)
#pragma DATA_SECTION(CBOUT,".spec_data")
unsigned char CBOUT[360 * 576];
#pragma DATA_ALIGN(CROUT,8)
#pragma DATA_SECTION(CROUT,".spec_data")
unsigned char CROUT[360 * 576];
#define clip(x,y,z) ((z<x)?x:((z>y)?y:z))
#define RGB2toYUVY(r1,g1,b1,r2,g2,b2,y1,cb1,cr1,y2)\
y1=(unsigned char)clip(16,235,((76*r1+150*g1+29*b1)>>8));\
cb1=(unsigned char)clip(16,240,(((0-44*r1-84*g1+128*b1)>>8)+128));\
cr1=(unsigned char)clip(16,240,(((128*r2-107*g2-20*b2)>>8)+128));\
y2=(unsigned char)clip(16,235,((76*r2+150*g2+29*b2)>>8)); //结束
#define cswap( h3,h2,h1)\
h3=(h1*h2)>>8; //不知道啊对,灰度融合
//FVID_Handle disChan;
//FVID_Frame *disFrameBuf;
/*
* ======== VideoLoopbackInit ========
* video loopback function init.
*/
void VideoProcessInit()
{
/*memset(dec_out_y, 0x0, sizeof(dec_out_y));
memset(dec_out_u, 0x80, sizeof(dec_out_u));
memset(dec_out_v, 0x80, sizeof(dec_out_v)); */
}
/*
* ======== tskVideoLoopback start========
* video loopback function start.
*/
void VideoProcessStart()
{
}
/*
* ======== tskVideoLoopback ========
* video loopback function.
*/
void tskProcess()
{
int i,j; //开始
//int j,k,l,m,n;
//unsigned char a=0;
register unsigned char h10,h11,h12,h13,h14,h15;
register unsigned char h20,h21,h22,h23,h24,h25;
register unsigned char h30,h31,h32,h33,h34,h35;
//unsigned char r1,b1,g1,r2,b2,g2;
//int y1,y2,cb1,cr1;
ScomMessage *pMsgBuf1;
ScomMessage *pMsgBuf2;
SCOM_Handle fromInput1toPRO,fromInput2toPRO,fromPROtoDIS;
//SCOM_Handle fromInput1toPRO,fromPROtoInput1,fromInput2toPRO,fromPROtoInput2,fromPROtoDIS,fromDIStoPRO;
unsigned char *inBuf[6];
unsigned char *outBuf[3];
//unsigned char *ctBuf[2];
//unsigned char *cfBuf[2];
//unsigned char *ctBufL[2];
//unsigned char *cfBufL[2];
//unsigned char *ctBufR;
//unsigned char max=0;
//unsigned char value;
int width=720;
int height=576;
int i1,i3;
int wid;
int hei;
unsigned int *src1;
unsigned int *src2;
//unsigned char *BYTE_src1;
//unsigned char *BYTE_src2;
unsigned char *y,*cb,*cr;
unsigned char *psrc1,*psrc2;
unsigned char *psrc3,*psrc4;
unsigned char *psrc5,*psrc6;
register int index,index2,index1;
int xoff,yoff;
int suo;
int LINE_SZ;
int k=0,m=0;
int flag=0;
int width2=655;
int height2=524;
LINE_SZ=720;
xoff=-62;
yoff=-11;
suo=11;
y=__desty;
cb=__destcb;
cr=__destcr;
//register unsigned char h10,h11,h12,h13,h14,h15;
//register unsigned char h20,h21,h22,h23,h24,h25;
//register unsigned char h30,h31,h32,h33,h34,h35;
//register int index,index2,index1;
//src1=_srcW;//放长波图像的数组 没有定义完整
//src2=_srcZ;//放短波图像的数组
psrc3=_srcW1;
psrc4=_srcZ1;
psrc5=_srcW2;
psrc6=_srcZ2;
//FVID_alloc(capChanCh1, &capFrameBuf1);
//FVID_alloc(capChanCh2, &capFrameBuf2);
//FVID_alloc(disChan, &disFrameBuf);
//SCOM_Handle fromInput1toPRO,fromPROtoInput1,fromInput2toPRO,fromPROtoInput2,fromPROtoDIS,fromDIStoPRO;huifu
// SCOM_Handle fromInput2atoDIS,fromDIStoInput2a;
// SCOM_Handle fromInput2btoDIS,fromDIStoInput2b;
/*打开SCOM模块*/
fromInput1toPRO = SCOM_open("IN1TOPRO");
// fromPROtoInput1 = SCOM_open("PROTOIN1");
fromInput2toPRO = SCOM_open("IN2TOPRO");
// fromPROtoInput2 = SCOM_open("PROTOIN2");
// fromDIStoPRO = SCOM_open("DISTOPRO");
fromPROtoDIS = SCOM_open("PROTODIS");
/*申请一个空间*/
//FVID_alloc(disChan, &disFrameBuf);
/* FVID_alloc(capChanCh1, &capFrameBuf1);
FVID_alloc(capChanCh2, &capFrameBuf2);
FVID_alloc(disChan, &disFrameBuf); */
while(1)
{
/*-----------------------------------------------------------*/
/* Wait for the message from the process task to recieve new */
/* frame to be displayed. */
/*-----------------------------------------------------------*/
pMsgBuf1 = SCOM_getMsg(fromInput1toPRO, SYS_FOREVER);
pMsgBuf2 = SCOM_getMsg(fromInput2toPRO, SYS_FOREVER);
outBuf[0] = (unsigned char *)YOUT;
outBuf[1] = (unsigned char *)CBOUT;
outBuf[2] = (unsigned char *)CROUT;
//inBuf[0] = (unsigned char *)Y0IN;
//inBuf[1] = (unsigned char *)Y1IN;
inBuf[0]=pMsgBuf1->bufY;
inBuf[1]=pMsgBuf1->bufU;
inBuf[2]=pMsgBuf1->bufV;
inBuf[3]=pMsgBuf2->bufY;
inBuf[4]=pMsgBuf2->bufU;
inBuf[5]=pMsgBuf2->bufV;
if(flag)
{
for(i = 0; i < 576; i ++)
{
DAT_copy(inBuf[0] + i * 720,
outBuf[0]+i*720,
720);
DAT_copy(inBuf[1] + i * (720 >> 1),
outBuf[1]+i*(720>>1),
720>>1);
DAT_copy(inBuf[2] + i * (720 >> 1),
outBuf[2] + i * (720>> 1),
720>>1);
}
else
{
for(i = 0; i < 576; i ++)
{
DAT_copy(inBuf[3] + i * 720,
outBuf[0]+i*720,
720);
DAT_copy(inBuf[4] + i * (720 >> 1),
outBuf[1]+i*(720>>1),
720>>1);
DAT_copy(inBuf[5] + i * (720 >> 1),
outBuf[2] + i * (720>> 1),
720>>1);
}
}
}
}
CACHE_clean(CACHE_L2ALL,NULL, NULL);
DAT_wait(DAT_XFRID_WAITALL);
pMsgBuf1->bufY = YOUT;
pMsgBuf1->bufU = CBOUT;
pMsgBuf1->bufV = CROUT;
SCOM_putMsg(fromPROtoDIS,pMsgBuf1);
CACHE_clean(CACHE_L2ALL,NULL, NULL);
//FVID_exchange(capChanCh1, &capFrameBuf1);
//FVID_exchange(capChanCh2, &capFrameBuf2);
//FVID_exchange(disChan, &disFrameBuf);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -