|
|
|
@ -219,21 +219,33 @@ init_device(int fd)
|
|
|
|
|
.type = V4L2_BUF_TYPE_VIDEO_CAPTURE, |
|
|
|
|
}; |
|
|
|
|
if (preview_width > 0) { |
|
|
|
|
g_printerr("Setting camera to %dx%d fmt %d", |
|
|
|
|
preview_width, preview_height, preview_fmt); |
|
|
|
|
fmt.fmt.pix.width = preview_width; |
|
|
|
|
fmt.fmt.pix.height = preview_height; |
|
|
|
|
fmt.fmt.pix.pixelformat = preview_fmt; |
|
|
|
|
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED; |
|
|
|
|
fmt.fmt.pix.field = V4L2_FIELD_ANY; |
|
|
|
|
|
|
|
|
|
if (xioctl(fd, VIDIOC_S_FMT, &fmt) == -1) { |
|
|
|
|
errno_exit("VIDIOC_S_FMT"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
g_printerr("Driver returned %dx%d fmt %d", |
|
|
|
|
fmt.fmt.pix.width, fmt.fmt.pix.height, |
|
|
|
|
fmt.fmt.pix.pixelformat); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Note VIDIOC_S_FMT may change width and height. */ |
|
|
|
|
} else { |
|
|
|
|
g_printerr("Querying camera format"); |
|
|
|
|
/* Preserve original settings as set by v4l2-ctl for example */ |
|
|
|
|
if (xioctl(fd, VIDIOC_G_FMT, &fmt) == -1) { |
|
|
|
|
errno_exit("VIDIOC_G_FMT"); |
|
|
|
|
} |
|
|
|
|
g_printerr("Driver returned %dx%d fmt %d", |
|
|
|
|
fmt.fmt.pix.width, fmt.fmt.pix.height, |
|
|
|
|
fmt.fmt.pix.pixelformat); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Buggy driver paranoia. */ |
|
|
|
|