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.

求助,有关DM368+IT66121的视频采集左边黑色的问题:)谢谢各位



各位好,

硬件:DM368+IT66121。

软件:DVSDK4.0.02

场景:采集1080i的视频。

问题:采集到的视频左侧有黑色区域,有效图像偏右。

首先猜测是SDK的内核代码中,SPH和SLVx为零,实验按照1080i的标准设置SPH值为148,SLV0和SLV1为5,但是采集到的图像仍然如此。

随后猜测是SDK中默认的V/H SYNC为负脉冲,按照1080i的标准设置改为 正脉冲,问题 依然存在。

视频文件见附件。

  • feller shi 说:
    首先猜测是SDK的内核代码中,SPH和SLVx为零,实验按照1080i的标准设置SPH值为148,SLV0和SLV1为5,但是采集到的图像仍然如此。

    修改SPH,图像是否有变化(左右移动)? 如果有就继续调整。

  • 1.尝试在

    static void ccdc_setwin(struct v4l2_rect *image_win,
    			enum ccdc_frmfmt frm_fmt, int ppc, int mode)

    代码中,修改sph的值,图像没有变化。采集图像后读取SPH寄存器,发现始终为0。怀疑是驱动什么地方是在清零。还在定位。

    2.另外,如果黑色条框的宽度/高度像素很少,可以采用下面帖子的方法通过resize图像,将黑色边框去掉。

    http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/16368.aspx
    与
    http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/5253.aspx

    但是我们的图像采集回来左侧黑色条框大约400个像素,此时采用resize后,图像明显被裁剪,而且如果V方向没有resize的话,图像明显拉宽变形。

    不知道有没有什么其他办法?

    谢谢

  • feller shi 说:

    1.尝试在

    static void ccdc_setwin(struct v4l2_rect *image_win,
    			enum ccdc_frmfmt frm_fmt, int ppc, int mode)

    代码中,修改sph的值,图像没有变化。采集图像后读取SPH寄存器,发现始终为0。怀疑是驱动什么地方是在清零。还在定位。

    是的,请定位现有代码不断修改sph的地方。

    之前修改同步信号的极性是否也是没有修改成功?请确认一下。

  • 情况说明:我们测试了视频源的HD与WE信号,信号的相位/脉冲宽度都正常。与标准的要求一致。

    我们的解决方法是改变HD的宽度,从实际实验来看,的确采集到的图像偏移变小。

    但是,这与标准要求不一致了。

    不知道有没有见过?是不是WE信号没有起作用呢?

    :)谢谢

  • Feller,

    会否是时钟,同步信号极性不匹配?

    之前修改同步信号的极性是否也是没有修改成功?请确认一下。

  • 你好,

    我们尝试修改以下几个信号极性,从采集视频来看,没有效果。

    		.fid_pol = VPFE_PINPOL_POSITIVE,
    		.vd_pol = VPFE_PINPOL_POSITIVE,
    		.hd_pol = VPFE_PINPOL_POSITIVE,

    然后尝试修改了EDID,将视频的参数修改,然后达到了将黑框去掉的目的。:)

    谢谢

  • Feller,

    修改了HDMI receiver的EDID信息?

  • 孟工,您好

        是的,这里描述一下我们的实验情况。首先是通过修改HDMI receiver的EDID信息中,供摄像头获取的720p最佳输出时序部分(字节序0x36-0x47),

    HSYNC的宽度改为原始宽度加上back porch,即从40改到260,但是HDMI receiver无法识别图像。HSYNC的宽度改为259,于是DM368获取到的图像

    就不再有左侧的黑边了。

        实验的情况说明图像的水平起始像素在和同步脉冲的右肩位置相关,似乎是WE信号无效。随后我们恢复EDID为标准时序,尝试修改内核代码dm365_ccdc.c的ccdc_config_ycbcr函数,修改如下:

    modeset = modeset | ((params->pix_fmt & CCDC_INPUT_MASK)
    << CCDC_INPUT_SHIFT) |

    ((0 & CCDC_FRM_FMT_MASK) << CCDC_FRM_FMT_SHIFT) |
    (((params->fid_pol & CCDC_FID_POL_MASK) << CCDC_FID_POL_SHIFT)) |
    (((0 & CCDC_HD_POL_MASK) << CCDC_HD_POL_SHIFT)) |
    (((0 & CCDC_VD_POL_MASK) << CCDC_VD_POL_SHIFT))| 0x20;

    原始为

    /* configure pixel format or input mode */
    modeset = modeset | ((params->pix_fmt & CCDC_INPUT_MASK)
    << CCDC_INPUT_SHIFT) |
    ((params->frm_fmt & CCDC_FRM_FMT_MASK) << CCDC_FRM_FMT_SHIFT) |
    (((params->fid_pol & CCDC_FID_POL_MASK) << CCDC_FID_POL_SHIFT)) |
    (((params->hd_pol & CCDC_HD_POL_MASK) << CCDC_HD_POL_SHIFT)) |
    (((params->vd_pol & CCDC_VD_POL_MASK) << CCDC_VD_POL_SHIFT));