Other Parts Discussed in Thread: TVP5158
Dear Sirs,
I use rdk 3.0 and I try to create my usecase:
cap -> nsf -> dup -> scalar -> nsf-> merge-> ipcOutVpss ->ipcInVideo -> enc -> ipcBitsOutVideo -> ipcBitsInHost
But I get error when I create scalar link!
Here is part of my code :
CaptureLink_CreateParams_Init(&capturePrm);
capturePrm.numVipInst = 4;
capturePrm.outQueParams[0].nextLink = gVcapModuleContext.nsfId[NSF_AFTER_CAPTURE];
capturePrm.tilerEnable = FALSE;
capturePrm.enableSdCrop = FALSE;
for(vipInstId=0; vipInstId<capturePrm.numVipInst; vipInstId++)
{
pCaptureInstPrm = &capturePrm.vipInst[vipInstId];
pCaptureInstPrm->vipInstId = (SYSTEM_CAPTURE_INST_VIP0_PORTA+vipInstId)%SYSTEM_CAPTURE_INST_MAX;
pCaptureInstPrm->videoDecoderId = SYSTEM_DEVICE_VID_DEC_TVP5158_DRV;
pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
pCaptureInstPrm->standard = SYSTEM_STD_MUX_4CH_D1;
pCaptureInstPrm->numOutput = 1;
pCaptureOutPrm = &pCaptureInstPrm->outParams[0];
pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV422I_YUYV;
pCaptureOutPrm->scEnable = FALSE;
pCaptureOutPrm->scOutWidth = 0;
pCaptureOutPrm->scOutHeight = 0;
pCaptureOutPrm->outQueId = 0;
}
/*
* Set up TVP Module
*
*/
for(i = 0; i < NUM_CAPTURE_DEVICES; i++)
{
vidDecVideoModeArgs[i].videoIfMode = DEVICE_CAPT_VIDEO_IF_MODE_8BIT;
vidDecVideoModeArgs[i].videoDataFormat = SYSTEM_DF_YUV422P;
vidDecVideoModeArgs[i].standard = SYSTEM_STD_MUX_4CH_D1;
vidDecVideoModeArgs[i].videoCaptureMode = DEVICE_CAPT_VIDEO_CAPTURE_MODE_MULTI_CH_PIXEL_MUX_EMBEDDED_SYNC;
vidDecVideoModeArgs[i].videoSystem = DEVICE_VIDEO_DECODER_VIDEO_SYSTEM_AUTO_DETECT;
vidDecVideoModeArgs[i].videoCropEnable = FALSE;
vidDecVideoModeArgs[i].videoAutoDetectTimeout = -1;
}
Vcap_configVideoDecoder(vidDecVideoModeArgs, NUM_CAPTURE_DEVICES);
/*
* Set up NSF Module
*
*/
NsfLink_CreateParams_Init(&nsfPrm[NSF_AFTER_CAPTURE]);
nsfPrm[NSF_AFTER_CAPTURE].bypassNsf = TRUE;
nsfPrm[NSF_AFTER_CAPTURE].tilerEnable = FALSE;
nsfPrm[NSF_AFTER_CAPTURE].inQueParams.prevLinkId = gVcapModuleContext.captureId;
nsfPrm[NSF_AFTER_CAPTURE].inQueParams.prevLinkQueId = 0;
nsfPrm[NSF_AFTER_CAPTURE].numOutQue = 1;
nsfPrm[NSF_AFTER_CAPTURE].outQueParams[0].nextLink = dupId;
nsfPrm[NSF_AFTER_CAPTURE].numBufsPerCh = 6;
dupPrm.inQueParams.prevLinkId = gVcapModuleContext.nsfId[NSF_AFTER_CAPTURE];
dupPrm.inQueParams.prevLinkQueId = 0;
dupPrm.notifyNextLink = TRUE;
dupPrm.outQueParams[0].nextLink = gVcapModuleContext.sclrId[0];
dupPrm.numOutQue = 1;
sclrPrm.enableLineSkipSc = FALSE;
sclrPrm.inputFrameRate = 30;
sclrPrm.outputFrameRate = 1;
sclrPrm.inQueParams.prevLinkId = dupId;
sclrPrm.inQueParams.prevLinkQueId = 0;
sclrPrm.outQueParams.nextLink = gVcapModuleContext.nsfId[NSF_AFTER_SCALAR_LINK];
sclrPrm.scaleMode = DEI_SCALE_MODE_RATIO;
sclrPrm.outScaleFactor.ratio.heightRatio.numerator = 1;
sclrPrm.outScaleFactor.ratio.heightRatio.denominator = 2;
sclrPrm.outScaleFactor.ratio.widthRatio.numerator = 1;
sclrPrm.outScaleFactor.ratio.widthRatio.denominator = 2;
sclrPrm.tilerEnable = FALSE; // force tiler disable;
sclrPrm.numBufsPerCh = 1;
nsfPrm[NSF_AFTER_SCALAR_LINK].bypassNsf = TRUE;
nsfPrm[NSF_AFTER_SCALAR_LINK].tilerEnable = TILER_ENABLE;
nsfPrm[NSF_AFTER_SCALAR_LINK].inQueParams.prevLinkId = gVcapModuleContext.sclrId[0];
nsfPrm[NSF_AFTER_SCALAR_LINK].inQueParams.prevLinkQueId = 0;
nsfPrm[NSF_AFTER_SCALAR_LINK].numOutQue = 1;
nsfPrm[NSF_AFTER_SCALAR_LINK].outQueParams[0].nextLink = mergeId;
nsfPrm[NSF_AFTER_SCALAR_LINK].numBufsPerCh = 1;
// CH0..15 - D1 FOR MJPEG
mergePrm.inQueParams[0].prevLinkId = gVcapModuleContext.nsfId[NSF_AFTER_SCALAR_LINK];
mergePrm.inQueParams[0].prevLinkQueId = 0;
mergePrm.notifyNextLink = TRUE;
mergePrm.numInQue = 1;
mergePrm.outQueParams.nextLink = ipcId[IPC_OUT_VPSS_LINK_IDX];
........
/*
* Create ALL Modules
*
*/
System_linkCreate (gVcapModuleContext.captureId, &capturePrm, sizeof(capturePrm));
System_linkCreate (gVcapModuleContext.nsfId[NSF_AFTER_CAPTURE], &nsfPrm[NSF_AFTER_CAPTURE], sizeof(nsfPrm[NSF_AFTER_CAPTURE]));
System_linkCreate(dupId, &dupPrm, sizeof(dupPrm));
System_linkCreate(gVcapModuleContext.sclrId[0], &sclrPrm, sizeof(sclrPrm));
System_linkCreate(gVcapModuleContext.nsfId[NSF_AFTER_SCALAR_LINK] , &nsfPrm[NSF_AFTER_SCALAR_LINK], sizeof(nsfPrm[NSF_AFTER_SCALAR_LINK]));
System_linkCreate(mergeId , &mergePrm , sizeof(mergePrm));
.....
My log is :
[m3vpss ] 26300: CAPTURE: Create in progress !!!
[m3vpss ] 26310: CAPTURE: VIP0 PortA capture mode is [ 8-bit, Pixel-mux Embedded Sync] !!!
[m3vpss ] 26388: CAPTURE: VIP0 PortB capture mode is [ 8-bit, Pixel-mux Embedded Sync] !!!
[m3vpss ] 26465: CAPTURE: VIP1 PortA capture mode is [ 8-bit, Pixel-mux Embedded Sync] !!!
[m3vpss ] 26542: CAPTURE: VIP1 PortB capture mode is [ 8-bit, Pixel-mux Embedded Sync] !!!
[m3vpss ] UTILS: DMA: Allocated CH (TCC) = 58 (58)
[m3vpss ] UTILS: DMA: 0 of 4: Allocated PaRAM = 58 (0x49004740)
[m3vpss ] UTILS: DMA: 1 of 4: Allocated PaRAM = 64 (0x49004800)
[m3vpss ] UTILS: DMA: 2 of 4: Allocated PaRAM = 65 (0x49004820)
[m3vpss ] UTILS: DMA: 3 of 4: Allocated PaRAM = 66 (0x49004840)
[m3vpss ] CAPTURE::HEAPID:0 USED:904
[m3vpss ] CAPTURE::HEAPID:4 USED:67829760
[m3vpss ] 26621: CAPTURE: Create Done !!!
[m3vpss ] 26621: NSF: Create in progress !!!
[m3vpss ] NSF::HEAPID:0 USED:128
[m3vpss ] NSF::HEAPID:1 USED:26048
[m3vpss ] NSF::HEAPID:4 USED:30523392
[m3vpss ] 26762: NSF: Create Done !!!
[m3vpss ] 26764: DUP : Create Done !!!
[m3vpss ] 26765: SCLR: Create in progress !!!
[m3vpss ] Memory allocation failed due to insufficient free memory, requested - 716288
[m3vpss ] 26765: SYSTEM : FREE SPACE : System Heap = 187928 B, Mbx = 10239 msgs)
[m3vpss ] 26766: SYSTEM : FREE SPACE : SR0 Heap = 1966080 B (1 MB)
[m3vpss ] 26766: SYSTEM : FREE SPACE : Frame Buffer = 51805056 B (49 MB)
[m3vpss ] 26766: SYSTEM : FREE SPACE : Bitstream Buffer = 94371712 B (89 MB)
[m3vpss ] 26766: SYSTEM : FREE SPACE : Tiler 8-bit = 62914560 B (60 MB) - TILER ON
[m3vpss ] 26766: SYSTEM : FREE SPACE : Tiler 16-bit = 41943040 B (40 MB) - TILER ON
[m3vpss ] 26766: Assertion @ Line: 344 in links_m3vpss/sclr/sclrLink_drv.c: status == FVID2_SOK : failed !!!
Could you help me with it issue?
Thank you!