我用的平台是DM8168,想从本地读一个文件送到dsp去做算法处理,但是不知道如何控制帧率,现在帧率特别快,监控的HDMI上就像快进一样。
框架是DVRRDK4.3, 框架下有demo_vdec_vdis 仔细看过这个demo的代码,Link的连接就是仿造这个demo搭建的,但是这个demo的Link连接
也没有帧率控制,而是靠swMsPrm[i].maxInputQueLen = SYSTEM_SW_MS_INVALID_INPUT_QUE_LEN;这个参数来“缓解”的帧率问题,如果把这个
参数的值改为SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN,那在HDMI上也是跟快进一样。
现在我自己的Link连接 是在decLink后加了一个deiLink,目的为了做格式转换,dei的配置如下。
DeiLink_CreateParams_Init(&deiPrm);
deiPrm.inQueParams.prevLinkId = gMultiCh_VdecVdisObj.ipcInVpssId;
deiPrm.inQueParams.prevLinkQueId = 0;
deiPrm.setVipScYuv422Format = FALSE;
// Set Output Scaling at DEI based on ratio
deiPrm.enableOut[DEI_LINK_OUT_QUE_VIP_SC] = TRUE;
deiPrm.inputFrameRate[DEI_LINK_OUT_QUE_VIP_SC] = 30;
deiPrm.outputFrameRate[DEI_LINK_OUT_QUE_VIP_SC] = 30;
deiPrm.inputDeiFrameRate = 30;
deiPrm.outputDeiFrameRate = 30;
deiPrm.outQueParams[DEI_LINK_OUT_QUE_VIP_SC].nextLink = gVcapModuleContext.ipcFramesOutVpssId[0];
deiPrm.enableDeiForceBypass = TRUE;
这里有一个小问题,查阅文档说decLink的输出格式是YUV420的,但是我送到算法那里,算法会失效,而经过deiLink转换格式后算法就正常工作了,
deiPrm.setVipScYuv422Format = FALSE; 应该是有转换格式的作用。
那么问题来了,加了参数deiPrm.enableDeiForceBypass = TRUE,整个Link的帧率不受控制,在HDMI上像快进一样,怎么都调不好,调节
swMsPrm[i].maxInputQueLen参数也没有用。如果把这个参数置为FALSE,视频就卡在第一帧,数据不流通。
现在可把我难住了。后来考虑过把deiLink换成nsfLink,因为这个Link也有转换格式的功能,但是在LINK启动的时候总是报错
[m3vpss ] 28873: Assertion @ Line: 219 in links_m3vpss/nsf/nsfLink_drv.c: pObj->fvidHandleNsf != NULL : failed !!!
各位大佬,还请不吝赐教,谢谢!!!!!!!!!!!!