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.

there is something wrong when i changed "displayid" to " ipcFramesInHost" in chain_singleChCapOsdDis.c!!!

Other Parts Discussed in Thread: TVP7002

I want to achieve that :

 Capture   

      |

      |

  IPC Frames Out(M3)--<<process link>>--IPC Frames In DSP---OSD link             

        |
IPC  Frames OUT (M3) 
       |
       |      
IPC Frames IN   (A8)       
      |
      |
 SNK ID(NULL)

 

codes:

Void Chains_singleChCapOsdDis(Chains_Ctrl *chainsCfg) {  

CaptureLink_CreateParams  capturePrm;     CaptureLink_VipInstParams *pCaptureInstPrm;     CaptureLink_OutParams     *pCaptureOutPrm;     AlgLink_CreateParams      osdPrm; //    DisplayLink_CreateParams  displayPrm;//  NullLink_CreateParams snkPrm;//1       

 IpcFramesInLinkRTOS_CreateParams    ipcFramesInDspPrm;   

  IpcFramesOutLinkRTOS_CreateParams   ipcFramesOutVpssPrm;    

 IpcFramesInLinkHLOS_CreateParams    ipcFramesInHostPrm;//11

 UInt32 captureId;    

UInt32 vipInstId;    

UInt32 osdId; 

 UInt32 snkId;//2

 UInt32  ipcFramesInHost;    

Uint32 ipcFramesOutVpssId, ipcFramesInDspId;    

int i, j;

 Ptr osdWinSrAddr[ALG_LINK_OSD_MAX_CH][CHAINS_OSD_NUM_WINDOWS];    

 Ptr osdWinBuPtr[ALG_LINK_OSD_MAX_CH][CHAINS_OSD_NUM_WINDOWS];

    char ch;

 CHAINS_INIT_STRUCT(CaptureLink_CreateParams, capturePrm); // 

  CHAINS_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams,ipcFramesInDspPrm);   

  CHAINS_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams,ipcFramesOutVpssPrm);    //    CHAINS_INIT_STRUCT(IpcBitsOutLinkHLOS_CreateParams,ipcFramesInHostPrm);//   

CHAINS_INIT_STRUCT(IpcFramesInLinkHLOS_CreateParams  ,ipcFramesInHostPrm);//33 //    CHAINS_INIT_STRUCT(IpcFramesOutLinkHLOS_CreateParams ,ipcFramesOutHostPrm);//33

 CHAINS_INIT_STRUCT(AlgLink_CreateParams,osdPrm);        

 captureId = SYSTEM_LINK_ID_CAPTURE;   

 osdId     = SYSTEM_LINK_ID_ALG_0; //   

 snkId= SYSTEM_VPSS_LINK_ID_NULL_0;//3     

ipcFramesInHost         = SYSTEM_HOST_LINK_ID_IPC_FRAMES_IN_0;//44 //   

 

    ipcFramesOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;     ipcFramesInDspId   = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;    

 capturePrm.numVipInst               = 1;     capturePrm.tilerEnable              = FALSE;     capturePrm.numBufsPerCh             = CAPTURE_LINK_NUM_BUFS_PER_CH_DEFAULT;     capturePrm.numExtraBufs             = 0;     capturePrm.maxBlindAreasPerCh       = 0;     capturePrm.isPalMode                = FALSE;     capturePrm.enableSdCrop             = FALSE;     capturePrm.doCropInCapture          = FALSE;

    for(vipInstId=0; vipInstId<capturePrm.numVipInst; vipInstId++)    

 {        

 pCaptureInstPrm   = &capturePrm.vipInst[vipInstId];        

pCaptureInstPrm->vipInstId    = (SYSTEM_CAPTURE_INST_VIP0_PORTA+vipInstId*2)SYSTEM_CAPTURE_INST_MAX; 

pCaptureInstPrm->videoDecoderId     = SYSTEM_DEVICE_VID_DEC_TVP7002_DRV;        

pCaptureInstPrm->inDataFormat       = SYSTEM_DF_YUV422P;       

  pCaptureInstPrm->standard           = chainsCfg->displayRes[0];       

  //pCaptureInstPrm->standard           = SYSTEM_STD_1080P_60;        

pCaptureInstPrm->numOutput          = 1;        

pCaptureInstPrm->numChPerOutput     = 1;

 pCaptureOutPrm                      = &pCaptureInstPrm->outParams[0];        

 pCaptureOutPrm->dataFormat          = SYSTEM_DF_YUV422I_YUYV;       

  pCaptureOutPrm->scEnable            = FALSE;       

  pCaptureOutPrm->scOutWidth          = chainsCfg->channelConf[0].width;        

pCaptureOutPrm->scOutHeight         = chainsCfg->channelConf[0].height;       

  pCaptureOutPrm->outQueId            = 0;    

 }    

capturePrm.outQueParams[0].nextLink = ipcFramesOutVpssId;  

 System_linkCreate(captureId, &capturePrm, sizeof(capturePrm));    

 chainsCfg->displayRes[0] = capturePrm.vipInst[0].standard;    

Vsys_getResSize(chainsCfg->displayRes[0], &chainsCfg->channelConf[0].width, &chainsCfg->channelConf[0].height);    

 Vsys_getResRate(chainsCfg->displayRes[0], &chainsCfg->channelConf[0].frameRate);

 ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId     = captureId;     ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId  = 0;     ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink             = FALSE;   //    ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink             = TRUE;

 ipcFramesOutVpssPrm.baseCreateParams.numOutQue                  = 1; //    ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink   = displayId;//     ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink   = ipcFramesInHost;//44 //  ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink   = snkId;//4           ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink             = TRUE;         

 ipcFramesOutVpssPrm.baseCreateParams.processLink                = ipcFramesInDspId;     ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink          = TRUE;//FALSE;     ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode               = FALSE;

  ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId       = ipcFramesOutVpssId;     ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId    = 0;     ipcFramesInDspPrm.baseCreateParams.numOutQue                    = 1;     ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink     = osdId;     ipcFramesInDspPrm.baseCreateParams.notifyPrevLink               = FALSE; //    ipcFramesInDspPrm.baseCreateParams.notifyPrevLink               = TRUE;     ipcFramesInDspPrm.baseCreateParams.notifyNextLink               = TRUE;     ipcFramesInDspPrm.baseCreateParams.noNotifyMode                 = FALSE;

    osdPrm.enableOSDAlg                     = TRUE;    

 osdPrm.enableSCDAlg                     = FALSE;

  osdPrm.inQueParams.prevLinkId           = ipcFramesInDspId;    

osdPrm.inQueParams.prevLinkQueId        = 0;

    for(i=0; i<1; i++)   

  {         // set osd window max width and height        

osdPrm.osdChCreateParams[i].maxWidth    = CHAINS_OSD_WIN_MAX_WIDTH;         osdPrm.osdChCreateParams[i].maxHeight   = CHAINS_OSD_WIN_MAX_HEIGHT;

        // set osd window params        

 AlgLink_OsdChWinParams * chWinPrm       = &osdPrm.osdChCreateParams[i].chDefaultParams;       

  chWinPrm->chId                          = i;        

chWinPrm->numWindows                    = CHAINS_OSD_NUM_WINDOWS;        

 chWinPrm->colorKey[0]                   = 0xfa; // Y

  //chWinPrm->colorKey[0]                   = 0xff; // Y        

 chWinPrm->colorKey[1]                   = 0x7e; // U   

//chWinPrm->colorKey[1]                   = 0x80; // U        

 chWinPrm->colorKey[2]                   = 0x7d; // V   

//chWinPrm->colorKey[2]                   = 0x80; // V        

chWinPrm->winPrm[0].startX              = CHAINS_OSD_WIN0_STARTX;        

 chWinPrm->winPrm[0].startY              = CHAINS_OSD_WIN0_STARTY;

  for(j=0; j < chWinPrm->numWindows; j++)       

  {            

 Chains_createBuf(&chWinPrm->winPrm[j].addr[0][0], &osdWinBuPtr[i][j], &osdWinSrAddr[i][j], CHAINS_OSD_WIN_WIDTH *  CHAINS_OSD_WIN_HEIGHT*2, SYSTEM_IPC_SR_NON_CACHED_DEFAULT);

  chWinPrm->winPrm[j].format             = SYSTEM_DF_YUV422I_YUYV;          

  chWinPrm->winPrm[j].width              = CHAINS_OSD_WIN_WIDTH;           

  chWinPrm->winPrm[j].height             = CHAINS_OSD_WIN_HEIGHT;           

  chWinPrm->winPrm[j].lineOffset         = CHAINS_OSD_WIN_PITCH;            

 chWinPrm->winPrm[j].globalAlpha        = CHAINS_OSD_GLOBAL_ALPHA;          

   chWinPrm->winPrm[j].transperencyEnable = CHAINS_OSD_TRANSPARENCY;        

     chWinPrm->winPrm[j].enableWin          = CHAINS_OSD_ENABLE_WIN;

            memcpy(osdWinBuPtr[0][j], gMCFW_swosdTiLogoYuv422i, sizeof(gMCFW_swosdTiLogoYuv422i));     

    }  

   }

 ipcFramesInHostPrm.baseCreateParams.noNotifyMode = FALSE;//TRUE     ipcFramesInHostPrm.baseCreateParams.notifyNextLink = FALSE;//FALSE     ipcFramesInHostPrm.baseCreateParams.notifyPrevLink = TRUE;//FALSE     ipcFramesInHostPrm.baseCreateParams.inQueParams.prevLinkId = ipcFramesOutVpssId;     ipcFramesInHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;         //ipcFramesInHostPrm.baseCreateParams.outQueParams[0].nextLink = SYSTEM_LINK_ID_INVALID;  ipcFramesInHostPrm.baseCreateParams.outQueParams[0].nextLink = snkId;  ipcFramesInHostPrm.exportOnlyPhyAddr= FALSE;

 //    ipcFramesInHostPrm.baseCreateParams.notifyProcessLink = FALSE;//FALSE         Chains_ipcFramesInSetCbInfo(&ipcFramesInHostPrm);//????    

 

  snkPrm.numInQue=1;//5 //   

snkPrm.inQueParams[0].prevLinkId=ipcFramesInHost;    

snkPrm.inQueParams[0].prevLinkQueId=0;//    

    Chains_displayCtrlInit(chainsCfg->displayRes);

   System_linkCreate(ipcFramesOutVpssId, &ipcFramesOutVpssPrm, sizeof(ipcFramesOutVpssPrm));     System_linkCreate(ipcFramesInHost, &ipcFramesInHostPrm , sizeof(ipcFramesInHostPrm));//66     System_linkCreate(ipcFramesInDspId, &ipcFramesInDspPrm, sizeof(ipcFramesInDspPrm));     System_linkCreate(osdId, &osdPrm, sizeof(osdPrm));  //   System_linkCreate(displayId, &displayPrm, sizeof(displayPrm));//      System_linkCreate(snkId, &snkPrm, sizeof(snkPrm));//6   

    Chains_memPrintHeapStatus();

    {      

System_linkStart(snkId);//7               

 System_linkStart(osdId);        

 System_linkStart(ipcFramesInDspId);       

  System_linkStart(ipcFramesOutVpssId);       

  System_linkStart(ipcFramesInHost);//77                   

   System_linkStart(captureId);

        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_linkControl(displayId, DISPLAY_LINK_CMD_PRINT_STATISTICS, NULL, 0, TRUE);//          

   }        

}

  System_linkStop(captureId);        

 System_linkStop(ipcFramesOutVpssId);        

 System_linkStop(ipcFramesInHost);//88     

    System_linkStop(ipcFramesInDspId);     

    System_linkStop(osdId); //       

   System_linkStop(ipcFramesInHost);//88  

 System_linkStop(snkId);//8    

 }

    System_linkDelete(captureId);   

  System_linkDelete(ipcFramesOutVpssId);   

  System_linkDelete(ipcFramesInDspId);    

 System_linkDelete(osdId);

   System_linkDelete(ipcFramesInHost);//99  

System_linkDelete(snkId);//9

    for(i = 0; i < 1; i++)    

 {        

AlgLink_OsdChWinParams * chWinPrm = &osdPrm.osdChCreateParams[i].chDefaultParams;

 chWinPrm->numWindows = CHAINS_OSD_NUM_WINDOWS;

        for(j=0; j < chWinPrm->numWindows; j++)       

  {            

Chains_deleteBuf(osdWinBuPtr[i][j], CHAINS_OSD_WIN_WIDTH *                              CHAINS_OSD_WIN_HEIGHT*2, SYSTEM_IPC_SR_NON_CACHED_DEFAULT);      

   }   

  }    

Chains_displayCtrlDeInit();

}

 

message:

[c6xdsp ] come in mcfw/src_bios6/....systemlink_tskMain!

 [m3vpss ] This is test point 26!!!  

[c6xdsp ] This is test point 66!!! *******************************

 [m3vpss ] This is test point cmd=0

 [c6xdsp ] come in mcfw/src_bios6/....systemlink_cmdHandler!

 [c6xdsp ] This is test point 66!!! ****************36864***************  

[m3vpss ] This is test point 27!!!

 [m3vpss ]  18720: CAPTURE: Create in progress !!!

 [m3vpss ] This is test point 31!!! *****************************

  [m3vpss ] This is test point 33!!! ------- 33!!! ----

  [m3vpss ] This is test point 35!!! *****************************

 [m3vpss ] This is test point 37!!! *****************************pInstPrm->videoDecoderId = 1025  [m3vpss ] This is test point 38!!! *****************************

 [m3vpss ]  18752: CAPTURE: VIP0 PortA capture mode is [16-bit, Non-mux Embedded Sync] !!!  [m3vpss ] This is test point 39!!! *******************************

  [m3vpss ] This is test point 39!!! ------------------*******************************

  [m3vpss ] This is test point 39!!! ########===========*******************************  

[m3vpss ]  19462: CAPTURE: VIP0 PortA VID DEC 1025 (0x5d): 7002:0002:0000  

[m3vpss ] This is test point 36!!! *****************************  

[m3vpss ]  UTILS: DMA: Allocated CH (TCC) = 58 (58)

 [m3vpss ] CAPTURE::HEAPID:0    USED:448

 [m3vpss ] CAPTURE::HEAPID:4    USED:50227200

 [m3vpss ]  19463: CAPTURE: Create Done !!!

 [m3vpss ] This is test point 28!!!

 [host] CHAINS_IPCALLOCBUF:Translated Addr Virt:0x40908900 To Phy:0xbf581900 Shared:0x481900 [m3vpss ]  20468: HDMI: Starting HDMI T!

 [host] IpcFramesInLink_tskMain:Entered  [host]  6052: IPC_FRAMES_IN   : Create in progress !!!

 [host]  6052: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_19] ...  6054: SYSTEM: Opening ListMP [VPSS-M3_IPC_IN_19] ...  [m3vpss ]  20478: HDMI: HDMI Config ... DONE !!!  [m3vpss ]  20479: HDMI: Starting HDMI Transmitter ... DONE !!!  [m3vpss ]  20479: IPC_FRAMES_OUT   : Create in progress !!!

 [host]  6058: IPC_FRAMES_IN   : Create Done !!!  [c6xdsp ]  18266: IPC_FRAMES_IN   : Create in progress !!!  [c6xdsp ] listMPOutName=VPSS-M3_IPC_OUT_19  [m3vpss ]  20481: IPC_FRAMES_OUT   : Create Done !!!  [c6xdsp ] listMPInName=VPSS-M3_IPC_IN_19  [c6xdsp ]  18267: SYSTEM: Opening ListMP [VPSS-M3_IPC_OUT_19] ...  [c6xdsp ]  18267: Assertion @ Line: 106 in links_common/system/system_ipc_listMP.c: 0 : failed !!!

 

could you tell me  how to solve the problem???thanks  a lot!