转:http://blog.csdn.net/kickxxx/article/details/6636828
VIDIOC_S_CROP ioctl会传入一个v4l2_crop
给驱动程序
crop.c.left, crop.c.top. crop.c.width, crop.c.height定义了一个长方形区域,这个区域是capture或者overlay模式下的取景范围,
举个例子,图片的active(actual) size是720x576, 现在你只想capture或者overlay (64,64) ,(556, 64), (64,512),(556, 512)这四个点组成区域内的像素. 即在原始图像上下左右各裁掉64像素大小, 那么可如下设置
memset(&crop, 0, sizeof(struct v4l2_crop));
crop.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;crop.c.left = 64;
crop.c.top = 64;
crop.c.width = 592;
crop.c.height = 448;
ret = xioctl(fd, VIDIOC_S_CROP, &crop);
if (ret) {
printf("xioctl VIDIOC_S_CROP failed, errno(%d)\n", errno);
exit(EXIT_FAILURE);
}
但是freescal mx51平台,在interlaced输入模式下,只能正确的处理水平裁剪,不能正确处理垂直裁剪。