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

IPC Frames Out 后面接displaylink出错

我的CHAIN如下,程序运行后出错

                                   capture —> Dei —>  IPC Frames Out —> Display
                                                                                      |
                                                                                  process link
                                                                                      |
                                                                                   OSD

打印信息如下

[c6xdsp ] IPC_FRAMES_IN:HEAPID:0       USED:304

[c6xdsp ]  16277: IPC_FRAMES_IN   : Create Done !!!

[m3vpss ]  16675: IPC_FRAMES_OUT   : Create Done !!!

[m3vpss ]  16679: SELECT   : Create Done !!!

[m3vpss ]  16680: DISPLAY: Create in progress !!!

[m3vpss ]  16681: Assertion @ Line: 941 in links_m3vpss/display/displayLink_drv.c: status == FVID2_SOK : failed

user1178538:

我的代码如下:gVcapModuleContext.captureId= SYSTEM_LINK_ID_CAPTURE;DSP_LINK_ID_ALG= USER_DSP_LINK_ID_APP;//SYSTEM_LINK_ID_ALG_0;DSP_LINK_ID_IPC_FRAME_IN= SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;VPSS_LINK_ID_IPC_FRAME_OUT= SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;gVcapModuleContext.deiId[0]= SYSTEM_LINK_ID_DEI_0;gVdisModuleContext.swMsId[0]= SYSTEM_LINK_ID_SW_MS_MULTI_INST_0;gVdisModuleContext.displayId[0] = SYSTEM_LINK_ID_DISPLAY_0;
capPrms.outQueParams[0].nextLink = gVcapModuleContext.deiId[0];capPrms.numVipInst= 2;// 2 vip instance.capPrms.tilerEnable= FALSE;capPrms.numBufsPerCh= 8;capPrms.maxBlindAreasPerCh= 4;capPrms.isPalMode = Vcap_isPalMode();
//#if ! defined CAP_DEV_TVP5158capPrms.doCropInCapture= FALSE;capPrms.enableSdCrop= FALSE;
//#endif
/* First capture instance init */prm_cap_inst = &capPrms.vipInst[0];prm_cap_inst->vipInstId= (SYSTEM_CAPTURE_INST_VIP0_PORTA + 0 ) % SYSTEM_CAPTURE_INST_MAX;prm_cap_inst->inDataFormat= SYSTEM_DF_YUV422P;prm_cap_inst->numOutput= 1;
//#if ! defined CAP_DEV_TVP5158prm_cap_inst->standard= SYSTEM_STD_1080P_60;prm_cap_inst->videoIfMode= DEVICE_CAPT_VIDEO_IF_MODE_16BIT;prm_cap_inst->videoCaptureMode= DEVICE_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC;

#if ! defined CAP_DEV_TVP5158capPrms.doCropInCapture= FALSE;capPrms.enableSdCrop= FALSE;
#endif
CaptureLink_OutParams *prm_cap_out = &prm_cap_inst->outParams[0];prm_cap_out->dataFormat= SYSTEM_DF_YUV422I_YUYV;prm_cap_out->scEnable= FALSE;prm_cap_out->scOutWidth= 0;prm_cap_out->scOutHeight= 0;prm_cap_out->outQueId= 0;
prm_cap_inst = &capPrms.vipInst[1];prm_cap_inst->vipInstId= (SYSTEM_CAPTURE_INST_VIP1_PORTA + 0 ) % SYSTEM_CAPTURE_INST_MAX;prm_cap_inst->inDataFormat= SYSTEM_DF_YUV422P;prm_cap_inst->numOutput= 1;

#if ! defined CAP_DEV_TVP5158prm_cap_inst->standard= SYSTEM_STD_1080P_60;prm_cap_inst->videoIfMode= DEVICE_CAPT_VIDEO_IF_MODE_16BIT;prm_cap_inst->videoCaptureMode= DEVICE_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC;
#elseprm_cap_inst->videoDecoderId= SYSTEM_DEVICE_VID_DEC_TVP5158_DRV;prm_cap_inst->standard= SYSTEM_STD_MUX_4CH_D1;// set input mode as 4 input with D1 resolution
#endif
capOutPrms = &prm_cap_inst->outParams[0];capOutPrms->dataFormat= SYSTEM_DF_YUV422I_YUYV;capOutPrms->scEnable= FALSE;capOutPrms->scOutWidth= 0;capOutPrms->scOutHeight= 0;capOutPrms->outQueId= 0;deiPrms.inQueParams.prevLinkId = gVcapModuleContext.captureId;deiPrms.inQueParams.prevLinkQueId = 0;deiPrms.inputDeiFrameRate= 30;deiPrms.outputDeiFrameRate= 30;deiPrms.enableOut[DEI_LINK_OUT_QUE_VIP_SC]= TRUE;deiPrms.outQueParams[DEI_LINK_OUT_QUE_VIP_SC].nextLink= VPSS_LINK_ID_IPC_FRAME_OUT;deiPrms.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][1].scaleMode = DEI_SCALE_MODE_ABSOLUTE;//对CH1(CH0—>HDSDICH1—>SD)进行缩放处理deiPrms.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][1].absoluteResolution.outWidth = 1920;deiPrms.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][1].absoluteResolution.outHeight = 1080;deiPrms.comprEnable= FALSE;deiPrms.setVipScYuv422Format= FALSE;
//#if ! defined CAP_DEV_TVP5158deiPrms.enableDeiForceBypass = TRUE;ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = gVcapModuleContext.deiId[0];ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = DEI_LINK_OUT_QUE_VIP_SC;ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 1;ipcFramesOutVpssPrm.baseCreateParams.processLink = DSP_LINK_ID_IPC_FRAME_IN;ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = TRUE;ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = gVdisModuleContext.swMsId[0];
ipcFramesInDspPrm.baseCreateParams.noNotifyMode= FALSE;ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = FALSE;ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = VPSS_LINK_ID_IPC_FRAME_OUT;ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;ipcFramesInDspPrm.baseCreateParams.numOutQue= 1;ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = DSP_LINK_ID_ALG;
algPrms.inQueParams.prevLinkId = DSP_LINK_ID_IPC_FRAME_IN;algPrms.inQueParams.prevLinkQueId = 0;algPrms.numInQue = 1;//algPrms.enableOSDAlg = TRUE;//algPrms.osdChCreateParams[0].maxWidth = 500;//algPrms.osdChCreateParams[0].maxHeight = 300;

//#endif
/* Mosaic link init */SwMsLink_CreateParams swmsPrms;MULTICH_INIT_STRUCT(SwMsLink_CreateParams ,swmsPrms);swmsPrms.inQueParams.prevLinkId= VPSS_LINK_ID_IPC_FRAME_OUT;swmsPrms.inQueParams.prevLinkQueId = 0;swmsPrms.numSwMsInst = 1;swmsPrms.swMsInstId[0] = SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI;swmsPrms.includeVipScInDrvPath= FALSE;swmsPrms.outQueParams.nextLink= gVdisModuleContext.displayId[0];swmsPrms.maxInputQueLen= 4;swmsPrms.maxOutRes= VSYS_STD_1080P_60;swmsPrms.initOutRes= gVdisModuleContext.vdisConfig.deviceParams[0].resolution;swmsPrms.numOutBuf= 8;swmsPrms.lineSkipMode= FALSE;swmsPrms.enableLayoutGridDraw= gVdisModuleContext.vdisConfig.enableLayoutGridDraw;MultiCh_swMsGetDefaultLayoutPrm(VDIS_DEV_HDMI, &swmsPrms, TRUE);
disPrms.inQueParams[0].prevLinkId= gVdisModuleContext.swMsId[0];disPrms.inQueParams[0].prevLinkQueId = 0;disPrms.displayRes= VSYS_STD_1080P_60;
//link的创建顺序必须和构建chain的link顺序一致,否则会导致link的创建失败System_linkControl( SYSTEM_LINK_ID_M3VPSS, SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES, NULL, 0, TRUE);
System_linkCreate(gVcapModuleContext.captureId, &capPrms, sizeof(capPrms));System_linkCreate(gVcapModuleContext.deiId[0], &deiPrms, sizeof(deiPrms));//printf("IPC numOut=%d\n",ipcFramesOutVpssPrm.inQueInfo.numQue); System_linkCreate(VPSS_LINK_ID_IPC_FRAME_OUT, &ipcFramesOutVpssPrm, sizeof(ipcFramesOutVpssPrm));System_linkCreate(DSP_LINK_ID_IPC_FRAME_IN, &ipcFramesInDspPrm, sizeof(ipcFramesInDspPrm));System_linkCreate(DSP_LINK_ID_ALG, &algPrms, sizeof(algPrms));System_linkCreate(gVdisModuleContext.swMsId[0], &swmsPrms, sizeof(swmsPrms));System_linkCreate(gVdisModuleContext.displayId[0], &disPrms, sizeof(disPrms));
/* setting frames from which channel should be display */DisplayLink_SwitchChannelParams prm_switch_ch;prm_switch_ch.activeChId = channel;System_linkControl(gVdisModuleContext.displayId[0],DISPLAY_LINK_CMD_SWITCH_CH,&prm_switch_ch,sizeof(prm_switch_ch),TRUE);

user1178538:

回复 user1178538:

各位高手帮我看看,我的chain配置有什么问题

Chris Meng:

回复 user1178538:

你好,

IPC frameout应该是两个异核之间使用的,例如M3和DSP。两个M3之前用ipclink吧。你看看现有的采集显示的代码。

Chris Meng:

回复 Chris Meng:

采集和显示是在同一个M3里面的。

user1178538:

回复 Chris Meng:

谢谢你的回复,我是想将经过DSP处理的结果也要显示出来,之前我在IPC FRAME OUT之后接的是swms link–>display link,这样是正常的,但是经过swms link,图像会延时一到两帧,所以我不想用swms link,这样的话IPC FRAME OUT该如何接display link呢?

user1178538:

回复 Chris Meng:

对,是贴错了,就是上面代码没经过swms link就出错

user1178538:

回复 Chris Meng:

对,是贴错了,就是上面代码没经过swms link就出错

user1178538:

回复 Chris Meng:

ipcframeout的输出是420SP

赞(0)
未经允许不得转载:TI中文支持网 » IPC Frames Out 后面接displaylink出错
分享到: 更多 (0)