This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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,打印信息查不到。希望高人指导一下,刚接触。

  • 你好;

    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,

  • 感谢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有什么区别呢

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

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

    这样方便定位问题;

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

  • hl chu 说:
    SYSTEM_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;

  • 感谢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,
    会是什么原因呢

  • 数据进入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,没进解码函数

  • DEC_LINK_REQ_OBJECT_TYPE_DUMMY_FLUSHFRAME类型是什么