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.

8168 A8无法获取数据

Other Parts Discussed in Thread: TVP7002

caplinkid->dupid->deiid->ipcFramesOutVpssToHostId->ipcFramesInHostId,A8能够收到SYSTEM_NEW_DATA命令,但是无法获得数据,ListMP_getHead(pObj->listMPOutHndl)总是为0,ipcFramesOutVpssToHostId通过打印,有数据发送到A8,怎么A8就是读不到数据呢

pCaptureInstPrm = &capturePrm.vipInst[vipInstId];
pCaptureInstPrm->vipInstId = vipInstId;//(SYSTEM_CAPTURE_INST_VIP1_PORTB-vipInstId)%SYSTEM_CAPTURE_INST_MAX;
pCaptureInstPrm->videoDecoderId = SYSTEM_DEVICE_VID_DEC_TVP7002_DRV;
pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;////FVID2_DF_YUV422I_YUYV for nsf
pCaptureInstPrm->standard = SYSTEM_STD_1080I_60;
pCaptureInstPrm->numOutput = 1;

pCaptureOutPrm = &pCaptureInstPrm->outParams[0];
pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV422I_YUYV;
pCaptureOutPrm->scEnable = FALSE;
pCaptureOutPrm->scOutWidth = 1920;
pCaptureOutPrm->scOutHeight = 540;
pCaptureOutPrm->outQueId = 0;

dupPrm[0].inQueParams.prevLinkId = gVcapModuleContext.captureId;
dupPrm[0].inQueParams.prevLinkQueId = 0;
dupPrm[0].numOutQue = 1;
dupPrm[0].outQueParams[0].nextLink = gVcapModuleContext.deiId[0];
dupPrm[0].notifyNextLink = TRUE;

DeiLink_CreateParams_Init(&deiPrm[i]);

deiPrm[i].inQueParams.prevLinkId = gMultiChHd_VcapVencVdisObj.dupId[i];
deiPrm[i].inQueParams.prevLinkQueId = 0;
deiPrm[i].enableOut[DEI_LINK_OUT_QUE_DEI_SC] = TRUE;
deiPrm[i].enableOut[DEI_LINK_OUT_QUE_VIP_SC] = FALSE;
deiPrm[i].enableOut[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT] = FALSE;
deiPrm[i].tilerEnable = FALSE;
/* Set non default DEI Frame Rate */
deiPrm[i].inputFrameRate[DEI_LINK_OUT_QUE_DEI_SC] = 30;
deiPrm[i].outputFrameRate[DEI_LINK_OUT_QUE_DEI_SC] = 30;

/* Set non default DEI Frame Rate */
deiPrm[i].inputFrameRate[DEI_LINK_OUT_QUE_VIP_SC] = 30;
deiPrm[i].outputFrameRate[DEI_LINK_OUT_QUE_VIP_SC] = 30;

deiPrm[i].comprEnable = FALSE;
deiPrm[i].setVipScYuv422Format = FALSE;
deiPrm[i].scaleMode = DEI_SCALE_MODE_RATIO;
deiPrm[i].enableDeiForceBypass = FALSE;
deiPrm[i].enableLineSkipSc = FALSE;

/* DEI Path Scalar ratio is 1:2, D1 => CIF */
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC].ratio.widthRatio.numerator = 1;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC].ratio.widthRatio.denominator = 1;

deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC].ratio.heightRatio.numerator = 1;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC].ratio.heightRatio.denominator = 1;

/* DEI Path Scalar ratio is 1:2, D1 => CIF */
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC].ratio.widthRatio.numerator = 1;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC].ratio.widthRatio.denominator = 1;

deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC].ratio.heightRatio.numerator = 1;
deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC].ratio.heightRatio.denominator = 1;

deiPrm[i].outQueParams[DEI_LINK_OUT_QUE_DEI_SC].nextLink= gVcapModuleContext.ipcFramesOutVpssToHostId;

ipcFramesOutVpssToHostPrm.baseCreateParams.noNotifyMode = FALSE;
ipcFramesOutVpssToHostPrm.baseCreateParams.notifyNextLink = TRUE;
ipcFramesOutVpssToHostPrm.baseCreateParams.notifyPrevLink = TRUE;
ipcFramesOutVpssToHostPrm.baseCreateParams.inQueParams.prevLinkId = gVcapModuleContext.deiId[0];
ipcFramesOutVpssToHostPrm.baseCreateParams.inQueParams.prevLinkQueId = DEI_LINK_OUT_QUE_DEI_SC;
ipcFramesOutVpssToHostPrm.baseCreateParams.outQueParams[0].nextLink = gVcapModuleContext.ipcFramesInHostId;

///ipcFramesInHostPrm的ID是gVcapModuleContext.ipcFramesInHostId
ipcFramesInHostPrm.baseCreateParams.noNotifyMode = TRUE;
ipcFramesInHostPrm.baseCreateParams.notifyNextLink = FALSE;
ipcFramesInHostPrm.baseCreateParams.notifyPrevLink = FALSE;
ipcFramesInHostPrm.baseCreateParams.inQueParams.prevLinkId = gVcapModuleContext.ipcFramesOutVpssToHostId;////参数:ipcFramesOutVpssToHostPrm
ipcFramesInHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcFramesInHostPrm.baseCreateParams.outQueParams[0].nextLink = SYSTEM_LINK_ID_INVALID;
ipcFramesInHostPrm.exportOnlyPhyAddr = TRUE;


  • Xin Jin,

    我建议你参考一下A8是如何获得编码后的数据的,是类似的概念。

  • ipcFramesInHostPrm.baseCreateParams.notifyNextLink = FALSE时,A8能正常收取数据,但是ipcFramesInHostPrm.baseCreateParams.notifyNextLink = TRUE时,A8就不能正常读取数据,但能接收到new_data命令,为什么采取notify模式读取不到数据呢

  • jin xin 说:

    ipcFramesInHostPrm.baseCreateParams.notifyNextLink = FALSE时,A8能正常收取数据,但是ipcFramesInHostPrm.baseCreateParams.notifyNextLink = TRUE时,A8就不能正常读取数据,但能接收到new_data命令,为什么采取notify模式读取不到数据呢

    ipcFramesInHostPrm link的next link 是 SYSTEM_LINK_ID_INVALID;

    应当是不需要再去通知后面的link了,你配置为TRUE,可能导致消息发送失败;

    建议你参考demo的参数配置;