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.

ipcFramesOutLink_tsk.c:failed



Hi

 my chains like this : capture —>ipcframesVpssOut—>ipcframesDSPIn—>dspAlg(OSD)—>ipcframesDSPOut—>ipcframesVpssIn—>display . but when i start my procedure, i get a error

 [m3vpss ] ==== Vps_sii9233aReadAviInfo ==== devAddr = 0x35
 [m3vpss ] AviInfo = 0x0,regValue[1] = 0x0,regValue[2] = 0x0
 [m3vpss ]  32656: IPC_FRAMES_OUT   : Create in progress !!!
 [c6xdsp ]  30635: IPC_FRAMES_IN   : Create in progress !!!
 [c6xdsp ]  30635: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_19] ...
 [c6xdsp ]  30635: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_19] ...
 [m3vpss ]  32657: IPC_FRAMES_OUT   : Create Done !!!
 [c6xdsp ]  30636: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
 [c6xdsp ] IPC_FRAMES_IN:HEAPID:0       USED:304
 [c6xdsp ]  30637: IPC_FRAMES_IN   : Create Done !!!
 [c6xdsp ]  30639: ALG : Create in progress !!!
 [c6xdsp ] ALGLINK:HEAPID:0     USED:2616
 [c6xdsp ] ALGLINK:HEAPID:1     USED:5904
 [c6xdsp ]  30646: ALG : Create Done !!!
 [c6xdsp ]  30649: IPC_FRAMES_OUT   : Create in progress !!!
 [c6xdsp ]  30650: Assertion @ Line: 231 in links_common/ipcFramesOut/ipcFramesOutLink_tsk.c: pObj->createArgs.baseCreateParams.inQueParams.prevLinkQueId < pObj->inQueInfo.numQue : failed !!!

could you give me a reason?? thank you

here is the  procedure for you refering

#include <demos/link_api_demos/common/chains.h>
#include <mcfw/interfaces/ti_venc.h>
 
  Void Chains_doubleChCapNsfEncDecSwMsDis(Chains_Ctrl *chainsCfg)
  {
   CaptureLink_CreateParams  capturePrm;
   CaptureLink_VipInstParams  *pCaptureInstPrm;
   CaptureLink_OutParams   *pCaptureOutPrm;
  printf("@@@@@@@@@@@@@@@@@@@@@@@ capDIS @@@@@@@@@@@@@@@@@@@@@@@\n");
   /* changed by chen longhu */
 
   IpcFramesInLinkRTOS_CreateParams  ipcFramesInDspPrm,ipcFramesInVpssPrm;
   IpcFramesOutLinkRTOS_CreateParams ipcFramesOutDspPrm,ipcFramesOutVpssPrm;
  
   AlgLink_CreateParams      dspAlgPrm;
 
   DisplayLink_CreateParams  displayPrm[CHAINS_SW_MS_MAX_DISPLAYS];
   UInt32 captureId, vipInstId;
   UInt32 ipcFramesOutVpssId,ipcFramesInDspId;
   UInt32 ipcFramesInVpssId,ipcFramesOutDspId;
   UInt32 dspAlgId;
   UInt32 displayId[CHAINS_SW_MS_MAX_DISPLAYS];
 
   UInt32 i;
   char ch;
 
   CHAINS_INIT_STRUCT(CaptureLink_CreateParams,capturePrm);
   CHAINS_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams,ipcFramesOutVpssPrm);
   CHAINS_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams,ipcFramesInDspPrm);
   CHAINS_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams,ipcFramesOutDspPrm);
   CHAINS_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams,ipcFramesInVpssPrm);

  
   CHAINS_INIT_STRUCT(AlgLink_CreateParams ,dspAlgPrm);
   for (i=0; i<CHAINS_SW_MS_MAX_DISPLAYS; i++) {
    CHAINS_INIT_STRUCT(DisplayLink_CreateParams,displayPrm[i]);
   }
   captureId    = SYSTEM_LINK_ID_CAPTURE;
   ipcFramesOutVpssId  = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;
   ipcFramesInDspId= SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;
  
   ipcFramesInVpssId  = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_IN_0;
   ipcFramesOutDspId= SYSTEM_DSP_LINK_ID_IPC_FRAMES_OUT_0;
  
   dspAlgId= SYSTEM_LINK_ID_ALG_0;
   displayId[0]  = SYSTEM_LINK_ID_DISPLAY_0;
   displayId[1]  = SYSTEM_LINK_ID_DISPLAY_1;
 
   capturePrm.numVipInst     = 2;
   capturePrm.tilerEnable     = FALSE;
   capturePrm.numBufsPerCh    = 16;
   capturePrm.numExtraBufs    = 0;
   capturePrm.maxBlindAreasPerCh   = 0;
   capturePrm.isPalMode     = FALSE;
   capturePrm.enableSdCrop    = FALSE;
   capturePrm.doCropInCapture    = FALSE;
 
   for(i=0; i<capturePrm.numVipInst; i++)
   {
    vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA + 2*i;
    pCaptureInstPrm      = &capturePrm.vipInst[i];
    pCaptureInstPrm->vipInstId    = vipInstId%SYSTEM_CAPTURE_INST_MAX;
    pCaptureInstPrm->videoDecoderId  = SYSTEM_DEVICE_VID_DEC_SII9233A_DRV;
    pCaptureInstPrm->inDataFormat   = SYSTEM_DF_YUV422P;
    pCaptureInstPrm->standard    = chainsCfg->displayRes[i];
    pCaptureInstPrm->numOutput    = 1;
    pCaptureInstPrm->numChPerOutput  = 1;
    pCaptureInstPrm->frameCaptureMode  = FALSE;
    pCaptureInstPrm->fieldsMerged   = FALSE;
    pCaptureOutPrm       = &pCaptureInstPrm->outParams[0];
    pCaptureOutPrm->dataFormat    = SYSTEM_DF_YUV422I_YUYV;
    pCaptureOutPrm->scEnable    = FALSE;
    pCaptureOutPrm->scOutWidth    = chainsCfg->channelConf[i].width;
    pCaptureOutPrm->scOutHeight   = chainsCfg->channelConf[i].height;
    pCaptureOutPrm->outQueId    = 0;
   }
 
   capturePrm.outQueParams[0].nextLink  = ipcFramesOutVpssId;
   System_linkCreate(captureId, &capturePrm, sizeof(capturePrm));
   for (i=0; i<gChains_ctrl.channelNum; i++) {
    chainsCfg->displayRes[i] = capturePrm.vipInst[i].standard;
    Vsys_getResSize(chainsCfg->displayRes[i], &chainsCfg->channelConf[i].width, &chainsCfg->channelConf[i].height);
    Vsys_getResRate(chainsCfg->displayRes[i], &chainsCfg->channelConf[i].frameRate);
 
   }
 
  
   ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = captureId;
   ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
   ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 1;
   ipcFramesOutVpssPrm.baseCreateParams.processLink = ipcFramesInDspId;
 
   ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = TRUE;
   ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;
   ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
   ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;
  
   //prevLink->processLink->nextLink
   ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = ipcFramesOutVpssId;
   ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
   ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink =dspAlgId;
   ipcFramesInDspPrm.baseCreateParams.numOutQue = 1;
 
   ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
   ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;
   ipcFramesInDspPrm.baseCreateParams.noNotifyMode  = FALSE;
 
 
   dspAlgPrm.enableOSDAlg = TRUE;
   dspAlgPrm.enableSCDAlg = FALSE;
   dspAlgPrm.inQueParams.prevLinkId =ipcFramesInDspId;
   dspAlgPrm.inQueParams.prevLinkQueId = 0;
   dspAlgPrm.outQueParams[0].nextLink = ipcFramesOutDspId;
   AlgLink_OsdChWinParams * chWinPrm = &dspAlgPrm.osdChCreateParams[0].chDefaultParams;
 
   /* set osd window max width and height */
   dspAlgPrm.osdChCreateParams[0].maxWidth  = 320;
   dspAlgPrm.osdChCreateParams[0].maxHeight = 64;
   chWinPrm->chId = 0;
   chWinPrm->numWindows = 0;


  
   ipcFramesOutDspPrm.baseCreateParams.inQueParams.prevLinkId = dspAlgId;
   ipcFramesOutDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
   ipcFramesOutDspPrm.baseCreateParams.numOutQue = 1;
   ipcFramesOutDspPrm.baseCreateParams.processLink =ipcFramesInVpssId; 
   ipcFramesOutDspPrm.baseCreateParams.notifyProcessLink = TRUE;
   ipcFramesOutDspPrm.baseCreateParams.notifyNextLink = TRUE;
   ipcFramesOutDspPrm.baseCreateParams.notifyPrevLink = TRUE;
   ipcFramesOutDspPrm.baseCreateParams.noNotifyMode = FALSE;
  
   //prevLink->processLink->nextLink
   ipcFramesInVpssPrm.baseCreateParams.inQueParams.prevLinkId = ipcFramesOutDspId;
   ipcFramesInVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
   ipcFramesInVpssPrm.baseCreateParams.outQueParams[0].nextLink =displayId[0];
   ipcFramesInVpssPrm.baseCreateParams.numOutQue = 1;
   ipcFramesInVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
   ipcFramesInVpssPrm.baseCreateParams.notifyNextLink = TRUE;
   ipcFramesInVpssPrm.baseCreateParams.noNotifyMode  = FALSE;
    

  
   System_linkCreate(ipcFramesOutVpssId, &ipcFramesOutVpssPrm, sizeof(ipcFramesOutVpssPrm));
   System_linkCreate(ipcFramesInDspId, &ipcFramesInDspPrm, sizeof(ipcFramesInDspPrm));
   System_linkCreate(dspAlgId, &dspAlgPrm, sizeof(dspAlgPrm));
   System_linkCreate(ipcFramesOutDspId, &ipcFramesOutDspPrm, sizeof(ipcFramesOutDspPrm));
   System_linkCreate(ipcFramesInVpssId, &ipcFramesInVpssPrm, sizeof(ipcFramesInVpssPrm));
    
   Chains_displayCtrlInit(chainsCfg->displayRes); 
   displayPrm[0].numInputQueues     = 1;
   displayPrm[0].activeQueue      = 0;
   displayPrm[0].inQueParams[0].prevLinkId  = ipcFramesInDspId;
   displayPrm[0].inQueParams[0].prevLinkQueId  = 0;
   displayPrm[0].displayRes      = chainsCfg->displayRes[0];
   displayPrm[0].forceFieldSeparatedInputMode  = FALSE;
   System_linkCreate(displayId[0], &displayPrm[0], sizeof(displayPrm[0]));
 
   Chains_memPrintHeapStatus();
   {
    System_linkStart(displayId[0]);
    System_linkStart(captureId);
    System_linkStart(dspAlgId);
    while(1)
    {
     ch = Chains_menuRunTime();
     if(ch=='0')
      break;
     if(ch=='v')
      System_linkControl(captureId, CAPTURE_LINK_CMD_FORCE_RESET, NULL, 0, TRUE);
     if(ch=='p')
      System_linkControl(captureId, CAPTURE_LINK_CMD_PRINT_ADV_STATISTICS, NULL, 0, TRUE);
    }
 
    System_linkStop(captureId);
    System_linkStop(dspAlgId);
    System_linkStop(displayId[0]);

   }
 
   System_linkDelete(captureId);
   System_linkDelete(displayId[0]);
   System_linkDelete(dspAlgId);
   System_linkDelete(ipcFramesOutVpssId);
   System_linkDelete(ipcFramesInDspId);
   System_linkDelete(ipcFramesInVpssId);
   System_linkDelete(ipcFramesOutDspId);

   Chains_displayCtrlDeInit();
 
  }
 

 i printf the variable ,the printf result is

pObj->createArgs.baseCreateParams.inQueParams.prevLinkQueId = 0

pObj->inQueInfo.numQue = 0    (i don't know why here is 0 )

my settings show as follows which can be seen in my  procedure code

ipcFramesOutDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcFramesOutDspPrm.baseCreateParams.numOutQue = 1;