v4l2src: also unset INTERLACED flag on buffers if frame is not interlaced
authorTim-Philipp Müller <tim@centricular.com>
Fri, 21 Feb 2014 19:46:44 +0000 (19:46 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 21 Feb 2014 19:48:42 +0000 (19:48 +0000)
https://bugzilla.gnome.org/show_bug.cgi?id=724899

sys/v4l2/gstv4l2bufferpool.c

index 0272d2a..523d306 100644 (file)
@@ -971,11 +971,14 @@ gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool, GstBuffer ** buffer)
   if (vbuffer.field == V4L2_FIELD_INTERLACED_TB) {
     GST_BUFFER_FLAG_SET (outbuf, GST_VIDEO_BUFFER_FLAG_INTERLACED);
     GST_BUFFER_FLAG_SET (outbuf, GST_VIDEO_BUFFER_FLAG_TFF);
-  }
-  if (vbuffer.field == V4L2_FIELD_INTERLACED_BT) {
+  } else if (vbuffer.field == V4L2_FIELD_INTERLACED_BT) {
     GST_BUFFER_FLAG_SET (outbuf, GST_VIDEO_BUFFER_FLAG_INTERLACED);
     GST_BUFFER_FLAG_UNSET (outbuf, GST_VIDEO_BUFFER_FLAG_TFF);
+  } else {
+    GST_BUFFER_FLAG_UNSET (outbuf, GST_VIDEO_BUFFER_FLAG_INTERLACED);
+    GST_BUFFER_FLAG_UNSET (outbuf, GST_VIDEO_BUFFER_FLAG_TFF);
   }
+
   if (GST_VIDEO_INFO_FORMAT (&obj->info) == GST_VIDEO_FORMAT_ENCODED) {
     if (vbuffer.flags & V4L2_BUF_FLAG_KEYFRAME)
       GST_BUFFER_FLAG_UNSET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);