专家们,
有个关于vip_trimmer 的配置问题咨询下。
首先描述下场景,使用的芯片是DM385,IPNC_RDK3.5.0。
外部视频源是外同步信号(Hsync,Vsync),所以captureLink中
pVipCreateArgs->videoCaptureMode =
VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_HSYNC_VSYNC;
…
因此需要通过vip trimmer 把消隐信号裁剪掉,相应代码如下。
vipCropPrms.channelNum = 0;
/* Enable VIP trimmer in discrete sync mode */
if((pVipCreateArgs->videoCaptureMode ==VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_ACTVID_VBLK) ||
(pVipCreateArgs->videoCaptureMode ==VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_ACTVID_VSYNC)||
(pVipCreateArgs->videoCaptureMode ==VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_HSYNC_VSYNC))
{
vipCropPrms.vipCropEnable = TRUE;
}
else
{
vipCropPrms.vipCropEnable = FALSE;
}
vipCropPrms.vipCropCfg.cropStartX = 236;
vipCropPrms.vipCropCfg.cropStartY = 41;
vipCropPrms.vipCropCfg.cropWidth = 1920;
vipCropPrms.vipCropCfg.cropHeight = 1080;
status = FVID2_control(pInst->captureVipHandle,
IOCTL_VPS_CAPT_SET_VIP_CROP_CFG,
&vipCropPrms, NULL);
UTILS_assert(status == FVID2_SOK);
…
当信号是外同步720P60时,设置 vipCropCfg中的四个参数后,就可以只把有效数据采集进来了。但是信号是1080P30时,出现如下问题:
1080P30是正确的信号,示波器量过(clk = 74.25MHz,HSync = 33KHz,VSync = 30Hz),不使用裁剪的时候,vip能采集到识别到正确的帧率并把所有的数据都放到buffer中,从buffer可以算出需要裁剪的参数为startX = 236,width = 1920,startY = 41,height = 1080,当设置了裁剪后,VIP识别到的帧频就变成15帧而已了。多次试验发现,只要startX+width 超过2048就会出现如上现象。请问是哪里还有限制 ?该如何修正?谢谢
Louis:
小bu,
Capture是On-the-fly的,而行buffer的宽度限制为11位的,也就是2048。