i need do OSD after bitstream is decoded, and send OSDed picture to ARM, if no OSD link, it works fine, after add OSD link, link create fail, program hang when create framein link on HLOS, what's the problem ? following are code and print.
chain OK: bitoutHLOS->bitinRTOS->Dec->framesoutRTOS->framesinHLOS
chain fail: bitoutHLOS->bitinRTOS->Dec->framesoutRTOS->framesinHLOS
|
-->framesinDSP->AlgDSP
========================= CODE ===========================================
IpcBitsOutLinkHLOS_CreateParams ipcBitsOutHostPrm;
IpcBitsInLinkRTOS_CreateParams ipcBitsInVideoPrm;
DecLink_CreateParams decPrm;
IpcFramesOutLinkRTOS_CreateParams ipcOutVideoPrm;
IpcFramesInLinkHLOS_CreateParams ipcFrmsInHostPrm;
IpcFramesInLinkRTOS_CreateParams ipcFrmsInDspPrm;
AlgLink_CreateParams algPrm;
int i;
System_init();
LINK_INIT_STRUCT(IpcFramesInLinkHLOS_CreateParams,ipcFrmsInHostPrm);
LINK_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams,ipcOutVideoPrm);
LINK_INIT_STRUCT(IpcBitsOutLinkHLOS_CreateParams,ipcBitsOutHostPrm);
LINK_INIT_STRUCT(IpcBitsInLinkRTOS_CreateParams,ipcBitsInVideoPrm);
LINK_INIT_STRUCT(DecLink_CreateParams, decPrm);
LINK_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams, ipcFrmsInDspPrm);
LINK_INIT_STRUCT(AlgLink_CreateParams, algPrm);
gipcBitsOutHLOSId = SYSTEM_HOST_LINK_ID_IPC_BITS_OUT_0;
gipcBitsInRTOSId = SYSTEM_VIDEO_LINK_ID_IPC_BITS_IN_0;
gdecId = SYSTEM_LINK_ID_VDEC_0;
gipcM3OutId = SYSTEM_VIDEO_LINK_ID_IPC_FRAMES_OUT_0;
gipcFrmsInHLOSId = SYSTEM_HOST_LINK_ID_IPC_FRAMES_IN_0;
gipcFrmsInDspId = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;
gOsdDspId = SYSTEM_LINK_ID_ALG_0;
ipcBitsOutHostPrm.baseCreateParams.outQueParams[0].nextLink = gipcBitsInRTOSId;
ipcBitsOutHostPrm.baseCreateParams.notifyNextLink = TRUE;
ipcBitsOutHostPrm.baseCreateParams.notifyPrevLink = FALSE;
ipcBitsOutHostPrm.baseCreateParams.noNotifyMode = FALSE;
ipcBitsOutHostPrm.baseCreateParams.numOutQue = 1;
ipcBitsOutHostPrm.inQueInfo.numCh = VIDEO_CHNS;
for (i=0; i<ipcBitsOutHostPrm.inQueInfo.numCh; i++)
{
ipcBitsOutHostPrm.inQueInfo.chInfo[i].width = 720;
ipcBitsOutHostPrm.inQueInfo.chInfo[i].height = 576;
ipcBitsOutHostPrm.inQueInfo.chInfo[i].scanFormat = SYSTEM_SF_PROGRESSIVE;
ipcBitsOutHostPrm.inQueInfo.chInfo[i].bufType = 0; // NOT USED
ipcBitsOutHostPrm.inQueInfo.chInfo[i].codingformat = 0; // NOT USED
ipcBitsOutHostPrm.inQueInfo.chInfo[i].dataFormat = 0; // NOT USED
ipcBitsOutHostPrm.inQueInfo.chInfo[i].memType = 0; // NOT USED
ipcBitsOutHostPrm.inQueInfo.chInfo[i].startX = 0; // NOT USED
ipcBitsOutHostPrm.inQueInfo.chInfo[i].startY = 0; // NOT USED
ipcBitsOutHostPrm.inQueInfo.chInfo[i].pitch[0] = 0; // NOT USED
ipcBitsOutHostPrm.inQueInfo.chInfo[i].pitch[1] = 0; // NOT USED
ipcBitsOutHostPrm.inQueInfo.chInfo[i].pitch[2] = 0; // NOT USED
}
ipcBitsInVideoPrm.baseCreateParams.inQueParams.prevLinkId = gipcBitsOutHLOSId;
ipcBitsInVideoPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcBitsInVideoPrm.baseCreateParams.outQueParams[0].nextLink = gdecId;
ipcBitsInVideoPrm.baseCreateParams.noNotifyMode = FALSE;
ipcBitsInVideoPrm.baseCreateParams.notifyNextLink = TRUE;
ipcBitsInVideoPrm.baseCreateParams.notifyPrevLink = FALSE;
ipcBitsInVideoPrm.baseCreateParams.numOutQue = 1;
for (i=0; i<ipcBitsOutHostPrm.inQueInfo.numCh; i++)
{
decPrm.chCreateParams[i].format = IVIDEO_H264HP;
decPrm.chCreateParams[i].profile = IH264VDEC_PROFILE_ANY;
decPrm.chCreateParams[i].processCallLevel = VDEC_FRAMELEVELPROCESSCALL;
decPrm.chCreateParams[i].targetMaxWidth = ipcBitsOutHostPrm.inQueInfo.chInfo[i].width;
decPrm.chCreateParams[i].targetMaxHeight = ipcBitsOutHostPrm.inQueInfo.chInfo[i].height;
decPrm.chCreateParams[i].defaultDynamicParams.targetFrameRate = 30;
decPrm.chCreateParams[i].defaultDynamicParams.targetBitRate = 2<<20;
decPrm.chCreateParams[i].numBufPerCh = 0;
decPrm.chCreateParams[i].tilerEnable = 0;
}
decPrm.inQueParams.prevLinkId = gipcBitsInRTOSId;
decPrm.inQueParams.prevLinkQueId = 0;
decPrm.outQueParams.nextLink = gipcM3OutId;
ipcOutVideoPrm.baseCreateParams.inQueParams.prevLinkId = gdecId;
ipcOutVideoPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcOutVideoPrm.baseCreateParams.outQueParams[0].nextLink = gipcFrmsInHLOSId;
ipcOutVideoPrm.baseCreateParams.notifyNextLink = TRUE;
ipcOutVideoPrm.baseCreateParams.notifyPrevLink = TRUE;
ipcOutVideoPrm.baseCreateParams.numOutQue = 1;
ipcOutVideoPrm.baseCreateParams.processLink = gipcFrmsInDspId;
ipcOutVideoPrm.baseCreateParams.notifyProcessLink = TRUE;
ipcFrmsInHostPrm.baseCreateParams.inQueParams.prevLinkId = gipcM3OutId;
ipcFrmsInHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcFrmsInHostPrm.baseCreateParams.notifyPrevLink = TRUE;
ipcFrmsInDspPrm.baseCreateParams.inQueParams.prevLinkId = gipcM3OutId;
ipcFrmsInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcFrmsInDspPrm.baseCreateParams.outQueParams[0].nextLink = gOsdDspId;
ipcFrmsInDspPrm.baseCreateParams.notifyNextLink = TRUE;
ipcFrmsInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
ipcFrmsInDspPrm.baseCreateParams.numOutQue = 1;
algPrm.enableOSDAlg = /*FALSE*/TRUE;
algPrm.enableSCDAlg = FALSE;
algPrm.inQueParams.prevLinkId = gipcFrmsInDspId;
algPrm.inQueParams.prevLinkQueId = 0;
/*for (i=0;i<ALG_LINK_OSD_MAX_CH;i++)
{
AlgLink_OsdChCreateParams *ptChParam;
ptChParam = &(algPrm.osdChCreateParams[i]);
}*/
PRT_LINE;
RUN_LINK_WRAP(System_linkCreate(gipcBitsOutHLOSId, &ipcBitsOutHostPrm, sizeof(ipcBitsOutHostPrm)));
RUN_LINK_WRAP(System_linkCreate(gipcBitsInRTOSId , &ipcBitsInVideoPrm, sizeof(ipcBitsInVideoPrm)));
RUN_LINK_WRAP(System_linkCreate(gdecId , &decPrm , sizeof(decPrm) ));
RUN_LINK_WRAP(System_linkCreate(gipcM3OutId , &ipcOutVideoPrm , sizeof(ipcOutVideoPrm) ));
RUN_LINK_WRAP(System_linkCreate(gipcFrmsInDspId , &ipcFrmsInDspPrm , sizeof(ipcFrmsInDspPrm )));
RUN_LINK_WRAP(System_linkCreate(gOsdDspId , &algPrm , sizeof(algPrm )));
RUN_LINK_WRAP(System_linkCreate(gipcFrmsInHLOSId , &ipcFrmsInHostPrm , sizeof(ipcFrmsInHostPrm )));
==================== PRINT ====================================================
[host] ============ START ==============
0: SYSTEM: System Common Init in progress !!!
0: SYSTEM: IPC init in progress !!!
12: SYSTEM: CPU [DSP] syslink proc ID is [0] !!!
12: SYSTEM: CPU [VIDEO-M3] syslink proc ID is [1] !!!
12: SYSTEM: CPU [VPSS-M3] syslink proc ID is [2] !!!
12: SYSTEM: CPU [HOST] syslink proc ID is [3] !!!
12: SYSTEM: Creating MsgQ Heap [IPC_MSGQ_MSG_HEAP_3] ...
15: SYSTEM: Creating MsgQ [HOST_MSGQ] ...
16: SYSTEM: Creating MsgQ [HOST_ACK_MSGQ] ...
18: SYSTEM: Opening MsgQ [DSP_MSGQ] ...
19: SYSTEM: Opening MsgQ [VIDEO-M3_MSGQ] ...
19: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
20: SYSTEM: Notify register to [DSP] line 0, event 15 ...
21: SYSTEM: Notify register to [VIDEO-M3] line 0, event 15 ...
21: SYSTEM: Notify register to [VPSS-M3] line 0, event 15 ...
22: SYSTEM: IPC init DONE !!!
23: SYSTEM: Creating ListMP [HOST_IPC_OUT_24] in region 0 ...
25: SYSTEM: Creating ListMP [HOST_IPC_IN_24] in region 0 ...
27: SYSTEM: ListElem Shared Addr = 0x406c1680
28: SYSTEM: Creating ListMP [HOST_IPC_OUT_25] in region 0 ...
30: SYSTEM: Creating ListMP [HOST_IPC_IN_25] in region 0 ...
31: SYSTEM: ListElem Shared Addr = 0x406f8480
33: SYSTEM: Creating ListMP [HOST_IPC_OUT_19] in region 0 ...
35: SYSTEM: Creating ListMP [HOST_IPC_IN_19] in region 0 ...
37: SYSTEM: ListElem Shared Addr = 0x4072f280
38: SYSTEM: Creating ListMP [HOST_IPC_OUT_20] in region 0 ...
40: SYSTEM: Creating ListMP [HOST_IPC_IN_20] in region 0 ...
41: SYSTEM: ListElem Shared Addr = 0x40772580
42: SYSTEM: Creating ListMP [HOST_IPC_OUT_21] in region 0 ...
44: SYSTEM: Creating ListMP [HOST_IPC_IN_21] in region 0 ...
46: SYSTEM: ListElem Shared Addr = 0x407b5880
68: SYSTEM: System Common Init Done !!!
[host] Line 278 @ test_dec.c
[host] Line 280 @ test_dec.c
[HOST]
ThreadName:IpcBitsOutLink_tskMain_30000018,T*** GatePeterson_Instance_init: OpenerId is different!
Error [0xfffffffc] at Line no: 533 in file /DVRRDK_04.01.00.02/ti_tools/syslink/syslink_2_20_02_20/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/ipc/hlos/knl/GatePeterson.c
hreadID:1617
[host] 69: IPC_BITS_OUT : Create in progress !!!
[host] IPC_BITSOUT:BitBuffer Alloc.ChID:0,Size:0x13C6800
[host]
******* RingBuf 0 created ********
[host] IPCBITSOUTLINK:Translated Addr Virt:0x40bdb080 To Phy:0x90000080
[host]
###Bit buff of size from the SR # 1 : 20736000 / bufsize 414720, maxQueueDepth 50
[host] ###Bit buff BasePtr: 40BDB080 / PhyAddr 90000080
[host] 71: IPC_BITS_OUT : Create Done !!!
[HOST]
ThreadName:IpcBitsOutLink_periodicTaskFxn_30000018,ThreadID:1625
[host] Line 280 @ test_dec.c
[host] Line 281 @ test_dec.c
[host] Line 281 @ test_dec.c
[host] Line 282 @ test_dec.c
[m3video] 37750: IPC_BITS_IN : Create in progress !!!
[m3video] 37750: SYSTEM: Opening ListMP [HOST_IPC_OUT_24] ...
[m3video] 37751: SYSTEM: Opening ListMP [HOST_IPC_IN_24] ...
[m3video] 37752: SYSTEM: Opening MsgQ [HOST_MSGQ] ...
[m3video] 37754: IPC_BITS_IN : Create Done !!!
[m3video] 37755: DECODE: Create in progress ... !!!
[m3video] DECLINK_H264:HEAPID:0 USED:4264
[m3video] DECLINK_H264:HEAPID:3 USED:4505600
[m3video] 37810: DECODE: Creating CH0 of 720 x 576 [PROGRESSIVE] [NON-TILED ],target bitrate = 2097 Kbps ...
[m3video] 37812: DECODE: All CH Create ... DONE !!!
[host] Line 282 @ test_dec.c
[host] Line 283 @ test_dec.c
[host] Line 283 @ test_dec.c
[host] Line 284 @ test_dec.c
[host] Line 284 @ test_dec.c
[host] Line 285 @ test_dec.c
[c6xdsp ] 36626: IPC_FRAMES_IN : Create in progress !!!
[c6xdsp ] 36626: SYSTEM: Opening ListMP [VIDEO-M3_IPC_OUT_19] ...
[m3video] DECLINK:HEAPID:0 USED:4304
[c6xdsp ] 36626: SYSTEM: Opening ListMP [VIDEO-M3_IPC_IN_19] ...
[m3video] DECLINK:HEAPID:3 USED:8118272
[c6xdsp ] 36627: SYSTEM: Opening MsgQ [VIDEO-M3_MSGQ] ...
[m3video] 37816: DECODE: Create ... DONE !!!
[m3video] 37817: IPC_FRAMES_OUT : Create in progress !!!
[c6xdsp ] IPC_FRAMES_IN:HEAPID:0 USED:304
[c6xdsp ] 36629: IPC_FRAMES_IN : Create Done !!!
[m3video] 37820: IPC_FRAMES_OUT : Create Done !!!
[c6xdsp ] 36629: ALG : Create in progress !!!
[host] Line 285 @ test_dec.c
[host] Line 286 @ test_dec.c
[HOST]
ThreadName:IpcFramesInLink_tskMain_30000016,ThreadID:1619
[host] IpcFramesInLink_tskMain:Entered
[host] 164: IPC_FRAMES_IN : Create in progress !!!
[host] 164: SYSTEM: Opening ListMP [VIDEO-M3_IPC_OUT_19] ...
ASSERT (system_ipc_listMP.c|System_ipcListMPOpen|121)
[c6xdsp ] 36645: ALG : Create Done !!!