各位好,我使用dm8168+mcfw,应用中需要动态设置osd参数,在Vsys_create() 之后,调用
Vcap_setDynamicParamChn(0, &dynamicParams, VCAP_OSDWINPRM);
进行osd的参数动态设置是能起作用的,但是 Vdis_start(); Venc_start(); Vcap_start();之后再次调用
Vcap_setDynamicParamChn(0, &dynamicParams, VCAP_OSDWINPRM);
进行参数设置发现不成功,跟踪到调用了
System_linkControl(gVcapModuleContext.dspAlgId[0], ALG_LINK_OSD_CMD_SET_CHANNEL_WIN_PRM, psCapChnDynaParam->osdChWinPrm, sizeof(AlgLink_OsdChWinParams), TRUE ) ,
继续跟踪,调用了System_ipcMsgQSendMsg 进行多核间的消息传递,继续跟踪到了
status = MessageQ_put(gSystem_ipcObj.remoteProcMsgQ[procId], (MessageQ_Msg)pMsgCommon);
该函数返回的status为MessageQ_S_SUCCESS ,因为上面的消息请求是要waitAck的,MessageQ_put后需要get他的回复消息,会继续调用
status = MessageQ_get(gSystem_ipcObj.selfAckMsgQ, (MessageQ_Msg*)&pAckMsg, timeout);
该调用的返回值status也只MessageQ_S_SUCCESS的,但pAckMsg->status值为-1,通过osdalglink中的接收消息端的打印信息表明并没有收到消息,不知道为什么核间通信会失败,而在Vdis_start(); Venc_start(); Vcap_start();之前的第一次消息却是发送成功。
调试无过,请各位给点思路,帮忙分析一下可能的原因,sdk目前版本为DVRRDK_03.00.00.00