summaryrefslogtreecommitdiffstats
path: root/sys/v4l2/v4l2src_calls.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2007-06-06 10:19:17 +0000
committerAndy Wingo <wingo@pobox.com>2007-06-06 10:19:17 +0000
commitdd803ce06c892cfed21e26095cc8d13b343a3a76 (patch)
tree015e6e78d2d34e877ccf33331615ffab51f0194b /sys/v4l2/v4l2src_calls.c
parent37e309798181a7ec0e56123563cc891facd3809b (diff)
sys/v4l2/v4l2src_calls.c (gst_v4l2src_probe_caps_for_format)
Original commit message from CVS: 2007-06-06 Andy Wingo <wingo@pobox.com> * sys/v4l2/v4l2src_calls.c (gst_v4l2src_probe_caps_for_format) (gst_v4l2src_probe_caps_for_format_and_size): Only probe for format and size if the ioctls are defined; should fix compilation on Linux < 2.16.19.
Diffstat (limited to 'sys/v4l2/v4l2src_calls.c')
-rw-r--r--sys/v4l2/v4l2src_calls.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c
index bbd79780..24e265ee 100644
--- a/sys/v4l2/v4l2src_calls.c
+++ b/sys/v4l2/v4l2src_calls.c
@@ -114,6 +114,8 @@ gst_v4l2src_clear_format_list (GstV4l2Src * v4l2src)
return TRUE;
}
+/* The frame interval enumeration code first appeared in Linux 2.6.19. */
+#ifdef VIDIOC_ENUM_FRAMEINTERVALS
static GstStructure *
gst_v4l2src_probe_caps_for_format_and_size (GstV4l2Src * v4l2src,
guint32 pixelformat,
@@ -260,11 +262,13 @@ unknown_type:
return NULL;
}
}
+#endif /* defined VIDIOC_ENUM_FRAMEINTERVALS */
GstCaps *
gst_v4l2src_probe_caps_for_format (GstV4l2Src * v4l2src, guint32 pixelformat,
const GstStructure * template)
{
+#ifdef VIDIOC_ENUM_FRAMESIZES
GstCaps *ret;
GstStructure *tmp;
gint fd = v4l2src->v4l2object->video_fd;
@@ -342,6 +346,22 @@ unknown_type:
": %u", GST_FOURCC_ARGS (pixelformat), size.type);
return NULL;
}
+#else /* defined VIDIOC_ENUM_FRAMESIZES */
+ GstCaps *ret;
+ GstStructure *tmp;
+
+ /* This code is for Linux < 2.6.19 */
+
+ ret = gst_caps_new_empty ();
+ tmp = gst_structure_copy (template);
+ gst_structure_set (tmp, "width", GST_TYPE_INT_RANGE, (gint) 1,
+ (gint) GST_V4L2_MAX_SIZE, "height", GST_TYPE_INT_RANGE,
+ (gint) 1, (gint) GST_V4L2_MAX_SIZE,
+ "framerate", GST_TYPE_FRACTION_RANGE, (gint) 0,
+ (gint) 1, (gint) 100, (gint) 1, NULL);
+ gst_caps_append_structure (ret, tmp);
+ return ret;
+#endif /* defined VIDIOC_ENUM_FRAMESIZES */
}
/******************************************************