deinterlace: Only check interlaced flag in sink caps
authorDavid Schleef <ds@schleef.org>
Sun, 11 Apr 2010 20:14:30 +0000 (13:14 -0700)
committerDavid Schleef <ds@schleef.org>
Sun, 11 Apr 2010 20:15:32 +0000 (13:15 -0700)
Fixes #615460.

gst/deinterlace/gstdeinterlace.c
gst/deinterlace/gstdeinterlace.h

index 8a6d17e..0f7af63 100644 (file)
@@ -1491,7 +1491,11 @@ gst_deinterlace_setcaps (GstPad * pad, GstCaps * caps)
       gst_structure_get_fraction (structure, "framerate", &self->frame_rate_n,
       &self->frame_rate_d);
   res &= gst_structure_get_fourcc (structure, "format", &fourcc);
-  res &= gst_video_format_parse_caps_interlaced (caps, &self->interlaced);
+  if (pad == self->sinkpad) {
+    res &= gst_video_format_parse_caps_interlaced (caps, &self->interlaced);
+  } else {
+    res &= gst_video_format_parse_caps_interlaced (caps, &self->src_interlaced);
+  }
   if (!res)
     goto invalid_caps;
 
index cc60b30..d77128f 100644 (file)
@@ -213,6 +213,7 @@ struct _GstDeinterlace
   guint frame_size;
   gint frame_rate_n, frame_rate_d;
   gboolean interlaced;
+  gboolean src_interlaced;
 
   /* Number of bytes of actual data in each scanline.  May be less than
      OverlayPitch since the overlay's scanlines might have alignment