TI中文支持网
TI专业的中文技术问题搜集分享网站

dm8148 采集过程中跳帧

 我使用的软件版本为  ipnc3.8

使用的demo为 7002 input data–>capturelink—>displaylink—>hdmi out data

目前的现象为显示一副静止的图像。

程序中调用了vpsdrv_captureList.c中的函数Vps_CapTskPutCaptField()

函数主体为

Vps_CapTskPutCaptField()

{

——-

if(pFrame–>channelNum!=VPS_CAPT_DROP_FRAME_CH_ID)

{

———

VpsUtils_quePut(&pObj->fullQue[Vps_captGetStreamId(parseDescInfo->lChannel)],pFrame,BIOS_WAIT_FOREVER);

——–

}

———-

}

但是我的程序打印信息显示我的channelNum==VPS_CAPT_DROP_FRAME_CH_ID,所以VpsUtils_quePut函数没能执行导致以后的 程序也取不到数据。

问题:

不知道什么原因导致我的channelNum的值错误,channelNum是在那里被赋值的呢?

Chris Meng:

你好,

1. 请问是否有测量过TVP7002输出的信号,看时钟,同步信号是否都正确?

2. 请问是否有正确配置采集的宽度和高度?

另,为什么使用IPNC RDK而不是DVR RDK?

AE:

回复 Chris Meng:

hi,Chris:

我的7002配置是按照 “”TVP7002: 5-wire VGA input, 30-bit RGB 4:4:4 DS output“”进行设置的,各个信号的频率我都测试过了,跟表格中给的参考值是一样的,

在文件vpsdrv_tvp7002I2c.c–>Vps_tvp7002GetVideoStatusIoctl()函数中得到

pStaus->frameHeight==750   pStaus->frameWidth==600跟Format为720P60是对应的,如下图:

为了调用该函数的判断需要,我在Vps_tvp7002GetVideoStatusIoctl函数返回前加了一个判断

if(pStaus->frameHeight==750 )

{

pStaus->frameHeight==720 

}

if(pStaus->frameWidth==600)

{

pStaus->frameWidth==1280

}

将1280和720返回给了调用函数。

TVP7002的配置我看不出什么问题,所以想从8148端分析一下,什么条件下8148端能够接收到一帧正确的数据,但是在代码中没有找到具体的位置。

Chris Meng:

回复 AE:

你好,

默认VIP采集是YUV422的,你现在硬件是如何连接的?特别是同步信号部分?

capture link相关参数你是如何配的?根据TVP7002的返回值?

AE:

回复 Chris Meng:

hi,

pCaptureInstPrm->inDataFormat=SYSTEM_DF_RGB24_888;

pCaptureInstPrm->standard=SYSTEM_STD_720P_60;

pCaptureOutPrm->dataFormat=SYSTEM_DF_YUV422I_YUYV;

pCaptureOutPrm->scOutWidth=1280;

pCaptureOutPrm->scOutHeigh=720;

你说的硬件连接是指外部视频输入到7002,还是指7002到8148呢?

Chris Meng:

回复 AE:

你好,

能否让TVP7002输出YUV422?我想看看问题是否和VIP里面的CSC有关。

AE:

回复 Chris Meng:

hi,Chirs

       硬件连接限制了tvp7002的输出只能是rgb888,我之前调试过sii9125,capturelink端的设置与tvp7002只更换了videoDecoderId,所以我想是不是跟CSC没什么关系呢?您怀疑与CSC有关是出于怎样的考虑呢?

赞(0)
未经允许不得转载:TI中文支持网 » dm8148 采集过程中跳帧
分享到: 更多 (0)