如题,我的输入是720P H264编码视频,经过M3解码后进行缩放,后加入DSP,再将处理的视频送入M3编码,再送入A8,但是在经过sclrlink和nsflink后,发现进入M3编码的数据只有一点点,若是不加入sclrlink和nsflink则是对的,请大家帮我看下我的sclrlink和nsflink链接是不是出问题了呢。
ipcOutVideoPrm.inQueParams.prevLinkId = gVdecModuleContext.decId;
ipcOutVideoPrm.inQueParams.prevLinkQueId = 0;
ipcOutVideoPrm.outQueParams[0].nextLink = gMultiCh_VdecVdisObj.ipcInVpssId;
ipcOutVideoPrm.notifyNextLink = TRUE;
ipcOutVideoPrm.notifyPrevLink = TRUE;
ipcOutVideoPrm.numOutQue = 1;
ipcInVpssPrm.inQueParams.prevLinkId = gMultiCh_VdecVdisObj.ipcOutVideoId;
ipcInVpssPrm.inQueParams.prevLinkQueId = 0;
ipcInVpssPrm.notifyNextLink = TRUE;
ipcInVpssPrm.notifyPrevLink = TRUE;
ipcInVpssPrm.numOutQue = 1;
//下面的就是我自己连接上面的
ipcInVpssPrm.outQueParams[0].nextLink =gMultiCh_VdecVdisObj.sclrId;
SclrLink_CreateParams_Init(&sclrPrm);
sclrPrm.inQueParams.prevLinkId = gMultiCh_VdecVdisObj.ipcInVpssId;//gMultiCh_VdecVdisObj.mpSclrId;
//sclrPrm.pathId = SCLR_LINK_SC5;//SCLR_LINK_SEC0_SC3;//SCLR_LINK_SC5;
sclrPrm.inQueParams.prevLinkQueId = 0;
sclrPrm.outQueParams.nextLink =gMultiCh_VdecVdisObj.nsfId;
sclrPrm.tilerEnable = FALSE;
sclrPrm.enableLineSkipSc = FALSE;//TRUE;//FALSE;
sclrPrm.inputFrameRate = 25;//50;//25;//60;//25;//30;//15;//30;//60;
sclrPrm.outputFrameRate = 25;//25;//30;//30;//15;//30;//60;
sclrPrm.outDataFormat = SYSTEM_DF_YUV422I_YUYV; sclrPrm.scaleMode = DEI_SCALE_MODE_ABSOLUTE;
sclrPrm.outScaleFactor.absoluteResolution.outWidth = 640;//704;//640;//352;//320;//704;
sclrPrm.outScaleFactor.absoluteResolution.outHeight = 360;//576;//360;//288;//240;//576;
sclrPrm.numBufsPerCh = 2;
NsfLink_CreateParams_Init(&nsfPrm);
nsfPrm.bypassNsf = TRUE;//FALSE;//TRUE;
nsfPrm.inputFrameRate = 1;
nsfPrm.outputFrameRate = 1;
nsfPrm.tilerEnable = FALSE;
nsfPrm.inQueParams.prevLinkId = gMultiCh_VdecVdisObj.sclrId;
nsfPrm.inQueParams.prevLinkQueId = 0;
nsfPrm.numOutQue = 1;
nsfPrm.numBufsPerCh = 2;
nsfPrm.outQueParams[0].nextLink =gMultiCh_VdecVdisObj.dupId[0];
dupPrm[0].inQueParams.prevLinkId = gMultiCh_VdecVdisObj.nsfId;
//以上的就是我自己加的,若是不加的话,是可以的
dupPrm[0].inQueParams.prevLinkQueId = 0;
dupPrm[0].numOutQue = 2;//2;//gVsysModuleContext.vsysConfig.numDisplays;
dupPrm[0].outQueParams[0].nextLink = gVdisModuleContext.swMsId[0];
dupPrm[0].outQueParams[1].nextLink = gMultiCh_VcapVencVdisObj.ipcOutVpssId;//yl_add
dupPrm[0].notifyNextLink = TRUE;
//IpcLink_CreateParams_Init(&ipcOutVpssPrm); ipcOutVpssPrm.inQueParams.prevLinkId = gMultiCh_VdecVdisObj.dupId[0];//yl_add
ipcOutVpssPrm.inQueParams.prevLinkQueId = 1; //ipcOutVpssPrm.inQueParams.prevLinkQueId = 0;
ipcOutVpssPrm.numOutQue = 1; ipcOutVpssPrm.outQueParams[0].nextLink = gMultiCh_VcapVencVdisObj.ipcInVideoId; ipcOutVpssPrm.notifyNextLink = TRUE; ipcOutVpssPrm.notifyPrevLink = TRUE; ipcOutVpssPrm.noNotifyMode = FALSE;
//IpcLink_CreateParams_Init(&ipcInVideoPrm); ipcInVideoPrm.inQueParams.prevLinkId =gMultiCh_VcapVencVdisObj.ipcOutVpssId;
ipcInVideoPrm.inQueParams.prevLinkQueId = 0;
ipcInVideoPrm.numOutQue = 1;
ipcInVideoPrm.outQueParams[0].nextLink = encId;
ipcInVideoPrm.notifyNextLink = TRUE;
ipcInVideoPrm.notifyPrevLink = TRUE;//FALSE;
ipcInVideoPrm.noNotifyMode = FALSE;//TRUE;
若是不加入sclrlink和nsflink,则经过M3解码后再经过M3编码送入A8是可以的,但是加入sclrlink和nsflink后送入M3编码的数据感觉只有一点点,一帧左右样,后续就没有数据了,这是为什么呢,请大家帮我看看是不是我哪些地方设置不对呢。
Ternence_Hsu:
你好;
每一个link 都是一个相对独立的模块,你需要查一下是哪些模块数据和帧率是正常的,哪些模块处理1帧后就没有处理数据了,可以把每一个模块的状态打印出来。
建议你先跟一下link ,确定出现问题的模块。
feng feng5:
回复 Ternence_Hsu:
回复ternence hsu,谢谢啦,这个是因为帧率不同步造成的么,主要是不加这两个link就没有问题,所以问题应该就是这sclrlink与nsflink
Ternence_Hsu:
回复 feng feng5:
一般和帧率没有关系,只是帧率输入输出匹配的问题,不会影响到视频画面的输出的。
feng feng5:
回复 Ternence_Hsu:
对呀,这就奇怪了,我觉得我的link链接也没有什么问题样,真是没有搞懂