summaryrefslogtreecommitdiffstats
path: root/sys/v4l2/v4l2src_calls.c
diff options
context:
space:
mode:
authorWilliam M. Brack <wbrack@mmm.com.hk>2008-05-26 15:14:55 +0000
committerWim Taymans <wim.taymans@gmail.com>2008-05-26 15:14:55 +0000
commitdfe8d582fc40d238b8dfa6240e25fc4e540bf01e (patch)
treefd023b603c84760a6888bd1b6476fe9a59295591 /sys/v4l2/v4l2src_calls.c
parentc3bde2dc428541976f3fad782bc48e138f9b9b23 (diff)
sys/v4l2/v4l2src_calls.c: If we fail to get the frame intervals, simply don't touch the framerates on the template ca...
Original commit message from CVS: Patch by: William M. Brack <wbrack at mmm dot com dot hk> * sys/v4l2/v4l2src_calls.c: (gst_v4l2src_probe_caps_for_format_and_size): If we fail to get the frame intervals, simply don't touch the framerates on the template caps instead of discarding the format. See #520092.
Diffstat (limited to 'sys/v4l2/v4l2src_calls.c')
-rw-r--r--sys/v4l2/v4l2src_calls.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c
index 914a3c39..8b060847 100644
--- a/sys/v4l2/v4l2src_calls.c
+++ b/sys/v4l2/v4l2src_calls.c
@@ -690,11 +690,9 @@ gst_v4l2src_probe_caps_for_format_and_size (GstV4l2Src * v4l2src,
}
}
if (!added) {
- /* no range was added, make a default range */
- GST_WARNING_OBJECT (v4l2src, "no range added, setting 0/1 to 100/1");
+ /* no range was added, leave the default range from the template */
+ GST_WARNING_OBJECT (v4l2src, "no range added, leaving default");
g_value_unset (&rates);
- g_value_init (&rates, GST_TYPE_FRACTION_RANGE);
- gst_value_set_fraction_range_full (&rates, 0, 1, 100, 1);
}
} else if (ival.type == V4L2_FRMIVAL_TYPE_CONTINUOUS) {
guint32 maxnum, maxdenom;
@@ -723,25 +721,30 @@ gst_v4l2src_probe_caps_for_format_and_size (GstV4l2Src * v4l2src,
goto unknown_type;
}
+return_data:
s = gst_structure_copy (template);
gst_structure_set (s, "width", G_TYPE_INT, (gint) width,
"height", G_TYPE_INT, (gint) height, NULL);
- gst_structure_set_value (s, "framerate", &rates);
- g_value_unset (&rates);
+ if (G_IS_VALUE (&rates)) {
+ /* only change the framerate on the template when we have a valid probed new
+ * value */
+ gst_structure_set_value (s, "framerate", &rates);
+ g_value_unset (&rates);
+ }
return s;
/* ERRORS */
enum_frameintervals_failed:
{
GST_DEBUG_OBJECT (v4l2src,
- "Failed to enumerate frame sizes for %" GST_FOURCC_FORMAT "@%ux%u",
+ "Unable to enumerate intervals for %" GST_FOURCC_FORMAT "@%ux%u",
GST_FOURCC_ARGS (pixelformat), width, height);
- return NULL;
+ goto return_data;
}
unknown_type:
{
- /* I don't see how this is actually an error */
+ /* I don't see how this is actually an error, we ignore the format then */
GST_WARNING_OBJECT (v4l2src,
"Unknown frame interval type at %" GST_FOURCC_FORMAT "@%ux%u: %u",
GST_FOURCC_ARGS (pixelformat), width, height, ival.type);