diff options
author | William M. Brack <wbrack@mmm.com.hk> | 2008-03-17 19:50:58 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2008-03-17 19:50:58 +0000 |
commit | a6019fc0bf8854e2c062ebc69dee3e4f2c886115 (patch) | |
tree | 846239b22b63c2d165c06273ef548abb77fd9073 /sys/v4l2/v4l2src_calls.c | |
parent | 110a0ea563d9825b1227fd0af8d7c7f37c8dab5e (diff) |
sys/v4l2/v4l2src_calls.c: Make sure the probed frame sizes are reversed in the resulting caps also when using V4L2_FR...
Original commit message from CVS:
Patch by: William M. Brack <wbrack at mmm com hk>
* sys/v4l2/v4l2src_calls.c:
(gst_v4l2src_probe_caps_for_format_and_size),
(gst_v4l2src_probe_caps_for_format):
Make sure the probed frame sizes are reversed in the resulting
caps also when using V4L2_FRMSIZE_STEPWISE (so they end up
highest resolution first); also remove unused variable.
(Partly fixes #520092)
Diffstat (limited to 'sys/v4l2/v4l2src_calls.c')
-rw-r--r-- | sys/v4l2/v4l2src_calls.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/v4l2/v4l2src_calls.c b/sys/v4l2/v4l2src_calls.c index 1096ad9d..9e6a95c0 100644 --- a/sys/v4l2/v4l2src_calls.c +++ b/sys/v4l2/v4l2src_calls.c @@ -573,15 +573,12 @@ gst_v4l2src_probe_caps_for_format_and_size (GstV4l2Src * v4l2src, guint32 pixelformat, guint32 width, guint32 height, const GstStructure * template) { - GstCaps *ret; gint fd = v4l2src->v4l2object->video_fd; struct v4l2_frmivalenum ival; guint32 num, denom; GstStructure *s; GValue rates = { 0, }; - ret = gst_caps_new_empty (); - memset (&ival, 0, sizeof (struct v4l2_frmivalenum)); ival.index = 0; ival.pixel_format = pixelformat; @@ -787,6 +784,9 @@ gst_v4l2src_probe_caps_for_format (GstV4l2Src * v4l2src, guint32 pixelformat, tmp = gst_v4l2src_probe_caps_for_format_and_size (v4l2src, pixelformat, w, h, template); + + /* we get low res to high res, but want high res to low res in caps, so + * prepend structs to results list, we'll reverse the order later then */ if (tmp) results = g_list_prepend (results, tmp); @@ -801,8 +801,11 @@ gst_v4l2src_probe_caps_for_format (GstV4l2Src * v4l2src, guint32 pixelformat, tmp = gst_v4l2src_probe_caps_for_format_and_size (v4l2src, pixelformat, w, h, template); + + /* we get low res to high res, but want high res to low res in caps, so + * prepend structs to results list, we'll reverse the order later then */ if (tmp) - gst_caps_append_structure (ret, tmp); + results = g_list_prepend (results, tmp); } } else if (size.type == V4L2_FRMSIZE_TYPE_CONTINUOUS) { guint32 maxw, maxh; @@ -818,6 +821,8 @@ gst_v4l2src_probe_caps_for_format (GstV4l2Src * v4l2src, guint32 pixelformat, gst_structure_set (tmp, "width", GST_TYPE_INT_RANGE, (gint) w, (gint) maxw, "height", GST_TYPE_INT_RANGE, (gint) h, (gint) maxh, NULL); + + /* no point using the results list here, since there's only one struct */ gst_caps_append_structure (ret, tmp); } } else { |