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.

OSD Link create fail

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 !!!