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.

DM8148单通道采集数据失败

Other Parts Discussed in Thread: TVP5158, TVP7002

CaptureLink_CreateParams_Init(&capturePrm);

capturePrm.outQueParams[0].nextLink =AVST_DisplaySclrLinkId;
capturePrm.numVipInst = 1;
capturePrm.tilerEnable = FALSE;
capturePrm.numBufsPerCh = NUM_CAPTURE_BUFFERS;
capturePrm.maxBlindAreasPerCh = 4;

pCaptureInstPrm = &capturePrm.vipInst[0];
pCaptureInstPrm->vipInstId = (SYSTEM_CAPTURE_INST_VIP0_PORTA+
vipInstId)%SYSTEM_CAPTURE_INST_MAX;
pCaptureInstPrm->videoDecoderId = 0; //SYSTEM_DEVICE_VID_DEC_TVP5158_DRV;
pCaptureInstPrm->inDataFormat = SYSTEM_DF_RGB24_888;//SYSTEM_DF_YUV422P;
pCaptureInstPrm->standard =SYSTEM_STD_1080P_30;
pCaptureInstPrm->numOutput = 1;

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


pCaptureInstPrm->videoCaptureMode = SYSTEM_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_HSYNC_VSYNC;//SYSTEM_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC
pCaptureInstPrm->videoIfMode = SYSTEM_CAPT_VIDEO_IF_MODE_24BIT;//SYSTEM_CAPT_VIDEO_IF_MODE_16BIT;
pCaptureInstPrm->inScanFormat = SYSTEM_SF_PROGRESSIVE;

采集参数及格式如上,在CaptureLink_drvProcessData函数中添加打印frameList.numFrames的值一直是0.我的理解是采集link没能采集到数据。看了一下采集参数没发现什么毛病。

  • 你好,

    你确认你的硬件HDMI转RGB888输出后是接在VIP0的portA上么?你哟测量过输入给DM8148的时钟/同步信号都是正确的么?

    下面的设置

    pCaptureInstPrm->vipInstId = (SYSTEM_CAPTURE_INST_VIP0_PORTA+vipInstId)%SYSTEM_CAPTURE_INST_MAX;

    能否修改为:

    pCaptureInstPrm->vipInstId          = SYSTEM_CAPTURE_INST_VIP0_PORTA;

  • 谢谢您的指点。 测量的同步时钟时对的。我看了一下参数,

    采集参数pCaptureInstPrm->vipInstId = (SYSTEM_CAPTURE_INST_VIP0_PORTA+vipInstId)%SYSTEM_CAPTURE_INST_MAX;

    采集参数pCaptureInstPrm->vipInstId          = SYSTEM_CAPTURE_INST_VIP0_PORTA;

    是完全等价的。

    至于您说的"硬件HDMI转RGB888输出后是接在VIP0的portA上",没看懂。您能说的再详细一点吗?谢谢。

  • vipInstId = 0;

    gVcapModuleContext.captureId = SYSTEM_LINK_ID_CAPTURE;


    gVdisModuleContext.displayId[0] = SYSTEM_LINK_ID_DISPLAY_0; /* ON AND OFF CHIP HDMI */
    gVdisModuleContext.displayId[1] = SYSTEM_LINK_ID_DISPLAY_2; /* SDTV */

    CaptureLink_CreateParams_Init(&capturePrm);
    capturePrm.outQueParams[0].nextLink =AVST_DisplaySclrLinkId;
    capturePrm.numVipInst = 1;
    capturePrm.tilerEnable = FALSE;
    capturePrm.numBufsPerCh = NUM_CAPTURE_BUFFERS;
    capturePrm.maxBlindAreasPerCh = 4;

    pCaptureInstPrm = &capturePrm.vipInst[0];
    pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA;

    pCaptureInstPrm->videoDecoderId = DEVICE_VID_DEC_TVP7002_DRV; //=0;
    pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;//SYSTEM_DF_RGB24_888;//
    pCaptureInstPrm->standard =SYSTEM_STD_1080P_30;
    pCaptureInstPrm->numOutput = 1;

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


    pCaptureInstPrm->videoCaptureMode = SYSTEM_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_HSYNC_VSYNC;//SYSTEM_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC
    pCaptureInstPrm->videoIfMode = SYSTEM_CAPT_VIDEO_IF_MODE_24BIT;//SYSTEM_CAPT_VIDEO_IF_MODE_16BIT;
    pCaptureInstPrm->inScanFormat = SYSTEM_SF_PROGRESSIVE;

    您好,刚才回复的有点问题。SiI1161采集本身就有问题。现在换成tvp7002了,这是重新配置的参数。这个测试是有时钟信号的。在CaptureLink_drvProcessData函数里面打印frameList.numFrames一直是0.这是不是代表没有采集到数据。