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]));
Ternence_Hsu:
你好;
你是在dvrrdk 4.0 上面开发吗? 还是其他版本 ?
user5872361:
回复 Ternence_Hsu:
请问,swms下一个模块不是displaylink,需要配置avsync吗
Ternence_Hsu:
回复 user5872361:
user5872361请问,swms下一个模块不是displaylink,需要配置avsync吗
Ternence_Hsu:
回复 user5872361:
参考下面修改:
e2echina.ti.com/…/219047user5872361:
回复 Ternence_Hsu:
你好,参考这个改完之后,两个swms模块,一个送显示,一个送编码器,但是视频动态显示一秒之后就不动了,应该是enc那一路没有通的原因?
Ternence_Hsu:
回复 user5872361:
到 mcfw 里面去 debug 一下, 查一下 link 的状态;