HI:
I'm trying to run the demo vcap_vdis in dvrrdk4.0,by making some changes, my demo captures single channel video of 720p by tvp7002, and has the process of vcap_nfs_ dei _dup_display,but it asserted an error when creating displaylink.
And I didn't kown why it happed, could anyone help me out?
Thanks a lot !
Here are the logs:
1: VCAP + VENC + VDEC + VDIS - Progressive SD Encode + Decode
2: VCAP + VENC + VDIS - SD Encode ONLY
3: VCAP + VENC + VDEC + VDIS - Progressive HD Encode + Decode
4: VDEC + VDIS - SD/HD Decode ONLY
a: 960H DVR usecase
e: Exit
Enter Choice: 5
--------------- CHANNEL DETAILS-------------
Capture Channels => 1
Disp Channels => 1
-------------------------------------------
0: SYSTEM: System Common Init in progress !!!
0: SYSTEM: IPC init in progress !!!
17: SYSTEM: CPU [DSP] syslink proc ID is [0] !!!
17: SYSTEM: CPU [VIDEO-M3] syslink proc ID is [1] !!!
17: SYSTEM: CPU [VPSS-M3] syslink proc ID is [2] !!!
17: SYSTEM: CPU [HOST] syslink proc ID is [3] !!!
17: SYSTEM: Creating MsgQ Heap [IPC_MSGQ_MSG_HEAP_3] ...
20: SYSTEM: Creating MsgQ [HOST_MSGQ] ...
22: SYSTEM: Creating MsgQ [HOST_ACK_MSGQ] ...
24: SYSTEM: Opening MsgQ [DSP_MSGQ] ...
24: SYSTEM: Opening MsgQ [VIDEO-M3_MSGQ] ...
25: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
26: SYSTEM: Notify register to [DSP] line 0, event 15 ...
27: SYSTEM: Notify register to [VIDEO-M3] line 0, event 15 ...
27: SYSTEM: Notify register to [VPSS-M3] line 0, event 15 ...
28: SYSTEM: IPC init DONE !!!
29: SYSTEM: Creating ListMP [HOST_IPC_OUT_24] in region 0 ...
32: SYSTEM: Creating ListMP [HOST_IPC_IN_24] in region 0 ...
33: SYSTEM: ListElem Shared Addr = 0x406f9880
34: SYSTEM: Creating ListMP [HOST_IPC_OUT_25] in region 0 ...
37: SYSTEM: Creating ListMP [HOST_IPC_IN_25] in region 0 ...
39: SYSTEM: ListElem Shared Addr = 0x4072ea80
40: SYSTEM: Creating ListMP [HOST_IPC_OUT_19] in region 0 ...
43: SYSTEM: Creating ListMP [HOST_IPC_IN_19] in region 0 ...
44: SYSTEM: ListElem Shared Addr = 0x40763c80
45: SYSTEM: Creating ListMP [HOST_IPC_OUT_20] in region 0 ...
48: SYSTEM: Creating ListMP [HOST_IPC_IN_20] in region 0 ...
50: SYSTEM: ListElem Shared Addr = 0x407a6f80
51: SYSTEM: Creating ListMP [HOST_IPC_OUT_21] in region 0 ...
54: SYSTEM: Creating ListMP [HOST_IPC_IN_21] in region 0 ...
56: SYSTEM: ListElem Shared Addr = 0x407ea280
72: SYSTEM: System Common Init Done !!!
[host] HDMI Ctrl :Initializing
[host] HDMI Ctrl :Initialized
[FBDEV]
[FBDEV] FB: Starting !!!
[FBDEV] FB: Opened device [/dev/fb0] (fd=22) !!!
[FBDEV]
[FBDEV] Fix Screen Info
[FBDEV] ---------------
[FBDEV] Line Length - 2560
[FBDEV] Physical Address = dd600000
[FBDEV] Buffer Length = 8388608
[FBDEV]
[FBDEV]
[FBDEV] Var Screen Info
[FBDEV] ---------------
[FBDEV] Xres - 1280
[FBDEV] Yres - 720
[FBDEV] Xres Virtual - 1280
[FBDEV] Yres Virtual - 720
[FBDEV] Bits Per Pixel - 16
[FBDEV] Pixel Clk - 13468
[FBDEV] Rotation - 0
[FBDEV]
[FBDEV]
[FBDEV] Reg Params Info
[FBDEV] ---------------
[FBDEV] region 0, postion 0 x 0, prioirty 1
[FBDEV] first 1, last 1
[FBDEV] sc en 0, sten en 0
[FBDEV] tran en 0, type 0, key 0
[FBDEV] blend 0, alpha 0
[FBDEV] bb en 0, alpha 0
[FBDEV]
[FBDEV]
[FBDEV] ### BUF SIZE = 1843200 Bytes !!!
[FBDEV]
[FBDEV]
[FBDEV] Fix Screen Info
[FBDEV] ---------------
[FBDEV] Line Length - 2560
[FBDEV] Physical Address = dd600000
[FBDEV] Buffer Length = 8388608
[FBDEV]
[FBDEV]
[FBDEV] Var Screen Info
[FBDEV] ---------------
[FBDEV] Xres - 1280
[FBDEV] Yres - 720
[FBDEV] Xres Virtual - 1280
[FBDEV] Yres Virtual - 720
[FBDEV] Bits Per Pixel - 16
[FBDEV] Pixel Clk - 13468
[FBDEV] Rotation - 0
[FBDEV]
[FBDEV]
[FBDEV] Reg Params Info
[FBDEV] ---------------
[FBDEV] region 0, postion 0 x 0, prioirty 1
[FBDEV] first 1, last 1
[FBDEV] sc en 0, sten en 0
[FBDEV] tran en 0, type 0, key 0
[FBDEV] blend 0, alpha 0
[FBDEV] bb en 0, alpha 0
[FBDEV]
[FBDEV]
[FBDEV] ### BUF SIZE = 1843200 Bytes !!!
[FBDEV]
[FBDEV] grpx_fb_draw ...
[FBDEV] grpx_fb_draw ... Done !!!
[FBDEV] FB: Start DONE !!!
[FBDEV]
182: MCFW : CPU Revision [ES2.0] !!!
[m3vpss ] 9739: CAPTURE!!!: Create in progress !!!
[m3vpss ] 9768: CAPTURE!!!: VIP0 PortA capture mode is [16-bit, Non-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:328
[m3vpss ] CAPTURE::HEAPID:4 USED:24422400
[m3vpss ] 9861: CAPTURE: Create Done !!!
[m3vpss ] 9862: NSF: Create in progress !!!
[m3vpss ] NSF::HEAPID:0 USED:128
[m3vpss ] NSF::HEAPID:1 USED:4928
[m3vpss ] NSF::HEAPID:4 USED:9891840
[m3vpss ] 9908: NSF: Create Done !!!
[m3vpss ] 9908: DEI : Create in progress !!!
[m3vpss ] 9954: DEI : Loading Down-scaling Co-effs
[m3vpss ] 9954: DEI : Co-effs Loading ... DONE !!!
[m3vpss ] DEI:HEAPID:0 USED:64
[m3vpss ] DEI:HEAPID:1 USED:4832
[m3vpss ] DEI:HEAPID:4 USED:9676800
[m3vpss ] 9954: DEI : Create Done !!!
[m3vpss ] 9959: DUP : Create Done !!!
[m3vpss ] 9959: DISPLAY: Create in progress !!!
[m3vpss ] 9961: Assertion @ Line: 940 in links_m3vpss/display/displayLink_drv.c: status == FVID2_SOK : failed !!!
And here are my demo codes:
Void MultiCh_createVcapVdis()
{
CaptureLink_CreateParams capturePrm;
NsfLink_CreateParams nsfPrm;
DeiLink_CreateParams deiPrm[2];
DupLink_CreateParams dupPrm;
DisplayLink_CreateParams displayPrm[2];
CaptureLink_VipInstParams *pCaptureInstPrm;
CaptureLink_OutParams *pCaptureOutPrm;
VCAP_DEVICE_CREATE_PARAM_S vidDecVideoModeArgs[1];
UInt32 grpxId[VDIS_DEV_MAX];
UInt32 nullId;
UInt32 dupId;
UInt32 deiOutQue;
UInt32 vipInstId;
UInt32 i;
UInt32 numSubChains;
Bool enableSdtv;
UInt32 numCaptureDevices;
UInt32 deviceId = ~0u;
for (i = 0; i < 1; i++)
{
MULTICH_INIT_STRUCT(DisplayLink_CreateParams,displayPrm[i]);
}
MultiCh_detectBoard();
System_linkControl(
SYSTEM_LINK_ID_M3VPSS,
SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES,
NULL,
0,
TRUE
);
gVcapModuleContext.captureId = SYSTEM_LINK_ID_CAPTURE;
gVcapModuleContext.nsfId[0] = SYSTEM_LINK_ID_NSF_0;
gVcapModuleContext.deiId[0] = SYSTEM_LINK_ID_DEI_HQ_0;
gVcapModuleContext.deiId[1] = SYSTEM_LINK_ID_DEI_0;
gVcapModuleContext.nullSrcId = SYSTEM_VPSS_LINK_ID_NULL_SRC_0;
dupId = SYSTEM_VPSS_LINK_ID_DUP_0;
gVdisModuleContext.displayId[0] = SYSTEM_LINK_ID_DISPLAY_0; // ON CHIP HDMI
// gVdisModuleContext.displayId[1] = SYSTEM_LINK_ID_DISPLAY_1; // OFF CHIP HDMI
// gVdisModuleContext.displayId[2] = SYSTEM_LINK_ID_DISPLAY_2; // OFF CHIP HDMI
grpxId[0] = SYSTEM_LINK_ID_GRPX_0;
grpxId[1] = SYSTEM_LINK_ID_GRPX_1;
#if 0 /* Enabling graphics only for ON CHIP HDMI an OFF CHIP HDMI*/
grpxId[2] = SYSTEM_LINK_ID_GRPX_2;
#endif
nullId = SYSTEM_VPSS_LINK_ID_NULL_0;
numSubChains = 1;
deiOutQue = DEI_LINK_OUT_QUE_VIP_SC;
enableSdtv = FALSE;
CaptureLink_CreateParams_Init(&capturePrm);
capturePrm.numVipInst = 1;
capturePrm.outQueParams[0].nextLink = gVcapModuleContext.nsfId[0];
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 = 0;
pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
pCaptureInstPrm->standard = SYSTEM_STD_720P_60;
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;
}
numCaptureDevices = 1;
for(i = 0; i < numCaptureDevices; i++)
{
vidDecVideoModeArgs[i].deviceId = deviceId;
if(deviceId == DEVICE_VID_DEC_TW2968_DRV)
{
/* consider first device connected to VIP0 Port A and second device connected to VIP1 PortA */
vidDecVideoModeArgs[i].vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA+i*2;
vidDecVideoModeArgs[i].numChInDevice = 1;
}
else
{
vidDecVideoModeArgs[i].vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA+i;
vidDecVideoModeArgs[i].numChInDevice = 1;
}
vidDecVideoModeArgs[i].modeParams.videoIfMode = DEVICE_CAPT_VIDEO_IF_MODE_16BIT;
vidDecVideoModeArgs[i].modeParams.videoDataFormat = SYSTEM_DF_YUV422P;
vidDecVideoModeArgs[i].modeParams.standard = SYSTEM_STD_720P_60;
vidDecVideoModeArgs[i].modeParams.videoCaptureMode = DEVICE_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC;
vidDecVideoModeArgs[i].modeParams.videoSystem = DEVICE_VIDEO_DECODER_VIDEO_SYSTEM_AUTO_DETECT;
vidDecVideoModeArgs[i].modeParams.videoCropEnable = FALSE;
vidDecVideoModeArgs[i].modeParams.videoAutoDetectTimeout = -1;
}
Vcap_configVideoDecoder(vidDecVideoModeArgs, numCaptureDevices);
NsfLink_CreateParams_Init(&nsfPrm);
nsfPrm.bypassNsf = FALSE;
nsfPrm.tilerEnable = FALSE;
nsfPrm.inQueParams.prevLinkId = gVcapModuleContext.captureId;
nsfPrm.inQueParams.prevLinkQueId = 0;
nsfPrm.numOutQue = numSubChains;
nsfPrm.outQueParams[0].nextLink = gVcapModuleContext.deiId[0];
for(i=0; i<numSubChains; i++)
{
Int32 chId;
DeiLink_CreateParams_Init(&deiPrm[i]);
deiPrm[i].inQueParams.prevLinkId = gVcapModuleContext.nsfId[0];
deiPrm[i].inQueParams.prevLinkQueId = i;
deiPrm[i].outQueParams[deiOutQue].nextLink = dupId;
deiPrm[i].outQueParams[deiOutQue^1].nextLink = nullId;
deiPrm[i].enableOut[deiOutQue] = TRUE;
deiPrm[i].enableOut[deiOutQue^1] = FALSE;
deiPrm[i].tilerEnable[DEI_LINK_OUT_QUE_VIP_SC] = FALSE;
deiPrm[i].comprEnable = FALSE;
deiPrm[i].setVipScYuv422Format = FALSE;
/* DEI Path Scalar ratio is 1:2, D1 => CIF */
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].scaleMode = DEI_SCALE_MODE_RATIO;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.widthRatio.numerator = 1;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.widthRatio.denominator = 2;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.heightRatio.numerator = 1;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.heightRatio.denominator = 2;
for (chId=1; chId < DEI_LINK_MAX_CH; chId++)
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][chId] = deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0];
/* VIP Scalar ratio is 1:1 */
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].scaleMode = DEI_SCALE_MODE_RATIO;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.widthRatio.numerator = 1;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.widthRatio.denominator = 1;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.heightRatio.numerator = 1;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.heightRatio.denominator = 1;
for (chId=1; chId < DEI_LINK_MAX_CH; chId++)
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][chId] = deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0];
dupPrm.inQueParams.prevLinkId = gVcapModuleContext.deiId[i];
dupPrm.inQueParams.prevLinkQueId = deiOutQue;
dupPrm.numOutQue = numSubChains;
dupPrm.outQueParams[i].nextLink = gVdisModuleContext.displayId[i];
dupPrm.notifyNextLink = TRUE;
}
for(i=0; i<numSubChains; i++)
{
displayPrm[i].inQueParams[0].prevLinkId = dupId;
displayPrm[i].inQueParams[0].prevLinkQueId = 0;
displayPrm[i].displayRes = gVdisModuleContext.vdisConfig.deviceParams[i].resolution;
}
capturePrm.isPalMode = Vcap_isPalMode();
System_linkCreate(gVcapModuleContext.captureId, &capturePrm, sizeof(capturePrm));
System_linkCreate(gVcapModuleContext.nsfId[0] , &nsfPrm, sizeof(nsfPrm));
for(i=0; i<numSubChains; i++)
System_linkCreate(gVcapModuleContext.deiId[i] , &deiPrm[i], sizeof(deiPrm[i]));
System_linkCreate(dupId , &dupPrm , sizeof(dupPrm));
for(i=0; i<numSubChains; i++)
System_linkCreate(gVdisModuleContext.displayId[i], &displayPrm[i], sizeof(displayPrm[i]));
MultiCh_memPrintHeapStatus();
}