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

📄 tskprocess修正版.c

📁 在DM642上实现双通道采集并实现了实时匹配
💻 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 + -