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.

when newly created link add into IPNC RDK demo links chain,assert failure.

hi, TI expert:

when newly created link is added to IPNC RDK demo links chain,assert failure occurs by follow asserts.

1、UTILS_assert(pObj->createArgs.inQueParams.prevLinkQueId < pObj->inTskInfo.numQue);

2、UTILS_assert(pObj->inQueInfo.numCh == 1);

log is follow:

[c6xdsp ]  11677: Assertion @ Line: 70 in links_common/va/vaLink_tsk.c: pObj->inQueInfo.numCh == 1 : failed !!!

 

how to avoid this asssert failure?

thanks

 

 

  • with Supplement:

    ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 2;
      ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = ipcFramesInDspId[MY_FRMINDSP_IDX];
      ipcFramesOutVpssPrm.baseCreateParams.outQueParams[1].nextLink = ipcFramesInDspId[VA_FRMINDSP_IDX];
      ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;

    /* IPC Frames in DSP for MY link params */
      ipcFramesInDspPrm[MY_FRMINDSP_IDX].baseCreateParams.inQueParams.prevLinkId = ipcFramesOutVpssId;
      ipcFramesInDspPrm[MY_FRMINDSP_IDX].baseCreateParams.inQueParams.prevLinkQueId = 0;
      ipcFramesInDspPrm[MY_FRMINDSP_IDX].baseCreateParams.numOutQue   = 1;
      ipcFramesInDspPrm[MY_FRMINDSP_IDX].baseCreateParams.outQueParams[0].nextLink = MyLinkid;
      ipcFramesInDspPrm[MY_FRMINDSP_IDX].baseCreateParams.notifyPrevLink = TRUE;
      ipcFramesInDspPrm[MY_FRMINDSP_IDX].baseCreateParams.notifyNextLink = TRUE;
      ipcFramesInDspPrm[MY_FRMINDSP_IDX].baseCreateParams.noNotifyMode   = FALSE;

      /* IPC Frames in DSP for VA link params */
      ipcFramesInDspPrm[VA_FRMINDSP_IDX].baseCreateParams.inQueParams.prevLinkId = ipcFramesOutVpssId;
      ipcFramesInDspPrm[VA_FRMINDSP_IDX].baseCreateParams.inQueParams.prevLinkQueId = 1;
      ipcFramesInDspPrm[VA_FRMINDSP_IDX].baseCreateParams.numOutQue   = 1;
      ipcFramesInDspPrm[VA_FRMINDSP_IDX].baseCreateParams.outQueParams[0].nextLink = gVsysModuleContext.vaId;
      ipcFramesInDspPrm[VA_FRMINDSP_IDX].baseCreateParams.notifyPrevLink = TRUE;
      ipcFramesInDspPrm[VA_FRMINDSP_IDX].baseCreateParams.notifyNextLink = TRUE;
      ipcFramesInDspPrm[VA_FRMINDSP_IDX].baseCreateParams.noNotifyMode   = FALSE;

    /* My link params */
      MyLink_CreateParams_Init(&My_linkPrm);
      My_linkPrm.inQueParams.prevLinkId = ipcFramesInDspId[MY_FRMINDSP_IDX];
      My_linkPrm.inQueParams.prevLinkQueId = 0;
      My_linkPrm.maxStride= 1920*1080*2;
      My_linkPrm.maxWidth= 1920;
      My_linkPrm.maxHeight= 1080;
      My_linkPrm.createOutBuf1= 1;
      My_linkPrm.maxChannels= 1;
      My_linkPrm.numBufsPerCh= 1;
      My_linkPrm.swosdLinkId=gVsysModuleContext.swOsdId;

      VaLink_CreateParams_Init(&vaPrm);
      vaPrm.inQueParams.prevLinkId = ipcFramesInDspId[VA_FRMINDSP_IDX];
      vaPrm.inQueParams.prevLinkQueId = 0;
      vaPrm.encLinkId                 = gVencModuleContext.encId;
      vaPrm.swosdLinkId    = gVsysModuleContext.swOsdId;
      vaPrm.cameraLinkId              = gVcamModuleContext.cameraId;
      vaPrm.vaFrameRate               = 20;

      System_linkCreate(ipcFramesOutVpssId, &ipcFramesOutVpssPrm, sizeof(ipcFramesOutVpssPrm));
      System_linkCreate(ipcFramesInDspId[MY_FRMINDSP_IDX], &ipcFramesInDspPrm[My_FRMINDSP_IDX], sizeof(ipcFramesInDspPrm[MY_FRMINDSP_IDX]));
      System_linkCreate(ipcFramesInDspId[VA_FRMINDSP_IDX], &ipcFramesInDspPrm[VA_FRMINDSP_IDX], sizeof(ipcFramesInDspPrm[VA_FRMINDSP_IDX]));

      System_linkCreate(MyLinkid,&My_linkPrm,sizeof(My_linkPrm));
     

      System_linkCreate(gVsysModuleContext.vaId, &vaPrm, sizeof(vaPrm));

     

  • Hi Simon,

    VA link expects only one channel in its input queue.

    In your usecase there are more than one channels in the VA link input queue.

    How many channels are present in each of the output queues of VPSS ipcFramesOut link?

    regards,

    Anand

  • many thanks for the response firstly.

    In my usecase code config of  ipcFramesOut link:

    ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 2;
      ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = ipcFramesInDspId[MY_FRMINDSP_IDX];
      ipcFramesOutVpssPrm.baseCreateParams.outQueParams[1].nextLink = ipcFramesInDspId[VA_FRMINDSP_IDX];
      ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;

    Obviously,valink has only one input que。

    VaLink_CreateParams_Init(&vaPrm);
      vaPrm.inQueParams.prevLinkId = ipcFramesInDspId[VA_FRMINDSP_IDX];//ipcFramesInDspId
      vaPrm.inQueParams.prevLinkQueId = 0;
      vaPrm.encLinkId                 = gVencModuleContext.encId;
      vaPrm.swosdLinkId    = gVsysModuleContext.swOsdId;
      vaPrm.cameraLinkId              = gVcamModuleContext.cameraId;
      vaPrm.vaFrameRate               = 20;

    and in the struct of ipcFrameOutVpss.baseCreateParams,i can't find member which called 'numch',only numQutQue.

    typedef struct
    {
        System_LinkInQueParams   inQueParams;
        /**< Input queue information */

        System_LinkOutQueParams  outQueParams[SYSTEM_MAX_OUT_QUE];
        /**< Output queue information */

        UInt32 numOutQue;....

    By the way,what‘s the difference between means of numOutQue  and 'numch'?

    How to pass the numch param to valink or how to set its value in my usecase

    thanks.

  • Hi,

    The 'numCh' info is obtained from the previous links.

    The video source link like camera link will define the no of channels it is generating and the same is passed down to all the links.

    But when there is merge link then chennels from all the input queues get merged together.

    For eg if there are 2 input queues to merge link each having one channel then merge link will output single queue having 2 channels.

    Can you tell me your complete usecase? 

    regards,

    Anand

  • Hi,Anand

    I use the Appro IPNC RDK 3.5 usecase of multich_tristream_fullfeature.c.

    Dual stream(H264 and mJpeg) and SMART ANALYSIS are selected on pc Web GUI .

    As above-mentioned code and diagram,I just  add my newly created alglink which act as the valink running on the DSP into the original links chain .

    without any change to the original links chain such as Scaler,Isp,camera and so on.

    in the jpg diagram ,i can normaly run  them(SELF link and VA link)seprately.but if i create and link them together,the assert failure occurs.

    many thanks.

     

  • Hi Simon,

    Your ipcFramesOut link has 2 output queues,and incoming channels are split into these queues.

    There is only ONE chnannel in the input queue which goes to your link and VA link doesn't get any channels hence the assertion.

    You can resolve the issue by moving the dup link on DSP. Let ipcFrameOut on VPSS have only ONE output queue which is connected to DUP link on DSP.

    DUP link on DSP will have 2 output queues one connected to your link and the other connected to VA link. DUP link doesn't split the incoming channels instead duplicated the channels on both the output queues.

    regards,

    Anand 

  • thanks again,Sincerely,good job and it's very kind of you.

    I  will follow your advices on this issue and have some unkown problem to consult you soon after,by the time,don't let me be:) 

  • Hi

    There is a file with some data in linux file system, now i want to get and use the file data from DSP side,just only once from system startup to end.

    what's the easest way to achieve above goal?

    thanks 

  • src dup【max】=dup【2】 now can i increase to dup【3】? other not to modify