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.

dvrrdk A8端链路问题

Other Parts Discussed in Thread: TVP5158

现在创建A8端进行算法处理的链路:

cap -> dup0 -> merge -> vpssout -> hostin -> hostout ->vpssin -> dis

hostin实现一个算法的回调函数,现在发现这个链路通不了。

    CaptureLink_CreateParams          capPrms;
       DupLink_CreateParams        dupPrm;
    MergeLink_CreateParams            mergePrm;
    IpcFramesOutLinkRTOS_CreateParams   ipcOutVpssPrm;
    IpcFramesInLinkHLOS_CreateParams  hostInPrm;

    IpcFramesOutLinkHLOS_CreateParams  hostOutPrm;
    IpcFramesInLinkRTOS_CreateParams   ipcInVpssPrm;
   AppLink_CreateParams              appPrms;
    SwMsLink_CreateParams             swmsPrms;
    DisplayLink_CreateParams          disPrms;
    DisplayLink_CreateParams          disPrms1;
    IpcFramesOutLinkRTOS_CreateParams ipcFramesOutVpssToDSPPrms;
    IpcFramesInLinkRTOS_CreateParams  ipcFramesInDspPrms;


    MULTICH_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams,ipcOutVpssPrm);
    MULTICH_INIT_STRUCT(IpcFramesInLinkHLOS_CreateParams, hostInPrm);
    MULTICH_INIT_STRUCT(IpcFramesOutLinkHLOS_CreateParams,hostOutPrm);
    MULTICH_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams,ipcInVpssPrm);
    MULTICH_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams,ipcFramesInDspPrms);
    MULTICH_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams,ipcFramesOutVpssToDSPPrms);
    MULTICH_INIT_STRUCT(SwMsLink_CreateParams ,swmsPrms);
    MULTICH_INIT_STRUCT(DisplayLink_CreateParams, disPrms);
    MULTICH_INIT_STRUCT(DisplayLink_CreateParams, disPrms1);

    gVcapModuleContext.captureId    = SYSTEM_LINK_ID_CAPTURE;
    gVdisModuleContext.swMsId[0]    = SYSTEM_LINK_ID_SW_MS_MULTI_INST_0;
    gVdisModuleContext.displayId[0] = SYSTEM_LINK_ID_DISPLAY_0;
   gVdisModuleContext.displayId[1] = SYSTEM_LINK_ID_DISPLAY_1;
    gVcapModuleContext.ipcFramesOutVpssId[1]    = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_1;
    gVcapModuleContext.ipcFramesInHostId       = SYSTEM_HOST_LINK_ID_IPC_FRAMES_IN_1;
    gVdisModuleContext.ipcFramesOutHostId    =SYSTEM_HOST_LINK_ID_IPC_FRAMES_OUT_1;
    gVdisModuleContext.ipcFramesInVpssFromHostId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_IN_1;

    /* capture link init */
    CaptureLink_CreateParams_Init(&capPrms);
   // capPrms.outQueParams[0].nextLink = gVcapModuleContext.deiId[0];
   capPrms.outQueParams[0].nextLink = lid_dup;
    capPrms.numVipInst               = 1;
    capPrms.tilerEnable              = FALSE;
    capPrms.numBufsPerCh             = 8;
    capPrms.maxBlindAreasPerCh       = 4;
    capPrms.isPalMode = Vcap_isPalMode();

#if ! defined CAP_DEV_TVP5158
    capPrms.doCropInCapture     = FALSE;
    capPrms.enableSdCrop        = FALSE;
#endif

    /* capture instance init */
    CaptureLink_VipInstParams *prm_cap_inst = &capPrms.vipInst[0];
    prm_cap_inst->vipInstId          = (SYSTEM_CAPTURE_INST_VIP0_PORTA + 0 ) % SYSTEM_CAPTURE_INST_MAX;
    prm_cap_inst->inDataFormat       = SYSTEM_DF_YUV422P;
    prm_cap_inst->numOutput          = 1;

#if ! defined CAP_DEV_TVP5158
    prm_cap_inst->standard          = SYSTEM_STD_1080P_60;
    prm_cap_inst->videoIfMode       = DEVICE_CAPT_VIDEO_IF_MODE_16BIT;
    prm_cap_inst->videoCaptureMode  = DEVICE_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC;
#else
    prm_cap_inst->videoDecoderId    = SYSTEM_DEVICE_VID_DEC_TVP5158_DRV;
    prm_cap_inst->standard          = SYSTEM_STD_MUX_4CH_D1;  // set input mode as 4 input with D1 resolution
#endif

    /* capture out init */
    CaptureLink_OutParams *prm_cap_out = &prm_cap_inst->outParams[0];
    prm_cap_out->scEnable            = FALSE;
    prm_cap_out->scOutWidth          = 0;
    prm_cap_out->scOutHeight         = 0;
    prm_cap_out->outQueId            = 0;
    prm_cap_out->dataFormat          = SYSTEM_DF_YUV422I_YUYV;


    dupPrm.inQueParams.prevLinkId         = gVcapModuleContext.captureId;
    dupPrm.inQueParams.prevLinkQueId      = 0;
    dupPrm.numOutQue                      = 2;
    dupPrm.outQueParams[1].nextLink       = VPSS_LINK_ID_MERGE;
    dupPrm.outQueParams[0].nextLink       = VPSS_LINK_ID_IPC_FRAME_OUT_TO_DSP;

        // Merge link
          mergePrm.inQueParams[0].prevLinkId    = lid_dup;
        mergePrm.inQueParams[0].prevLinkQueId = DEI_LINK_OUT_QUE_VIP_SC;
        mergePrm.notifyNextLink               = TRUE;
        mergePrm.numInQue                     = 1;
        mergePrm.outQueParams.nextLink        = gVcapModuleContext.ipcFramesOutVpssId[1];

        ipcOutVpssPrm.baseCreateParams.noNotifyMode = TRUE;
        ipcOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;
        ipcOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
        ipcOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = VPSS_LINK_ID_MERGE;
        ipcOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
        ipcOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = gVcapModuleContext.ipcFramesInHostId;


        hostInPrm.baseCreateParams.noNotifyMode              = TRUE;
        hostInPrm.baseCreateParams.notifyNextLink         = FALSE;
        hostInPrm.baseCreateParams.notifyPrevLink         = TRUE;
        hostInPrm.baseCreateParams.notifyProcessLink         = TRUE;
        hostInPrm.baseCreateParams.inQueParams.prevLinkId     = gVcapModuleContext.ipcFramesOutVpssId[1];
        hostInPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
        
        hostInPrm.baseCreateParams.outQueParams[0].nextLink    =  gVdisModuleContext.ipcFramesOutHostId ;
        hostInPrm.cbCtx                                      = NULL;
         hostInPrm.cbFxn                                      = save_frames1;

    hostOutPrm.baseCreateParams.noNotifyMode              = TRUE;
    hostOutPrm.baseCreateParams.notifyNextLink         = TRUE;
    hostOutPrm.baseCreateParams.notifyPrevLink         = TRUE;
    hostOutPrm.baseCreateParams.notifyProcessLink         = TRUE;
    hostOutPrm.baseCreateParams.inQueParams.prevLinkId     = gVcapModuleContext.ipcFramesInHostId;
    hostOutPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    hostOutPrm.baseCreateParams.outQueParams[0].nextLink    =  gVdisModuleContext.ipcFramesInVpssFromHostId;


    ipcInVpssPrm.baseCreateParams.inQueParams.prevLinkId    = gVdisModuleContext.ipcFramesOutHostId;
    ipcInVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    ipcInVpssPrm.baseCreateParams.notifyNextLink            = TRUE;
    ipcInVpssPrm.baseCreateParams.notifyPrevLink            = TRUE;
    ipcInVpssPrm.baseCreateParams.numOutQue                 = 1;
    ipcInVpssPrm.baseCreateParams.outQueParams[0].nextLink   =  gVdisModuleContext.displayId[1];

        // Display1 link init
        disPrms1.inQueParams[0].prevLinkId     = gVdisModuleContext.ipcFramesInVpssFromHostId;
        disPrms1.inQueParams[0].prevLinkQueId = 0;
        disPrms1.displayRes                     = VSYS_STD_1080P_60;
请问下大家,可能是哪地方存在问题