summaryrefslogtreecommitdiff
path: root/libavdevice
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2011-05-28 21:14:06 +0200
committerStefano Sabatini <stefano.sabatini-lala@poste.it>2011-05-30 09:08:42 +0200
commit7533a727f9efed2d0eb6c8b452ff9e35214f5c8e (patch)
tree414ce87d024db6526298f1a34c3a43b98ff0bf31 /libavdevice
parent2d48515eb7a6db81ca067db0f2b986c58360115a (diff)
downloadffmpeg-7533a727f9efed2d0eb6c8b452ff9e35214f5c8e.tar.gz
v4l2: rewrite code iterating the supported standards
Simplify/clarify the code logic and error reporting.
Diffstat (limited to 'libavdevice')
-rw-r--r--libavdevice/v4l2.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
index d1bf572418..605b7b748e 100644
--- a/libavdevice/v4l2.c
+++ b/libavdevice/v4l2.c
@@ -437,7 +437,7 @@ static int v4l2_set_parameters(AVFormatContext *s1, AVFormatParameters *ap)
struct v4l2_standard standard = {0};
struct v4l2_streamparm streamparm = {0};
struct v4l2_fract *tpf = &streamparm.parm.capture.timeperframe;
- int i;
+ int i, ret;
streamparm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
@@ -474,15 +474,13 @@ static int v4l2_set_parameters(AVFormatContext *s1, AVFormatParameters *ap)
/* set tv standard */
for (i = 0;; i++) {
standard.index = i;
- if (ioctl(s->fd, VIDIOC_ENUMSTD, &standard) < 0) {
- av_log(s1, AV_LOG_ERROR, "The V4L2 driver ioctl set standard(%s) failed\n",
- s->standard);
- return AVERROR(EIO);
- }
-
- if (!strcasecmp(standard.name, s->standard)) {
+ ret = ioctl(s->fd, VIDIOC_ENUMSTD, &standard);
+ if (ret < 0 || !strcasecmp(standard.name, s->standard))
break;
- }
+ }
+ if (ret < 0) {
+ av_log(s1, AV_LOG_ERROR, "Unknown standard '%s'\n", s->standard);
+ return ret;
}
av_log(s1, AV_LOG_DEBUG, "The V4L2 driver set standard: %s, id: %"PRIu64"\n",