大家好:
在设计link chain的时候,发现dup link应用在VPSS M3中,一路用来显示,另一路做其他处理可行;在其他核比如video M3中用duplink分出两路在核间传递的时候,运行程序会发生UTILS_assert(pPrm->inQueParams.prevLinkQueId < pObj->inTskInfo.numQue);类似断言终止程序。
请问各位专家们,在核间进行视频流传输是不是只能一路数据啊?dup link的用处只能是在VPSS M3中吗?
敬请专家们解惑!
Chris Meng:
weili cai其他核比如video M3中用duplink分出两路在核间传递的时候
能否举个例子,你说的核间,指M3还是dsp,还是A8?
注意两个M3使用的memory map是一致的,但M3和DSP,A8是map是不同的,在M3/DSP/A8间传递数据要使用特殊的link,例如IpcBitsInLinkHLOS, IpcBitsOutLinkHLOS, IpcFramesInLinkHLOS, IpcFramesOutLinkHLOS, IpcBitsInLinkRTOS, IpcBitsOutLinkRTOS, IpcFramesInLinkRTOS, IpcFramesOutLinkRTOS等。
weili cai:
回复 Chris Meng:
你好:
举个例子,数据流进入VideoM3里之后, ipcBitsInVideo->duplink拷贝成两路,一路出来VideoM3进入A8,另一路解码后出来进入VpssM3:
duplink1->ipcBitsOutVideo->ipcBitsInHLOS,duplink2->declink->ipcOutVideo->ipcInVpss。这是我写的链路思路。
运行的时候提示UTILS_assert(pPrm->inQueParams.prevLinkQueId < pObj->inTskInfo.numQue)。
请问这样的思路可以行得通吗?
Chris Meng:
回复 weili cai:
你好,
压缩后的数据是从哪里进入video M3的,通常都是A8把需要解码的码流给M3,如果是这样,那为什么还要把这个码流再返还给A8?
你的错误是否是link创建顺序不对的问题?
https://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/p/79952/199054.aspx
weili cai:
回复 Chris Meng:
是从A8进入video M3的……
我要返回一路视频到A8通过网络发送出去,另一路做算法处理。之所以这样想,是看到A8在接收摄像头数据的同时直接把RTP包头去掉了,所以我返回A8先打包,再发送。
请问可以直接在A8里接收视频流dup成两路处理吗?
之前写的video M3核内dup的链路理论上行得通吧?只是可能creatlink的API顺序或者类似代码问题造成的assert?
weili cai:
回复 Chris Meng:
重新改了一下creatlink的顺序,那个assert的问题没了,但是又出现一个新的情况,请教一下您见过这种错误吗?
启动运行程序,打印以下信息:
Enter Choice: [m3video] MSGQ:Warning!! Forcing waitAck = TRUE as waitAck = FALSE is not supported.Fix send cmd [0x4] to linkId [0x200000a
[m3video] MSGQ:Warning!! Forcing waitAck = TRUE as waitAck = FALSE is not supported.Fix send cmd [0x4] to linkId [0x200000a
BitsOutTsk() FrameRate = 0/s, numsBytes = 0
Chris Meng:
回复 weili cai:
你好,
我还是建议码流不要再从M3传回给A8,在A8侧直接输出就好。
对于你上面的错误,你看看下面的讨论是否有借鉴?
http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/272647