文档介绍:
linux-,但并没有加旋转功能,以下是驱动代码中需要修改的部分
:
Void gspca_dev_probe(有些参数) 38的内核是Void gspca_dev_probe2()
{
构建一个视频设备描述符
…….
memcpy(&gspca_dev->vdev, &gspca_template, sizeof gspca_template);
gspca_dev-> = &intf->dev;
video_set_drvdata(&gspca_dev->vdev,gspca_dev);
……..
}
在V4l2-:
#include "gspca/"
static long __video_do_ioctl(struct file *file,unsigned int cmd, void *arg)
{
const struct v4l2_ioctl_ops *ops = vfd->ioctl_ops;
struct gspca_dev *gspca_dev = video_get_drvdata(vfd);
……….
switch (cmd) {
case VIDIOCSRIGHT:zc3xx_rotate_right(gspca_dev);break;
case VIDIOCSLEFT:zc3xx_rotate_left(gspca_dev);break;
case VIDIOCSUP:zc3xx_rotate_up(gspca_dev);break;
case VIDIOCSDOWN:zc3xx_rotate_down(gspca_dev);break;
……..
}
:
/*contorl camera*/
void zc3xx_rotate_up(struct gspca_dev *gspca_dev)
{
reg_w(gspca_dev->dev,0x000f,0x003b); // gspca_dev->dev这个参数需要查函数要什么参数 reg_w(gspca_dev->dev,0x0007,0x003a);
reg_w(gspca_dev->dev,0x0008,0x0038);
reg_w(gspca_dev->dev,0x0008,0x003a);
reg_w(gspca_dev->dev,0x0004,0x0038);
reg_w(gspca_dev->dev,0x0007,0x003a);
reg_w(gspca_dev->dev,0x0000,0x0038);
#if 0
zc3xxRegWrite(gspca_dev->dev,0xa0,0x000f,0x003b,NULL,0);
zc3xxR