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.

DM8168 SWMS Chains_setCustomAvsyncPrm ERROR



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]));