summaryrefslogtreecommitdiffstats
path: root/sys/v4l2/v4l2src_calls.c
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2007-11-13 17:19:13 +0000
committerTim-Philipp Müller <tim@centricular.net>2007-11-13 17:19:13 +0000
commita597c1d4e3ccba83963e4bf928913c414a3636a0 (patch)
tree7f78f5f60e708ce84235559283b20a175a50926f /sys/v4l2/v4l2src_calls.c
parent711afebc9f7f869fa90f6a479787caf8c398a830 (diff)
sys/v4l2/v4l2src_calls.c: but the corresponding ioctl() call fails even though the driver claims to support this form...
Original commit message from CVS: * sys/v4l2/v4l2src_calls.c: (gst_v4l2src_probe_caps_for_format): If VIDIOC_ENUM_FRAMESIZES is defined (= recent kernel), but the corresponding ioctl() call fails even though the driver claims to support this format, just fall back to the pre-2.6.19 kernel routine that creates caps with suitable height and width ranges (see #448278).
Diffstat (limited to 'sys/v4l2/v4l2src_calls.c')
-rw-r--r--sys/v4l2/v4l2src_calls.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c
index edd4a013..0b03c999 100644
--- a/sys/v4l2/v4l2src_calls.c
+++ b/sys/v4l2/v4l2src_calls.c
@@ -810,6 +810,9 @@ gst_v4l2src_probe_caps_for_format (GstV4l2Src * v4l2src, guint32 pixelformat,
results = g_list_delete_link (results, results);
}
+ if (gst_caps_is_empty (ret))
+ goto enum_framesizes_no_results;
+
return ret;
/* ERRORS */
@@ -821,6 +824,15 @@ enum_framesizes_failed:
" (%s)", GST_FOURCC_ARGS (pixelformat), g_strerror (errno));
goto default_frame_sizes;
}
+enum_framesizes_no_results:
+ {
+ /* it's possible that VIDIOC_ENUM_FRAMESIZES is defined but the driver in
+ * question doesn't actually support it yet */
+ GST_DEBUG_OBJECT (v4l2src, "No results for pixelformat %" GST_FOURCC_FORMAT
+ " enumerating frame sizes, trying fallback",
+ GST_FOURCC_ARGS (pixelformat));
+ goto default_frame_sizes;
+ }
unknown_type:
{
GST_WARNING_OBJECT (v4l2src,