v4l2: fix interlaced set_format configuration
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Thu, 3 Feb 2011 22:42:59 +0000 (23:42 +0100)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 4 Feb 2011 09:49:06 +0000 (10:49 +0100)
Commit 6c8268dbfd5c88fac28c882ef2e4598a6522e2d6 broke recording
from interlaced v4l2 source (e.g. typical tv capture card) since
V4L2_FIELD_SEQ_TB (with fields stored separately) does not map
to currently defined interlaced format (fields stored interleaved).

Besides this mismatch, hardware might quite likely not support or
appreciate this field value, since querying supported formats mapped
_INTERLACED field formats to interlaced=true caps (so the latter should
not be mapped to field value that is not known to be supported).

sys/v4l2/gstv4l2object.c

index 7e15489..5c9022c 100644 (file)
@@ -2019,7 +2019,7 @@ gst_v4l2_object_set_format (GstV4l2Object * v4l2object, guint32 pixelformat,
     /* ideally we would differentiate between types of interlaced video
      * but there is not sufficient information in the caps..
      */
-    field = V4L2_FIELD_SEQ_TB;
+    field = V4L2_FIELD_INTERLACED;
   } else {
     GST_DEBUG_OBJECT (v4l2object->element, "progressive video");
     field = V4L2_FIELD_NONE;