环境:DVRRDK3.5 DM8168
目前所做产品为从IPC获取码流,解码后以rtsp发送出去。 现在在中间加入了算法处理部分,只对个别帧进行识别操作。下面是要实现的link流程图:

但是在实现过程中发现了问题,如果按照这样来做,在创建了整个link 后,发现并没有 数据流从 video 传入到 host。
而当我按照简单的 : host onvif -> ipcBitOutHLOS -> bitsInRTOS video -> dec -> enc -> bitsOutRTOS -> HOST -> rtsp. 这样的流程可以正常传出编码数据。
同时 以这样的link: host onvif -> ipcBitOutHLOS -> bitsInRTOS video -> dec -> sclr -> nsf -> ipcFrameOutVpss -> ipcFramesInDsp -> alg . 这样在 dsp 端也能得出正确的结果。
但是想把 dsp 处理 以及 通过host的rtsp服务器发送 同时实现的话,我不知道该怎么做。
各位专家 朋友能否看下,这是哪里出了问题。是否还有需要注意的地方。
谢谢。
hl chu:
Hi:
你的输入分辨率是多大?
peng cheng2:
回复 hl chu:
我输入分辨率 是 1920 1080.
peng cheng2:
回复 hl chu:
你好,我又测试了几次,现在提问内容已经修改了。问题应该是出在vpss端。您有时间的话可以看下。谢谢。
Chris Meng:
回复 peng cheng2:
Cheng Peng,
DSP Link是否有把buffer正确返还?如果dsp link处理的时间是否过长?
peng cheng2:
回复 Chris Meng:
应该是有返还的。因为如果不送入video,只送入dsp的话,是可以正常跑起来的。dsp那边也一直有正确的结果。
我这里的处理是在helloworld里面进行处理的,没有跟osd放到一起。
//ipc frames out vpssipcFramesOutVpssPrm1.baseCreateParams.inQueParams.prevLinkId = dupId0;ipcFramesOutVpssPrm1.baseCreateParams.inQueParams.prevLinkQueId = 0;ipcFramesOutVpssPrm1.baseCreateParams.outQueParams[0].nextLink = ipcFramesInDspId1;ipcFramesOutVpssPrm1.baseCreateParams.processLink = SYSTEM_LINK_ID_INVALID;ipcFramesOutVpssPrm1.baseCreateParams.noNotifyMode = FALSE;ipcFramesOutVpssPrm1.baseCreateParams.notifyNextLink = TRUE;ipcFramesOutVpssPrm1.baseCreateParams.notifyPrevLink = TRUE;ipcFramesOutVpssPrm1.baseCreateParams.notifyProcessLink = FALSE;ipcFramesOutVpssPrm1.baseCreateParams.numOutQue = 1;ipcFramesOutVpssPrm1.baseCreateParams.inputFrameRate = 25;ipcFramesOutVpssPrm1.baseCreateParams.outputFrameRate = 2; //ipc frames in dspipcFramesInDspPrm1.baseCreateParams.inQueParams.prevLinkId = ipcFramesOutVpssId1;ipcFramesInDspPrm1.baseCreateParams.inQueParams.prevLinkQueId = 0;ipcFramesInDspPrm1.baseCreateParams.outQueParams[0].nextLink = helloworldId0;ipcFramesInDspPrm1.baseCreateParams.numOutQue = 1;ipcFramesInDspPrm1.baseCreateParams.noNotifyMode = FALSE;ipcFramesInDspPrm1.baseCreateParams.notifyNextLink = TRUE;ipcFramesInDspPrm1.baseCreateParams.notifyPrevLink = TRUE;ipcFramesInDspPrm1.baseCreateParams.inputFrameRate = 25;ipcFramesInDspPrm1.baseCreateParams.outputFrameRate = 2; //frames into helloworld linkhelloworldPrm0.inQueParams.prevLinkId = ipcFramesInDspId1;helloworldPrm0.inQueParams.prevLinkQueId = 0;//helloworldPrm.outQueParams.nextLink = SYSTEM_LINK_ID_INVALID;helloworldPrm0.noNotifyMode = FALSE;helloworldPrm0.notifyNextLink = FALSE;helloworldPrm0.notifyPrevLink = TRUE;
peng cheng2:
回复 Chris Meng:
现在算法部分没有启用处理,也就是说基本上没有时间损耗的。
我把算法放到了processlink来处理,测试了两个demo。如果是以sdi为视频源,那么就会正常运行。以onbif为视频源,再解压 解码后送入vpss,之后的link流程跟sdi的是一样的,但是这个流程走不通。我可以提供代码 。log。
希望得到你的解答。
TI中文支持网

