我使用的软件版本为 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有关是出于怎样的考虑呢?