浏览代码

Removed unused io methods

Martijn Braam 4 年之前
父节点
当前提交
74f170e9e5
共有 1 个文件被更改,包括 22 次插入85 次删除
  1. 22 85
      main.c

+ 22 - 85
main.c

@@ -26,9 +26,7 @@ struct buffer {
 };
 
 struct buffer *buffers;
-static int *outbuffer;
 static unsigned int n_buffers;
-static enum io_method io = IO_METHOD_MMAP;
 
 // Rear camera
 static char *rear_dev_name;
@@ -252,22 +250,10 @@ init_device(int fd)
 		exit(EXIT_FAILURE);
 	}
 
-	switch (io) {
-		case IO_METHOD_READ:
-			if (!(cap.capabilities & V4L2_CAP_READWRITE)) {
-				fprintf(stderr, "%s does not support read i/o\n",
-					*dev_name);
-				exit(EXIT_FAILURE);
-			}
-			break;
-		case IO_METHOD_MMAP:
-		case IO_METHOD_USERPTR:
-			if (!(cap.capabilities & V4L2_CAP_STREAMING)) {
-				fprintf(stderr, "%s does not support streaming i/o\n",
-					*dev_name);
-				exit(EXIT_FAILURE);
-			}
-			break;
+	if (!(cap.capabilities & V4L2_CAP_STREAMING)) {
+		fprintf(stderr, "%s does not support streaming i/o\n",
+			*dev_name);
+		exit(EXIT_FAILURE);
 	}
 
 	/* Select video input, video standard and tune here. */
@@ -446,76 +432,27 @@ read_frame(int fd)
 {
 	struct v4l2_buffer buf = {0};
 
-	switch (io) {
-		case IO_METHOD_READ:
-			if (read(fd, buffers[0].start, buffers[0].length) == -1) {
-				switch (errno) {
-					case EAGAIN:
-						return 0;
-					case EIO:
-						/* Could ignore EIO, see spec. */
-						/* fallthrough */
-					default:
-						errno_exit("read");
-						break;
-				}
-			}
-			process_image(buffers[0].start, buffers[0].length);
-			break;
-		case IO_METHOD_MMAP:
-			buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-			buf.memory = V4L2_MEMORY_MMAP;
-			if (xioctl(fd, VIDIOC_DQBUF, &buf) == -1) {
-				switch (errno) {
-					case EAGAIN:
-						return 0;
-					case EIO:
-						/* Could ignore EIO, see spec. */
-						/* fallthrough */
-					default:
-						errno_exit("VIDIOC_DQBUF");
-						break;
-				}
-			}
-
-			//assert(buf.index < n_buffers);
-
-			process_image(buffers[buf.index].start, buf.bytesused);
+	buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+	buf.memory = V4L2_MEMORY_MMAP;
+	if (xioctl(fd, VIDIOC_DQBUF, &buf) == -1) {
+		switch (errno) {
+			case EAGAIN:
+				return 0;
+			case EIO:
+				/* Could ignore EIO, see spec. */
+				/* fallthrough */
+			default:
+				errno_exit("VIDIOC_DQBUF");
+				break;
+		}
+	}
 
-			if (xioctl(fd, VIDIOC_QBUF, &buf) == -1) {
-				errno_exit("VIDIOC_QBUF");
-			}
-			break;
-		case IO_METHOD_USERPTR:
-			buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-			buf.memory = V4L2_MEMORY_USERPTR;
-			if (xioctl(fd, VIDIOC_DQBUF, &buf) == -1) {
-				switch (errno) {
-					case EAGAIN:
-						return 0;
-					case EIO:
-						/* Could ignore EIO, see spec. */
-						/* fallthrough */
-					default:
-						errno_exit("VIDIOC_DQBUF");
-						break;
-				}
-			}
-			unsigned int i;
-			for (i = 0; i < n_buffers; ++i) {
-				if (buf.m.userptr == (unsigned long) buffers[i].start
-					&& buf.length == buffers[i].length) {
-					break;
-				}
-			}
+	//assert(buf.index < n_buffers);
 
-			//assert(i < n_buffers);
+	process_image(buffers[buf.index].start, buf.bytesused);
 
-			process_image((void *) buf.m.userptr, buf.bytesused);
-			if (xioctl(fd, VIDIOC_QBUF, &buf) == -1) {
-				errno_exit("VIDIOC_QBUF");
-			}
-			break;
+	if (xioctl(fd, VIDIOC_QBUF, &buf) == -1) {
+		errno_exit("VIDIOC_QBUF");
 	}
 
 	return 1;