diff options
author | William M. Brack <wbrack@mmm.com.hk> | 2008-05-26 15:14:55 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2008-05-26 15:14:55 +0000 |
commit | dfe8d582fc40d238b8dfa6240e25fc4e540bf01e (patch) | |
tree | fd023b603c84760a6888bd1b6476fe9a59295591 /sys/v4l2/v4l2src_calls.c | |
parent | c3bde2dc428541976f3fad782bc48e138f9b9b23 (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.c | 21 |
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); |