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?