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.

SWMS cannot pass video data

I'm going to read yuv data, and then mosaic display。
Read YUV file, channel 0 is 1920*1080, and channel 1 is 640*480
My software version is DVRRDK 4.0.
My LINK is as follows:
Read YUV -> ipcframesouthost -> ipcframesinvpss  -> SW Mosaic -> display
But display only the black box of the mosaic, no video data.

When I was so LINK as follows:
Read YUV -> ipcframesouthost -> ipcframesinvpss -> display.
Video data display.

My key code is as follows:

static Void MultiCh_setIpcFramesOutInQueInfo(System_LinkQueInfo *inQueInfo)
{
    inQueInfo->numCh = 2;

    inQueInfo->chInfo[0].bufType = SYSTEM_BUF_TYPE_VIDFRAME;
    inQueInfo->chInfo[0].dataFormat = SYSTEM_DF_YUV422I_YUYV;
    inQueInfo->chInfo[0].memType    = SYSTEM_MT_NONTILEDMEM;
    inQueInfo->chInfo[0].scanFormat = SYSTEM_SF_PROGRESSIVE;
    inQueInfo->chInfo[0].startX     = 0;
    inQueInfo->chInfo[0].startY     = 0;
    inQueInfo->chInfo[0].width      = 1920;
    inQueInfo->chInfo[0].height     = 1080;
    inQueInfo->chInfo[0].pitch[0]   = 1920*2;
    inQueInfo->chInfo[0].pitch[1]   = 1920*2;
    inQueInfo->chInfo[0].pitch[2]   = 1920*2;

 inQueInfo->chInfo[1].bufType = SYSTEM_BUF_TYPE_VIDFRAME;
    inQueInfo->chInfo[1].dataFormat = SYSTEM_DF_YUV422I_YUYV;
    inQueInfo->chInfo[1].memType    = SYSTEM_MT_NONTILEDMEM;
    inQueInfo->chInfo[1].scanFormat = SYSTEM_SF_PROGRESSIVE;
    inQueInfo->chInfo[1].startX     = 0;
    inQueInfo->chInfo[1].startY     = 0;
    inQueInfo->chInfo[1].width      = 640;
    inQueInfo->chInfo[1].height     = 480;
    inQueInfo->chInfo[1].pitch[0]   = 640*2;
    inQueInfo->chInfo[1].pitch[1]   = 640*2;
    inQueInfo->chInfo[1].pitch[2]   = 640*2;
}


    ipcFramesOutA8Prm.baseCreateParams.noNotifyMode = FALSE;
    ipcFramesOutA8Prm.baseCreateParams.notifyNextLink = TRUE;
    ipcFramesOutA8Prm.baseCreateParams.notifyPrevLink = FALSE;
    ipcFramesOutA8Prm.baseCreateParams.inQueParams.prevLinkId = SYSTEM_LINK_ID_INVALID;
    ipcFramesOutA8Prm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    ipcFramesOutA8Prm.baseCreateParams.numOutQue = 1;
    ipcFramesOutA8Prm.baseCreateParams.outQueParams[0].nextLink = gVdisModuleContext.ipcFramesInVpssFromHostId;
    MultiCh_setIpcFramesOutInQueInfo(&ipcFramesOutA8Prm.inQueInfo);

    ipcFramesInVpssFromA8Prm.baseCreateParams.noNotifyMode = FALSE;
    ipcFramesInVpssFromA8Prm.baseCreateParams.notifyNextLink = TRUE;
    ipcFramesInVpssFromA8Prm.baseCreateParams.notifyPrevLink = TRUE;
    ipcFramesInVpssFromA8Prm.baseCreateParams.inQueParams.prevLinkId = gVdisModuleContext.ipcFramesOutHostId;
    ipcFramesInVpssFromA8Prm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    ipcFramesInVpssFromA8Prm.baseCreateParams.numOutQue = 1;
    ipcFramesInVpssFromA8Prm.baseCreateParams.outQueParams[0].nextLink = gVdisModuleContext.swMsId[0];
 


    swMsPrm[0].swMsInstId[0]        = SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI;
    swMsPrm[0].swMsInstId[1]        = SYSTEM_SW_MS_SC_INST_VIP1_SC;
    swMsPrm[0].numSwMsInst          = 2;
    swMsPrm[0].swMsInstStartWin[0]  = 0;
    swMsPrm[0].swMsInstStartWin[1]  = 16;
    swMsPrm[0].enableProcessTieWithDisplay = TRUE;

    VDIS_DEV vdDevId = VDIS_DEV_HDMI;

    swMsPrm[0].inQueParams.prevLinkId     = gVdisModuleContext.ipcFramesInVpssFromHostId;
    swMsPrm[0].inQueParams.prevLinkQueId  = 0;
    swMsPrm[0].outQueParams.nextLink      = gVdisModuleContext.displayId[0];
    swMsPrm[0].numOutBuf                 = 7;

    swMsPrm[0].maxInputQueLen             = SYSTEM_SW_MS_INVALID_INPUT_QUE_LEN;

    swMsPrm[0].maxOutRes              = VSYS_STD_1080P_60;
    swMsPrm[0].initOutRes             = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;
       
    if(tilerEnable)
        swMsPrm[0].lineSkipMode           = FALSE;
    else
        swMsPrm[0].lineSkipMode           = TRUE;

    swMsPrm[0].enableLayoutGridDraw = gVdisModuleContext.vdisConfig.enableLayoutGridDraw;

    MultiCh_swMsGetDefaultLayoutPrm(vdDevId, &swMsPrm[0], FALSE);    /* both from 0-16 chnl */

    displayPrm[0].inQueParams[0].prevLinkId    = gVdisModuleContext.swMsId[0];
    displayPrm[0].inQueParams[0].prevLinkQueId = 0;
    displayPrm[0].displayRes                = swMsPrm[0].initOutRes;


    Read the file, and then send the read data out. The key API is as follows:
      Vdis_putFullVideoFrames(&emptyFrameList);
      Vdis_getEmptyVideoFrames(&emptyFrameList, 0);
   

    How do I solve this problem?

  • I'm going to read yuv data, and then mosaic display。
    Read YUV file, channel 0 is 1920*1080, and channel 1 is 640*480
    My software version is DVRRDK 4.0.
    My LINK is as follows:
    Read YUV -> ipcframesouthost -> ipcframesinvpss  -> SW Mosaic -> display
    But display only the black box of the mosaic, no video data.

    When I was so LINK as follows:
    Read YUV -> ipcframesouthost -> ipcframesinvpss -> display.
    Video data display.

    My key code is as follows:

    static Void MultiCh_setIpcFramesOutInQueInfo(System_LinkQueInfo *inQueInfo)
    {
        inQueInfo->numCh = 2;

        inQueInfo->chInfo[0].bufType = SYSTEM_BUF_TYPE_VIDFRAME;
        inQueInfo->chInfo[0].dataFormat = SYSTEM_DF_YUV422I_YUYV;
        inQueInfo->chInfo[0].memType    = SYSTEM_MT_NONTILEDMEM;
        inQueInfo->chInfo[0].scanFormat = SYSTEM_SF_PROGRESSIVE;
        inQueInfo->chInfo[0].startX     = 0;
        inQueInfo->chInfo[0].startY     = 0;
        inQueInfo->chInfo[0].width      = 1920;
        inQueInfo->chInfo[0].height     = 1080;
        inQueInfo->chInfo[0].pitch[0]   = 1920*2;
        inQueInfo->chInfo[0].pitch[1]   = 1920*2;
        inQueInfo->chInfo[0].pitch[2]   = 1920*2;

     inQueInfo->chInfo[1].bufType = SYSTEM_BUF_TYPE_VIDFRAME;
        inQueInfo->chInfo[1].dataFormat = SYSTEM_DF_YUV422I_YUYV;
        inQueInfo->chInfo[1].memType    = SYSTEM_MT_NONTILEDMEM;
        inQueInfo->chInfo[1].scanFormat = SYSTEM_SF_PROGRESSIVE;
        inQueInfo->chInfo[1].startX     = 0;
        inQueInfo->chInfo[1].startY     = 0;
        inQueInfo->chInfo[1].width      = 640;
        inQueInfo->chInfo[1].height     = 480;
        inQueInfo->chInfo[1].pitch[0]   = 640*2;
        inQueInfo->chInfo[1].pitch[1]   = 640*2;
        inQueInfo->chInfo[1].pitch[2]   = 640*2;
    }


        ipcFramesOutA8Prm.baseCreateParams.noNotifyMode = FALSE;
        ipcFramesOutA8Prm.baseCreateParams.notifyNextLink = TRUE;
        ipcFramesOutA8Prm.baseCreateParams.notifyPrevLink = FALSE;
        ipcFramesOutA8Prm.baseCreateParams.inQueParams.prevLinkId = SYSTEM_LINK_ID_INVALID;
        ipcFramesOutA8Prm.baseCreateParams.inQueParams.prevLinkQueId = 0;
        ipcFramesOutA8Prm.baseCreateParams.numOutQue = 1;
        ipcFramesOutA8Prm.baseCreateParams.outQueParams[0].nextLink = gVdisModuleContext.ipcFramesInVpssFromHostId;
        MultiCh_setIpcFramesOutInQueInfo(&ipcFramesOutA8Prm.inQueInfo);

        ipcFramesInVpssFromA8Prm.baseCreateParams.noNotifyMode = FALSE;
        ipcFramesInVpssFromA8Prm.baseCreateParams.notifyNextLink = TRUE;
        ipcFramesInVpssFromA8Prm.baseCreateParams.notifyPrevLink = TRUE;
        ipcFramesInVpssFromA8Prm.baseCreateParams.inQueParams.prevLinkId = gVdisModuleContext.ipcFramesOutHostId;
        ipcFramesInVpssFromA8Prm.baseCreateParams.inQueParams.prevLinkQueId = 0;
        ipcFramesInVpssFromA8Prm.baseCreateParams.numOutQue = 1;
        ipcFramesInVpssFromA8Prm.baseCreateParams.outQueParams[0].nextLink = gVdisModuleContext.swMsId[0];
     


        swMsPrm[0].swMsInstId[0]        = SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI;
        swMsPrm[0].swMsInstId[1]        = SYSTEM_SW_MS_SC_INST_VIP1_SC;
        swMsPrm[0].numSwMsInst          = 2;
        swMsPrm[0].swMsInstStartWin[0]  = 0;
        swMsPrm[0].swMsInstStartWin[1]  = 16;
        swMsPrm[0].enableProcessTieWithDisplay = TRUE;

        VDIS_DEV vdDevId = VDIS_DEV_HDMI;

        swMsPrm[0].inQueParams.prevLinkId     = gVdisModuleContext.ipcFramesInVpssFromHostId;
        swMsPrm[0].inQueParams.prevLinkQueId  = 0;
        swMsPrm[0].outQueParams.nextLink      = gVdisModuleContext.displayId[0];
        swMsPrm[0].numOutBuf                 = 7;

        swMsPrm[0].maxInputQueLen             = SYSTEM_SW_MS_INVALID_INPUT_QUE_LEN;

        swMsPrm[0].maxOutRes              = VSYS_STD_1080P_60;
        swMsPrm[0].initOutRes             = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;
           
        if(tilerEnable)
            swMsPrm[0].lineSkipMode           = FALSE;
        else
            swMsPrm[0].lineSkipMode           = TRUE;

        swMsPrm[0].enableLayoutGridDraw = gVdisModuleContext.vdisConfig.enableLayoutGridDraw;

        MultiCh_swMsGetDefaultLayoutPrm(vdDevId, &swMsPrm[0], FALSE);    /* both from 0-16 chnl */

        displayPrm[0].inQueParams[0].prevLinkId    = gVdisModuleContext.swMsId[0];
        displayPrm[0].inQueParams[0].prevLinkQueId = 0;
        displayPrm[0].displayRes                = swMsPrm[0].initOutRes;


        Read the file, and then send the read data out. The key API is as follows:
          Vdis_putFullVideoFrames(&emptyFrameList);
          Vdis_getEmptyVideoFrames(&emptyFrameList, 0);
       

        How do I solve this problem?