TI中文支持网
TI专业的中文技术问题搜集分享网站

DM8168,A8,videoM3,vpssM3通信

数据传输过程:A8–videoM3–decode–vpssM3–sclr–dup–videoM3–encode–A8,link这样用对吗?

SYSTEM_HOST_LINK_ID_IPC_BITS_OUT_0,SYSTEM_VIDEO_LINK_ID_IPC_BITS_IN_0,

SYSTEM_LINK_ID_VDEC_0,SYSTEM_VIDEO_LINK_ID_IPC_OUT_M3_0,

SYSTEM_VPSS_LINK_ID_IPC_IN_M3_0,SYSTEM_LINK_ID_MP_SCLR_INST_0,

SYSTEM_VPSS_LINK_ID_DUP_0,SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0,

SYSTEM_VIDEO_LINK_ID_IPC_FRAMES_IN_0,SYSTEM_LINK_ID_VENC_0,

SYSTEM_VIDEO_LINK_ID_IPC_BITS_OUT_0,SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0。

编码那里好像没数据,有新数据的时候打印SYSTEM_CMD_NEW_DATA,打印信息查不到。希望高人指导一下,刚接触。

Ternence_Hsu:

你好;

SYSTEM_VPSS_LINK_ID_DUP_0,SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0,

SYSTEM_VIDEO_LINK_ID_IPC_FRAMES_IN_0,SYSTEM_LINK_ID_VENC_0,

需要调整为:

SYSTEM_VPSS_LINK_ID_DUP_0,SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0,

SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0,SYSTEM_LINK_ID_VENC_0,

hl chu:

回复 Ternence_Hsu:

感谢Hsu的回复,解码那里case SYSTEM_CMD_NEW_DATA只有一次啊,原来也是,我后面数据还没做处理。解码完从videoM3出去在IpcFramesOutLink_tskMain也查不到case SYSTEM_CMD_NEW_DATA,你觉得问题出在哪里呢

SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0和SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0有什么区别呢

Ternence_Hsu:

回复 hl chu:

你这里的解码应当是处理失败了,后面肯定是不会有数据的;

你的demo这样写,每一个环节都可能会出现问题,建议从简单的开始,确定dec 正常、enc正常、ipc正常、dup正常,再来实现上面的demo;

这样方便定位问题;

你可以把各模块的状态打印出来,分析link模块状态,在哪一步处理失败的;

Ternence_Hsu:

回复 hl chu:

hl chuSYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0和SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0有什么区别呢

SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0   把m3vpss的YUV数据传送到a8或者是dsp;

SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0   把m3vpss的YUV数据传送到m3video;

hl chu:

回复 Ternence_Hsu:

感谢Hsu,我是在usecase里的multich_vdec_vdis.c基础上改的,加了2个dup:-> dup [0]-> swms0->display0-> dup[1] -> swms1->display1-> dup[2] -> ipcFramesOutVpss-> IpcFramesInDsp-> dup[3] -> ipcFramesOutVpss1-> ipcFramesInVideo-> enc-> ipcBitsOutVideo-> ipcBitsInHost.获取待解码数据的Utils_queGet获取到的类型不是DEC_LINK_REQ_OBJECT_TYPE_REGULAR,获取了两次是DEC_LINK_REQ_OBJECT_TYPE_DUMMY_CHDELETE和DEC_LINK_REQ_OBJECT_TYPE_DUMMY_FLUSHFRAME,后面没进入Declink_h264DecodeFrameBatch,会是什么原因呢

hl chu:

回复 hl chu:

数据进入videoM3后,IpcBitsInLink_processBitBufs里面获取数据的循环只循环了一次

while (1)    {        pListElem = ListMP_getHead(pObj->listMPOutHndl);        if (pListElem == NULL)        {              break;        }       Vps_printf(" %d: IpcBitsInLink_processBitBufs:pListElem != NULL!!!\n",           Utils_getCurTimeInMsec());

        IpcBitsInLink_getBitBuf(pObj, pListElem, &pBitBuf);        UTILS_assert(SYSTEM_IPC_BITS_GET_BUFSTATE(pListElem->bufState)                     == IPC_BITBUF_STATE_OUTQUE);        pBitBuf->reserved[0] = curTime;        SYSTEM_IPC_BITS_SET_BUFOWNERPROCID(pListElem->bufState);        SYSTEM_IPC_BITS_SET_BUFSTATE(pListElem->bufState,                                     IPC_BITBUF_STATE_DEQUEUED);        pObj->stats.recvCount++;        status = Utils_quePut(&pObj->outBitBufQue, pBitBuf, BIOS_NO_WAIT);        UTILS_assert(status == FVID2_SOK);

        numBitBufs++;    }

后面打印numBitBufs为1,转换为bitBuf后,打印pBitBuf->bufSize[0], pBitBuf->fillLength[0], pBitBuf->mvDataFilledSize[0],这是没有数据吗,后面就是获取的类型不是DEC_LINK_REQ_OBJECT_TYPE_REGULAR,没进解码函数

hl chu:

回复 hl chu:

DEC_LINK_REQ_OBJECT_TYPE_DUMMY_FLUSHFRAME类型是什么

赞(0)
未经允许不得转载:TI中文支持网 » DM8168,A8,videoM3,vpssM3通信
分享到: 更多 (0)