interlace: Add FIXME comment about false passthrough bug
authorVivia Nikolaidou <vivia@ahiru.eu>
Thu, 18 Jun 2020 17:41:35 +0000 (20:41 +0300)
committerVivia Nikolaidou <vivia@ahiru.eu>
Wed, 24 Jun 2020 08:15:48 +0000 (11:15 +0300)
If interlace-mode is missing from upstream caps, we can falsely do
passthrough when in fact we'd have to switch fields.

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

gst/interlace/gstinterlace.c

index a15de74..31760ac 100644 (file)
@@ -453,6 +453,13 @@ gst_interlace_setcaps (GstInterlace * interlace, GstCaps * caps)
   }
 
   if (gst_caps_can_intersect (caps, othercaps)) {
+    /* 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
+     * field-order isn't mentioned in the caps, we will do passthrough here
+     * and end up outptuting wrong data. Must detect missing field-order info
+     * and not do passthrough in that case, but instead check the
+     * GstVideoBufferFlags at the switch_fields check */
     interlace->passthrough = TRUE;
   } else {
     if (GST_VIDEO_INFO_IS_INTERLACED (&info)) {