deinterlace: Properly set interlaced field in getcaps
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 26 Apr 2010 15:25:38 +0000 (17:25 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 29 Apr 2010 17:28:24 +0000 (19:28 +0200)
gst/deinterlace/gstdeinterlace.c

index b9023a1..ee8d94c 100644 (file)
@@ -1183,9 +1183,15 @@ gst_deinterlace_getcaps (GstPad * pad)
 
   GST_OBJECT_UNLOCK (self);
 
-  if (!self->passthrough && self->fields == GST_DEINTERLACE_ALL) {
-    for (len = gst_caps_get_size (ret); len > 0; len--) {
-      GstStructure *s = gst_caps_get_structure (ret, len - 1);
+  for (len = gst_caps_get_size (ret); len > 0; len--) {
+    GstStructure *s = gst_caps_get_structure (ret, len - 1);
+
+    if (pad == self->sinkpad || self->passthrough)
+      gst_structure_remove_field (s, "interlaced");
+    else
+      gst_structure_set (s, "interlaced", G_TYPE_BOOLEAN, FALSE, NULL);
+
+    if (!self->passthrough && self->fields == GST_DEINTERLACE_ALL) {
       const GValue *val;
 
       val = gst_structure_get_value (s, "framerate");