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.

DM8127+tvp5150采集PAL信号不正确

Other Parts Discussed in Thread: TVP5150

DM8127+tvp5150,采集红外相机的PAL信号,红外相机的分辨率为720*576,有效像素是640*480,也就是说四周会有黑边。

开发包为rdk3.5,如果把tvp5150设置为黑屏模式,采集结果如下:

如果对着台灯拍,采集结果如下:

在matlab中,把采集的图像进行处理,把分辨率设为736*564,得到的连续3帧图像如下:

请问,这是什么原因啊?


  • 应用程序以/opt/ipnc/Source/ipnc_rdk/ipnc_mcfw/mcfw/src_linux/mcfw_api/usecases/multich_encode_decode.c为基础进行例程的修改,captureLink参数设置如下:

        CaptureLink_CreateParams        capturePrm;

        capturePrm.numVipInst = 1;
        capturePrm.outQueParams[0].nextLink = gIpcFramesOutVpssToHostId;
        capturePrm.tilerEnable = FALSE;
        capturePrm.enableSdCrop = FALSE;
        capturePrm.numBufsPerCh = 6;
        capturePrm.numExtraBufs = 0;
        capturePrm.fakeHdMode = FALSE;
        capturePrm.doCropInCapture = FALSE;
        capturePrm.isPalMode = Vcap_isPalMode();

        for(i=0; i<capturePrm.numVipInst; i++)
        {
        pCaptureInstPrm = &capturePrm.vipInst[i];////
        pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA;

        pCaptureInstPrm->videoDecoderId = SYSTEM_DEVICE_VID_DEC_TVP5150_DRV;

        //added by qiu
        capturePrm.numVipInst = 1;
        //capturePrm.outQueParams[0].nextLink = gIpcOutVpssId;
        capturePrm.outQueParams[0].nextLink = gIpcFramesOutVpssToHostId;
        capturePrm.tilerEnable = FALSE;
        capturePrm.enableSdCrop = FALSE;
        capturePrm.numBufsPerCh = 6;
        capturePrm.numExtraBufs = 0;
        capturePrm.fakeHdMode = FALSE;
        capturePrm.doCropInCapture = FALSE;
        capturePrm.isPalMode = Vcap_isPalMode();


            pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
            pCaptureInstPrm->standard           = SYSTEM_STD_D1;
            pCaptureInstPrm->numOutput = 1;

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

  • /opt/ipnc/Source/ipnc_rdk/ipnc_mcfw/mcfw/src_bios6/links_m3vpss/capture/captureLink_drv.c中的设置为

            pVipCreateArgs->videoCaptureMode =  VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC;

            pVipCreateArgs->videoIfMode = VPS_CAPT_VIDEO_IF_MODE_8BIT;

  • 调试发现,原来是在/opt/ipnc/Source/ipnc_rdk/ipnc_mcfw/mcfw/src_bios6/links_m3vpss/capture/captureLink_drv.c中用VPS_BUFFER_ALIGNMENT=16进行了对齐,改掉对齐就好了:

    /* Create capture driver */

    Int32 CaptureLink_drvCreateInst(CaptureLink_Obj * pObj, UInt16 instId)

    {

            //pVipOutPrm->pitch[0] =

            //VpsUtils_align(pObj->maxWidth, VPS_BUFFER_ALIGNMENT * 2);

            pVipOutPrm->pitch[0] = pObj->maxWidth ;

    }