我的目前大概的chains是 capture dup(4个) merge sclr swms nsf等等 不知这样子可行不
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.
我的目前大概的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 一下这个问题,可以解决的;