#include #include #include #include #include #include #include #include #include #include #include extern const char *__progname; static const char *videodev = "viddev"; static int vfd; static int nbufs; static unsigned char **bufmaps; static unsigned int *buflens; static void open_video(void) { vfd = open(videodev,O_RDWR,0); if (vfd < 0) { fprintf(stderr,"%s: %s: %s\n",__progname,videodev,strerror(errno)); exit(1); } } static void setup_video(void) { struct v4l2_requestbuffers rb; struct v4l2_buffer b; __typeof__(b.m.offset) *offsets; __typeof__(b.length) *lengths; int i; void *mmrv; rb.count = 8; rb.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; rb.memory = V4L2_MEMORY_MMAP; if (ioctl(vfd,VIDIOC_REQBUFS,&rb) < 0) { fprintf(stderr,"%s: VIDIOC_REQBUFS: %s\n",__progname,strerror(errno)); exit(1); } nbufs = rb.count; printf("nbufs=%d\n",nbufs); offsets = malloc(nbufs*sizeof(*offsets)); lengths = malloc(nbufs*sizeof(*lengths)); for (i=0;i