swms模块参数配置如下,由于nextlink不是display,所以需要配套avsync配置,代码如下:
但在启动时出现如下错误打印:
[m3vpss ] 39036: DUP : Create Done !!!
[m3vpss ]
[m3vpss ] 39193:ERR::linkID:20000036::channelID:-1::errorCode:-3::FileName:links_m3vpss/avsync/avsync_m3vpss.c::linuNum:980::errorCondition:((pObj->srObj->numAudQueCreated == 0) && (pObj->srObj->numVidQueCreated[Avsync_mapDisplayLinkID2Index(cfg->displayLinkID)] == 0))
i = 1;
printf("/************swMsId[1] is %d***************/\r\n", swMsId[1]);
swMsPrm[i].numSwMsInst = 1;
swMsPrm[i].swMsInstId[0] = SYSTEM_SW_MS_SC_INST_DEI_SC_NO_DEI ;
swMsPrm[i].inQueParams.prevLinkId = dupId3;
swMsPrm[i].inQueParams.prevLinkQueId = 2;
swMsPrm[i].outQueParams.nextLink = nsfId[1];
swMsPrm[i].lineSkipMode = FALSE; //如果为TRUE可以节省性能
swMsPrm[i].enableLayoutGridDraw = TRUE;//FALSE;
/*alex added 当输入小于30帧,输出60帧时有用,输入大于30帧时会自动关闭*/
swMsPrm[i].enableOuputDup = TRUE;
/*Flag to enable the SWMS doScaling process tie-up with dsiplay
interrupt. Otherwise scaling is triggered by SWMS internal clock object*/
/*如果改为TRUE,是否能解决can not get empty buf问题*/
swMsPrm[i].enableProcessTieWithDisplay = FALSE;
/*用于底层驱动的回调函数的运转周期tiemperiod
pObj->timerPeriod = (1000/(layoutParams->outputFPS));*/
swMsPrm[i].layoutPrm.outputFPS = gblGetVideoDecFrameRate(0);//ulDisplayFrameRate;//从display 格式中提取,目前默认60帧
swMsPrm[i].maxInputQueLen = NUMBUFSPERCH_420_SWMS_IN;//8;
/*实际编码参数可能需要在这里体现*/
swMsPrm[i].maxOutRes = chainsCfg->displayRes[0];//默认固定1080P60
/*底层驱动允许的最大个数为5default+4 SW_MS_LINK_MAX_OUT_FRAMES
16个时效果未必好,本地都会跳,太少也不行,如2个,则一直帧率不足*/
swMsPrm[i].numOutBuf = NUMBUFSPERCH_422_SWMS_OUT;//8;
//swMs参数初始化,无实质影响
//Chains_swMsSetLayoutParams(0, &swMsPrm[i]);
printf("swMsPrm[%d].layoutPrm.outputFPS = %d\n", i, swMsPrm[i].layoutPrm.outputFPS);
AvsyncLink_LinkSynchConfigParams avsyncPrm_aux;
AvsyncLink_LinkSynchConfigParams_Init(&avsyncPrm_aux);
System_linkCreate(dupId3, &dupPrm3, sizeof(dupPrm3));
Chains_setCustomAvsyncPrm(&avsyncPrm_aux,
swMsPrm[1].inQueParams.prevLinkId,
swMsPrm[1].inQueParams.prevLinkQueId,
swMsId[1]);
System_linkCreate(swMsId[1], &swMsPrm[1], sizeof(swMsPrm[1]));