aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormrlika <andriy.lysnevych@gmail.com>2013-09-02 15:10:22 +0300
committerMichael Niedermayer <michaelni@gmx.at>2013-09-17 22:57:31 +0200
commited72542539fb61dc3a6d6280d8a6a956ac04a071 (patch)
tree072e2873ccf570ac769bf0d0adcee58ae567a1ae
parent2d28950da9b2733e2630d3c5aa8a85fd4793f7f5 (diff)
downloadffmpeg-ed72542539fb61dc3a6d6280d8a6a956ac04a071.tar.gz
lavd/v4l2: do not fail when VIDIOC_ENUMSTD returns EINVAL without a valid match
With some (buggy) drivers, the VIDIOC_G_STD ioctl returns a std_id that cannot be matched with any of the enumerated v4l2_standard structures (for example std_id = 0 or std_id = 0xffffff). Do not fail when we reach the end of the enumeration without a valid match. Fixes ticket #2370 Note: This commit message has been modified by Giorgio Vazzana, the original commit message was: "Fixed regression for mandatory VIDIOC_ENUMSTD support by v4l2" Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavdevice/v4l2.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
index 1199f4b8f8..1b2ede4a22 100644
--- a/libavdevice/v4l2.c
+++ b/libavdevice/v4l2.c
@@ -687,6 +687,10 @@ static int v4l2_set_parameters(AVFormatContext *s1)
standard.index = i;
if (v4l2_ioctl(s->fd, VIDIOC_ENUMSTD, &standard) < 0) {
ret = AVERROR(errno);
+ if (ret == AVERROR(EINVAL)) {
+ tpf = &streamparm.parm.capture.timeperframe;
+ break;
+ }
av_log(s1, AV_LOG_ERROR, "ioctl(VIDIOC_ENUMSTD): %s\n", av_err2str(ret));
return ret;
}