interlace: Restrict passthrough conditions
authorVivia Nikolaidou <vivia@ahiru.eu>
Thu, 18 Jun 2020 19:15:08 +0000 (22:15 +0300)
committerVivia Nikolaidou <vivia@ahiru.eu>
Wed, 24 Jun 2020 08:15:48 +0000 (11:15 +0300)
Don't do passthrough if interleave-mode=mixed or if we have one of the
telecine modes

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1349>

gst/interlace/gstinterlace.c

index c67865d..f365650 100644 (file)
@@ -464,7 +464,9 @@ gst_interlace_setcaps (GstInterlace * interlace, GstCaps * caps)
   }
 
   interlace->switch_fields = FALSE;
-  if (gst_caps_can_intersect (caps, othercaps)) {
+  if (gst_caps_can_intersect (caps, othercaps) &&
+      interlace->pattern <= GST_INTERLACE_PATTERN_2_2 &&
+      GST_VIDEO_INFO_INTERLACE_MODE (&info) != GST_VIDEO_INTERLACE_MODE_MIXED) {
     /* FIXME: field-order is optional in the caps. This means that, if we're
      * in a non-telecine mode and we have TFF upstream and
      * top-field-first=FALSE in interlace (or the other way around), AND