/*
* Copyright 2003 by Texas Instruments Incorporated.
* All rights reserved. Property of Texas Instruments Incorporated.
* Restricted rights to use, duplicate or disclose this code are
* granted through contract.
*
*/
/* "@(#) DDK 1.10.00.21 06-26-03 (ddk-b10)" */
#include <std.h>
#include <tsk.h>
#include <sem.h>
#include <gio.h>
#include <csl_dat.h>
#include <csl_cache.h>
#include <fvid.h>
#include <edc.h>
#include <vport.h>
#include <vportcap.h>
#include <vportdis.h>
#include <saa7105.h>
#include <saa7115.h>
#include <evmdm642.h>
#include "evmdm642_vcapparams.h"
#include "evmdm642_vdisparams.h"
/* heap IDs defined in the BIOS configuration file */
extern Int EXTERNALHEAP;
/*
* ======== main ========
*/
main()
{
/******************************************************/
/* open CSL DAT module for fast copy */
/******************************************************/
CSL_init();
CACHE_clean(CACHE_L2ALL, 0, 0);
CACHE_setL2Mode(CACHE_256KCACHE);
CACHE_enableCaching(CACHE_EMIFA_CE00);
CACHE_enableCaching(CACHE_EMIFA_CE01);
DAT_open(DAT_CHAANY, DAT_PRI_LOW, DAT_OPEN_2D);
}
extern void tskOSD();
/*
* ======== tskVideoLoopback ========
* video loopback function.
*/
void tskVideoLoopback()
{
Int status;
FVID_Handle disChan;
Int frames = 0;
FVID_Frame *disFrameBuf;
Int numLinesDis = EVMDM642_vDisParamsChan.imgVSizeFld1;
Int numLinesCap = EVMDM642_vCapParamsChan.fldYStop1 -
EVMDM642_vCapParamsChan.fldYStrt1+1;
Int numLines = (numLinesDis > numLinesCap) ? numLinesCap : numLinesDis;
Int i;
FVID_Handle capChan;
Int numPixels = EVMDM642_vCapParamsChan.fldXStop1 -
EVMDM642_vCapParamsChan.fldXStrt1+1;
FVID_Frame *capFrameBuf;
Int capLinePitch = EVMDM642_vCapParamsChan.fldXStop1 -
EVMDM642_vCapParamsChan.fldXStrt1+1;
Int disLinePitch = EVMDM642_vDisParamsChan.imgHSizeFld1;
numLines *= 2; /* both fields */
/******************************************************/
/* allocate both capture and display frame buffers */
/* in external heap memory */
/******************************************************/
EVMDM642_vCapParamsChan.segId = EXTERNALHEAP;
EVMDM642_vDisParamsChan.segId = EXTERNALHEAP;
EVMDM642_vDisParamsSAA7105.hI2C = EVMDM642_I2C_hI2C;
EVMDM642_vCapParamsSAA7115.hI2C = EVMDM642_I2C_hI2C;
/******************************************************/
/* initialization of capture driver */
/******************************************************/
capChan = FVID_create("/VP0CAPTURE/A/0",
IOM_INPUT, &status, (Ptr)&EVMDM642_vCapParamsChan, NULL);
/******************************************************/
/* initialization of display driver */
/******************************************************/
disChan = FVID_create("/VP2DISPLAY", IOM_OUTPUT,
&status, (Ptr)&EVMDM642_vDisParamsChan, NULL);
/******************************************************/
/* configure video encoder & decoder */
/******************************************************/
for ( i=0;i<6;i++ )
{
FVID_control(disChan, VPORT_CMD_EDC_BASE + EDC_CONFIG,
(Ptr)&EVMDM642_vDisParamsSAA7105);
FVID_control(capChan, VPORT_CMD_EDC_BASE + EDC_CONFIG,
(Ptr)&EVMDM642_vCapParamsSAA7115);
}
/******************************************************/
/* start capture & display operation */
/******************************************************/
FVID_control(disChan, VPORT_CMD_START, NULL);
FVID_control(capChan, VPORT_CMD_START, NULL);
/* Now that capture & display are going, start OSD task */
TSK_create((Fxn)&tskOSD, &TSK_ATTRS);
/********************************************************/
/* request a frame buffer from display & capture driver */
/********************************************************/
FVID_alloc(capChan, &capFrameBuf);
FVID_alloc(disChan, &disFrameBuf);
frames ++;
while(1){/* loop 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);
}
FVID_exchange(capChan, &capFrameBuf);
FVID_exchange(disChan, &disFrameBuf);
frames ++;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
dm642OSD叠加代码
共10个文件
c:10个
4星 · 超过85%的资源 需积分: 10 27 下载量 128 浏览量
2011-04-26
08:45:41
上传
评论 2
收藏 12KB RAR 举报
温馨提示
在dm642上的OSD叠加算法的实现,需要学习dm642,并要在dm642上实现OSD叠加的,可以参考该代码中的实现
资源推荐
资源详情
资源评论
收起资源包目录
dm642视频图像和图形叠加.rar (10个子文件)
视频图像和图形叠加
evmdm642_vcapparamsNTSC.c 2KB
tskOSD.c 5KB
evmdm642_vdisparamsNTSC.c 4KB
evmdm642_vdisparamsHD480P.c 4KB
evmdm642_vcapparamsPAL.c 2KB
video_loopback.c 5KB
osdcfg_c.c 568B
evmdm642_vdisparamsPAL.c 4KB
evmdm642_vdisparamsHD720P.c 5KB
loopback_main.c 5KB
共 10 条
- 1
资源评论
- xjlviolet2012-12-01没运行出来
- 「已注销」2013-06-28运行不出来,没效果
- haowang123412342013-04-27虽然不能马上使用,但是还是有参考价值,而且跟我用的642一个型号。
- fengruozhuo2012-08-11额 一般 不是很好改 移植的时候很多bug 还要再研究一下
- dongmaofei2013-10-22没运行出来
wjl_can
- 粉丝: 3
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功