If the size for the device is set to 0x0, the input device will
try to autodetect the size to use.
+Only for the video4linux2 device, if the frame rate is set to 0/0 the
+input device will use the frame rate value already set in the driver.
Video4Linux support is deprecated since Linux 2.6.30, and will be
dropped in later versions.
Follow some usage examples of the video4linux devices with the ff*
tools.
@example
-# Grab and show the input of a video4linux device.
+# Grab and show the input of a video4linux device, frame rate is set
+# to the default of 25/1.
ffplay -s 320x240 -f video4linux /dev/video0
# Grab and show the input of a video4linux2 device, autoadjust size.
ffplay -f video4linux2 /dev/video0
-# Grab and record the input of a video4linux2 device, autoadjust size.
+# Grab and record the input of a video4linux2 device, autoadjust size,
+# frame rate value defaults to 0/0 so it is read from the video4linux2
+# driver.
ffmpeg -f video4linux2 -i /dev/video0 out.mpeg
@end example
#define LIBAVDEVICE_VERSION_MAJOR 52
#define LIBAVDEVICE_VERSION_MINOR 2
-#define LIBAVDEVICE_VERSION_MICRO 2
+#define LIBAVDEVICE_VERSION_MICRO 3
#define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \
LIBAVDEVICE_VERSION_MINOR, \
ap->time_base.num = tpf->numerator;
ap->time_base.den = tpf->denominator;
}
+ } else {
+ /* if timebase value is not set in ap, read the timebase value
+ * from the driver and set it in ap */
+ struct v4l2_streamparm streamparm = { 0 };
+ struct v4l2_fract *tpf = &streamparm.parm.capture.timeperframe;
+
+ streamparm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ if (ioctl(s->fd, VIDIOC_G_PARM, &streamparm) != 0) {
+ av_log(s1, AV_LOG_ERROR, "ioctl(VIDIOC_G_PARM): %s\n", strerror(errno));
+ return AVERROR(errno);
+ }
+ ap->time_base.num = tpf->numerator;
+ ap->time_base.den = tpf->denominator;
}
return 0;