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 rdk swmslink是不是后面只能跟DisplayLink



我的目前大概的chains是  capture dup(4个) merge sclr swms nsf等等  不知这样子可行不

  • 你好,

    理论上是没有限制的。但为什么你的use case需要先sclr,再swms?swms就是缩放加拼接。NSF是为了做422到420转换么?

  • sclr里面有个 crop 我是先用sclr做完裁剪,在用swms 放大 在拼接的  nsf就是为了422转420

  • 不知道你是用的sdk的哪个版本;

    在DVRRDK4.0 里面可以支持其他模块的,但是会有警告出现,在avsync里面会检测swms后面会不会是dispaly link

    在avsync_m3vpss.c中处理,修改后就可以了,后面可以正常接dispaly以外的其他link的

     

  • 能告诉我怎么处理吗, 我也遇到了同样的问题

  • 你是用的那个版本的开发包;

    可以把你错误信息贴出来吗?

  • 我用的版本是 rdk4.0 

    错误是:

    [m3vpss ] 174343:ERR::linkID:20000036::channelID:-1::errorCode:-3::FileName:links_m3vpss/avsync/avsync_m3vpss.c::linuNum:1236::errorCondition:((avsync_map_link)

     [m3vpss ] AVSYNC:WARNING!!!.AVSYNC config invalid for linkID[20000030]:chId[51] Will Default to AVSYNC disabled

    打印多次后程序就退出了

  • 下面是diff的log信息,你参考一下;

    这里主要是做了一个判断,swms的next link 是不是 display link,修改一下就可以通过了,试一下

  • 你好, 我修改后,不再提示错误。 但程序也不往下走了,

    帮我看下参数设置 有问题没

    387     SwMsLink_CreateParams           swMsPrm;
    388     MULTICH_INIT_STRUCT(SwMsLink_CreateParams,swMsPrm);
    389     swMsPrm.numSwMsInst               = 1;
    390     swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_SC5;
    391     swMsPrm.inQueParams.prevLinkId    = gMultiCh_VcapVencVdisObj.dupId[1];
    392     swMsPrm.inQueParams.prevLinkQueId = 1;
    393     swMsPrm.outQueParams.nextLink     = gVcapModuleContext.ipcFramesOutVpssToHostId;
    394     swMsPrm.maxInputQueLen            = SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
    395     swMsPrm.maxOutRes                 = VSYS_STD_1080P_60;
    396     swMsPrm.lineSkipMode              = FALSE;
    397     swMsPrm.enableProcessTieWithDisplay = FALSE;

  • 你好;

    你可以贴出你完整的log信号,和你Usecase的整个chains代码吗?

  • cap(1080p) --dup -- enc( h264)

                              |     ---- sclr (720*576)  --- dup  --- enc (h264)

                                                                            |     ----  swms -- ipcFramesOutVpss -- ipcFramesInHost

    368     dupPrm1.numOutQue                 = 2;
    369     dupPrm1.outQueParams[0].nextLink  = gMultiCh_VcapVencVdisObj.mergeId[0];
    370
    371     /*添加swms*/
    372     IpcFramesOutLinkRTOS_CreateParams  ipcFramesOutVpssToHostPrm;
    373     MULTICH_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams ,ipcFramesOutVpssToHostPrm);
    374
    375     UInt32 swMsId    = SYSTEM_LINK_ID_SW_MS_MULTI_INST_0;
    376     dupPrm1.outQueParams[1].nextLink  = swMsId;
    377
    378     SwMsLink_CreateParams           swMsPrm;
    379     MULTICH_INIT_STRUCT(SwMsLink_CreateParams,swMsPrm);
    380     swMsPrm.numSwMsInst               = 1;
    381     swMsPrm.swMsInstId[0]             = SYSTEM_SW_MS_SC_INST_SC5;
    382     swMsPrm.inQueParams.prevLinkId    = gMultiCh_VcapVencVdisObj.dupId[1];
    383     swMsPrm.inQueParams.prevLinkQueId = 1;
    384     swMsPrm.outQueParams.nextLink     = gVcapModuleContext.ipcFramesOutVpssToHostId;
    385     swMsPrm.maxInputQueLen            = SYSTEM_SW_MS_DEFAULT_INPUT_QUE_LEN;
    386     swMsPrm.maxOutRes                 = VSYS_STD_576P;
    387     swMsPrm.initOutRes                = VSYS_STD_576P;
    388     swMsPrm.lineSkipMode              = FALSE;
    389     swMsPrm.enableProcessTieWithDisplay = FALSE;
    390
    391     ipcFramesOutVpssToHostPrm.baseCreateParams.inQueParams.prevLinkId = swMsId;
    392     ipcFramesOutVpssToHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    393
    394
    395     /*ipcFrameOut D1->A8*/
    396     ipcFramesOutVpssToHostPrm.baseCreateParams.noNotifyMode = TRUE;
    397     ipcFramesOutVpssToHostPrm.baseCreateParams.notifyNextLink = FALSE;
    398     ipcFramesOutVpssToHostPrm.baseCreateParams.notifyPrevLink = TRUE;
    399     ipcFramesOutVpssToHostPrm.baseCreateParams.outQueParams[0].nextLink = gVcapModuleContext.ipcFramesInHostId;
    400

    在demo_vcap_file.c 中接收yuv数据

    180         status =  Vcap_getFullVideoFrames(&bufList,TIMEOUT_NO_WAIT);
    181         if(status==ERROR_NONE && bufList.numFrames)
    182         {
    183             for(frameId=0; frameId<bufList.numFrames; frameId++)
    184             {
    185                 pbuf = &bufList.frames[frameId];
    186                 frameSize = (pbuf->frameWidth * pbuf->frameHeight) * 3 >> 1 ;
    187                 OSA_printf("[YUV]  size = %d, wid=%d, hi=%d, time = %ld \n",
    188                         frameSize,  pbuf->frameWidth, pbuf->frameHeight, (long int)pbuf->timeStamp);

    没有任何打印

     [m3vpss ]  12409: SWMS    : ******* Configuring clock 15 secs...

     [m3vpss ]  12409: SWMS0    : Loading Vertical Co-effs (UPSCALE)x ...

     [m3vpss ]  12409: SWMS0    : Loading Horizontal Co-effs (UPSCALE)x ...

     [m3vpss ]  12409: SWMS    : Co-effs Loading ... DONE !!!

     [m3vpss ]  

     [m3vpss ]  *** [SWMS0] Mosaic Parameters ***

     [m3vpss ]  

     [m3vpss ]  Output FPS: 0

     [m3vpss ]  

     [m3vpss ]  Win | Ch  | Input      | Input          | Input         | Input       | Output     |  Output         | Output        | Output      | Low Cost | SWMS|

     [m3vpss ]  Num | Num | Start X, Y | Width x Height | Pitch Y / C   | Memory Type | Start X, Y |  Width x Height | Pitch Y / C   | Memory Type | ON / OFF | Inst|

     [m3vpss ]  -----------------------------------------------------------------------------------------------------------------------------------------------------

     [m3vpss ]  

     [host] IpcFramesInLink_tskMain:Entered
     [host]  201133: IPC_FRAMES_IN   : Create in progress !!!

     [host]  201133: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_20] ...
     201139: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_20] ...

     [m3vpss ] SWMS:HEAPID:0        USED:224

     [m3vpss ] SWMS:HEAPID:1        USED:43776

     [m3vpss ] SWMS:HEAPID:4        USED:50462720

     [m3vpss ]  212507: SWMS: Create Done !!!

    在之前没有添加swms是是可以输出yuv的

  • 不好意思,没有看出问题;

    建议跟踪一下代码,调试一下,应当可以查到问题;

    可以调试一下上面diff的代码;

     

    我猜应当是你程序配置的问题,diff文件也是4.0rdk里面调试的,是没有问题的

    建议再调试一下程序吧

  • 你好,我也按照这个改了,但还是显示之前那个错误,改的程序没起作用,是没编译到那个程序吗

  • 建议还是 到 m3 里面去 debug 一下这个问题,可以解决的;

  • 改完程序提示assertion@line:62 in links_m3vpass/avsync/avsync_m3vpass.c:displayID<UTILS_ARRAYSIZE(pobj->displayobj):failed!!
  • 你的sdk 是哪个版本 ?
  • 4.01.00.02版本,按照你附件修改完代码后,编码的数据也没有,但是不报错误,拼接完送去编码的话,应该只用一个通道编码吧?
  • 编码数据没有了, 需要带代码里面去调试一下,不要只看到结果;
    拼接后,就只有一个编码通道了;
  • 请问怎么查看每个模块的输入输出数据呢?linux系统小白,dm8168这种异购多核是不是不好调试啊
  • 请问,swms模块,加入输入进去的是四幅图,我可以做一个2*2显示,显示到一个画面上,但我想问一下,它是在内存里把四个画面拼成一个再送到display模块的吗?是2*2layout类似的函数实现的?假如我是通过swms模块送去编码的话,其实编码的是已经合成一个画面的图像吗?