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

📄 tsklookback.c

📁 和众达DM642EVM基于DSP/BIOS的循环采集显示例程!
💻 C
字号:
#include <vport.h>
#include <fvid.h>
#include <csl_dat.h>
#include <csl_cache.h>
#include <scom.h>
#include <dm642.h>
#include <dm642_capParams.h>
#include <dm642_disParams.h>

extern int EXTERNALHEAP;


VPORT_PortParams EVMDM642_vDisParamsPort 
  = EVMDM642_DIS_PARAMS_PORT_DEFAULT;


static VPORTDIS_Params EVMDM642_vDisParamsChan 
  							= EVMDM642_DIS_PARAMS_CHAN_BT656_DEFAULT(PAL);

static SAA7105_ConfParams EVMDM642_vDisParamsSAA7105 
  							= EVMDM642_DIS_PARAMS_SAA7105_SDTV_DEFAULT(PAL720, SVIDEO);

static VPORTCAP_Params EVMDM642_vCapParamsChan 
  			= EVMDM642_CAP_PARAMS_CHAN_EMBEDDED_DEFAULT(PAL720);

FVID_Handle  disChan;

void VideoLoopbackInit()
{
    Int status;
    EVMDM642_vDisParamsChan.segId = EXTERNALHEAP;
    EVMDM642_vDisParamsSAA7105.hI2C = DM642_I2C_hI2C;
    /******************************************************/
    /* initialization of display driver                   */
    /******************************************************/
    disChan = FVID_create("/VP1DISPLAY", IOM_OUTPUT,
        &status, (Ptr)&EVMDM642_vDisParamsChan, NULL);

    FVID_control(disChan, VPORT_CMD_EDC_BASE + EDC_CONFIG, 
        (Ptr)&EVMDM642_vDisParamsSAA7105);
        
}

void VideoLoopbackStart()
{
    FVID_control(disChan, VPORT_CMD_START, NULL);  	
}

void tskVideoLoopback()
{
    
    Int i;
	SCOM_Handle fromInput1toDIS,fromDIStoInput1;


    FVID_Frame *disFrameBuf;
    FVID_Frame *capFrameBuf;
    
    Int numLinesDis = EVMDM642_vDisParamsChan.imgVSizeFld1;
    
    Int numLinesCap = EVMDM642_vCapParamsChan.fldYStop1 -
                      EVMDM642_vCapParamsChan.fldYStrt1+1;


    Int numLines = (numLinesDis > numLinesCap) ? numLinesCap : numLinesDis;
    

    Int numPixels = EVMDM642_vCapParamsChan.fldXStop1 - 
                    EVMDM642_vCapParamsChan.fldXStrt1+1;
                    
    Int capLinePitch = EVMDM642_vCapParamsChan.fldXStop1 - 
                     EVMDM642_vCapParamsChan.fldXStrt1+1;
                     
    Int disLinePitch = EVMDM642_vDisParamsChan.imgHSizeFld1;

 
    numLines *= 2; /* both fields */

    /*打开SCOM模块*/
    fromInput1toDIS = SCOM_open("IN1TODIS");
	fromDIStoInput1 = SCOM_open("DISTOIN1");


    /********************************************************/
    /* request a frame buffer from display & capture driver */
    /********************************************************/
    FVID_alloc(disChan, &disFrameBuf);

    while(1){/* loop for 4 seconds */

	 	capFrameBuf = (FVID_Frame *)SCOM_getMsg(fromInput1toDIS, SYS_FOREVER);
	
        /* copy data from capture buffer to display buffer */
        /***************************************************/
        for(i = 0; i < numLines; i ++) {                                           
            DAT_copy(capFrameBuf->frame.iFrm.y1 + i * capLinePitch, 
                     disFrameBuf->frame.iFrm.y1 + i * disLinePitch,
                     numPixels);
            DAT_copy(capFrameBuf->frame.iFrm.cb1 + i * (capLinePitch >> 1), 
                     disFrameBuf->frame.iFrm.cb1 + i * (disLinePitch >> 1),
                     numPixels>>1);

            DAT_copy(capFrameBuf->frame.iFrm.cr1 + i * (capLinePitch >> 1), 
                     disFrameBuf->frame.iFrm.cr1 + i * (disLinePitch >> 1),
                     numPixels>>1);                                        
        }


        DAT_wait(DAT_XFRID_WAITALL);		         
		CACHE_clean(CACHE_L2ALL,NULL,NULL);	
	   	/*-----------------------------------------------------------*/
	   	/* Display the decoded frame.                                */
	  	/*-----------------------------------------------------------*/
	    FVID_exchange(disChan, &disFrameBuf);
	  	/*-----------------------------------------------------------*/
		/* Send message to process task to continue                  */ 
		/*-----------------------------------------------------------*/
	 	SCOM_putMsg(fromDIStoInput1, NULL);/* loop forever */
    }   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -