/*
* 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.23 07-02-03 (ddk-b12)" */
#include <std.h>
#include <tsk.h>
#include <sem.h>
#include <gio.h>
#include <csl_dat.h>
#include <csl_cache.h>
#include <csl.h>
#include <csl_edma.h>
#include <sys.h>
#include <log.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 "colorbar.h"
#include "evmdm642_vcapparams.h"
#include "evmdm642_vdisparams.h"
unsigned char Y1[720*576];
unsigned char CB1[720*288];
unsigned char CR1[720*288];
/* heap IDs defined in the BIOS configuration file */
extern Int EXTERNALHEAP;
FVID_Handle disChan;
FVID_Handle capChan;
FVID_Frame *capFrameBuf=NULL;
FVID_Frame *disFrameBuf=NULL;
Int numLinesDis=0 ;
Int numLinesCap=0;
Int numLines=0 ;
Int numPixels =0;
Int capLinePitch=0 ;
Int disLinePitch=0 ;
void myImageProcess();
void generateColorLine();
int histgram[360];
/*
* ======== 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);
}
/*
* ======== tskVideoCAPTURE ========
* video CAPTURE function.
*/
void tskVideoCapture()
{
Int status;
Int frames = 0;
numLinesDis = EVMDM642_vDisParamsChan.imgVSizeFld1;
numLinesCap = EVMDM642_vCapParamsChan.fldYStop1 - EVMDM642_vCapParamsChan.fldYStrt1+1;
numLines = (numLinesDis > numLinesCap) ? numLinesCap : numLinesDis;
// char mLaplacian[3*3]={ -1,-1,-1, -1,9,-1,-1,-1,-1};
#ifdef _CAPTURE
numPixels = EVMDM642_vCapParamsChan.fldXStop1 - EVMDM642_vCapParamsChan.fldXStrt1+1;
capLinePitch = EVMDM642_vCapParamsChan.fldXStop1 - EVMDM642_vCapParamsChan.fldXStrt1+1;
disLinePitch = EVMDM642_vDisParamsChan.imgHSizeFld1;
#endif
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 */
/******************************************************/
#ifdef _CAPTURE
capChan = FVID_create("/VP0CAPTURE/A/0",
IOM_INPUT, &status, (Ptr)&EVMDM642_vCapParamsChan, NULL);
#endif
/******************************************************/
/* initialization of display driver */
/******************************************************/
disChan = FVID_create("/VP2DISPLAY", IOM_OUTPUT,
&status, (Ptr)&EVMDM642_vDisParamsChan, NULL);
/******************************************************/
/* configure video encoder & decoder */
/******************************************************/
FVID_control(disChan, VPORT_CMD_EDC_BASE + EDC_CONFIG,
(Ptr)&EVMDM642_vDisParamsSAA7105);
#ifdef _CAPTURE
FVID_control(capChan, VPORT_CMD_EDC_BASE + EDC_CONFIG,
(Ptr)&EVMDM642_vCapParamsSAA7115);
#endif
/******************************************************/
/* start capture & display operation */
/******************************************************/
FVID_control(disChan, VPORT_CMD_START, NULL);
#ifdef _CAPTURE
FVID_control(capChan, VPORT_CMD_START, NULL);
#endif
/********************************************************/
/* request a frame buffer from display & capture driver */
/********************************************************/
FVID_alloc(disChan, &disFrameBuf);
#ifdef _CAPTURE
FVID_alloc(capChan, &capFrameBuf);
#endif
frames ++;
while(1)
{/* loop forever */
#ifdef _CAPTURE
#ifdef _PROCESS
myImageProcess();
#else
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);
}
#endif
DAT_wait(DAT_XFRID_WAITALL);
FVID_exchange(capChan, &capFrameBuf);
#else
fillFrmBuf(&disFrameBuf->frame.iFrm, EVMDM642_vDisParamsChan.imgHSizeFld1,
EVMDM642_vDisParamsChan.imgVSizeFld1 +
EVMDM642_vDisParamsChan.imgVSizeFld2, frames % 360);
#endif
CACHE_clean(CACHE_L2ALL,NULL,NULL);
FVID_exchange(disChan, &disFrameBuf);
frames ++;
}
}
void myImageProcess()
{
Uint32 i=0,ii;
float j=0;
Uint8 * temp_address1;
for(i = 0; i < numLines; i ++) {
DAT_copy(capFrameBuf->frame.iFrm.y1 + i * capLinePitch,
disFrameBuf->frame.iFrm.y1 + i * disLinePitch,
numPixels>>1);
DAT_copy(capFrameBuf->frame.iFrm.cb1 + i * (capLinePitch >> 1),
disFrameBuf->frame.iFrm.cb1 + i * (disLinePitch >> 1),
numPixels>>2);
DAT_copy(capFrameBuf->frame.iFrm.cr1 + i * (capLinePitch >> 1),
disFrameBuf->frame.iFrm.cr1 + i * (disLinePitch >> 1),
numPixels>>2);
}
temp_address1=(Uint8 *)capFrameBuf->frame.iFrm.y1;//capFrameBuf->frame.rpFrm.buf;//&InBufferY[0];
for(i=0;i<360;i++)
histgram[i]=0;
for(i=0;i<numLines;i++)
for (ii=0;ii<360;ii++)
{
histgram[ii]=histgram[ii]+temp_address1[i*disLinePitch+ii];
}
j=0;
for(i=0;i<360;i++)
{
if(histgram[i]>j)
j=histgram[i];
}
for(i=0;i<360;i++)
{
histgram[i]=(int)((float)histgram[i]/j* numLines/2);
}
generateColorLine();
}
void generateColorLine()
{
Int i;
Int k;
for (i=0;i<360;i++)
{
for (k=0;k<numLines;k++)
{
if (((numLines-k) <= histgram[i])) //&& (i<256))
{
disFrameBuf->frame.iFrm.y1[k*720+360+i] = RED_Y;
/*
if (i%2==0)
{
disFrameBuf->frame.iFrm.cb1[k*360+180+i/2] = RED_CB;
disFrameBuf->frame.iFrm.cr1[k*360+180+i/2] = RED_CR;
}
*/
}
else
{
disFrameBuf->frame.iFrm.y1[k*720+360+i] = WHITE_Y;
/*
没有合适的资源?快使用搜索试试~ 我知道了~
tds642evm图像处理程序
共132个文件
h:33个
obj:27个
c:18个
5星 · 超过95%的资源 需积分: 10 24 下载量 51 浏览量
2008-12-26
10:09:53
上传
评论
收藏 1.03MB RAR 举报
温馨提示
我用到了tds642evm的板子,我上传几个图像处理程序,对大家以后的学习很有用!
资源推荐
资源详情
资源评论
收起资源包目录
tds642evm图像处理程序 (132个子文件)
video_ntsc_pal.c 8KB
video_ntsc_pal.c 8KB
video_ntsc_pal.c 7KB
evmdm642_vdisparamsPAL.c 4KB
evmdm642_vdisparamsPAL.c 4KB
evmdm642_vdisparamsPAL.c 4KB
colorbar.c 4KB
colorbar.c 4KB
colorbar.c 4KB
evmdm642_vcapparamsPAL.c 2KB
evmdm642_vcapparamsPAL.c 2KB
evmdm642_vcapparamsPAL.c 2KB
evmdm642_vcapparamsPAL_EMBEDDED.c 2KB
evmdm642_vcapparamsPAL_EMBEDDED.c 2KB
evmdm642_vcapparamsPAL_EMBEDDED.c 2KB
videocfg_c.c 572B
videocfg_c.c 572B
videocfg_c.c 572B
video.cdb 1016KB
video.cdb 1016KB
video.cdb 1016KB
videocfg.cmd 7KB
videocfg.cmd 7KB
videocfg.cmd 7KB
video.cmd 981B
video.cmd 981B
video.cmd 981B
vport.h 7KB
vport.h 7KB
vport.h 7KB
vportcap.h 5KB
vportcap.h 5KB
vportcap.h 5KB
fvid.h 4KB
fvid.h 4KB
fvid.h 4KB
vportdis.h 4KB
vportdis.h 4KB
vportdis.h 4KB
saa7105.h 2KB
saa7105.h 2KB
saa7105.h 2KB
saa7115.h 2KB
saa7115.h 2KB
saa7115.h 2KB
edc.h 1KB
edc.h 1KB
edc.h 1KB
colorbar.h 1KB
videocfg.h 696B
videocfg.h 696B
videocfg.h 696B
colorbar.h 544B
colorbar.h 544B
evmdm642_vdisparams.h 510B
evmdm642_vcapparams.h 510B
evmdm642_vdisparams.h 510B
evmdm642_vcapparams.h 510B
evmdm642_vcapparams.h 510B
evmdm642_vdisparams.h 510B
videocfg.h62 5KB
videocfg.h62 5KB
videocfg.h62 5KB
vport.l64 240KB
vport.l64 240KB
vport.l64 240KB
img64x.lib 38KB
img64x.lib 38KB
img64x.lib 38KB
agl_c64.lib 19KB
agl_c64.lib 19KB
agl_c64.lib 19KB
Debug.lkf 873B
Debug.lkf 760B
Debug.lkf 760B
Debug.lkv 873B
Debug.lkv 760B
Debug.lkv 760B
cc_build_Debug.log 2KB
cc_build_Debug.log 2KB
cc_build_Debug.log 2KB
image642-2.map 74KB
image642-1.map 74KB
image642-3.map 73KB
image642-2.map 72KB
image642-1.map 72KB
image642-1.map 72KB
videocfg.obj 32KB
videocfg.obj 32KB
videocfg.obj 32KB
video_ntsc_pal.obj 25KB
video_ntsc_pal.obj 23KB
video_ntsc_pal.obj 23KB
basic_op.obj 9KB
basic_op.obj 9KB
basic_op.obj 9KB
evmdm642_vdisparamsPAL.obj 7KB
evmdm642_vdisparamsPAL.obj 7KB
evmdm642_vdisparamsPAL.obj 7KB
colorbar.obj 6KB
共 132 条
- 1
- 2
资源评论
- leoking000012012-05-08编译的时候,报错,缺少evm642.h文件
- haowang123412342012-10-19正在研究图像处理,可以参考。
zhulong19841014
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功