interlace: Restrict passthrough conditions

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>
This commit is contained in:
Vivia Nikolaidou 2020-06-18 22:15:08 +03:00
parent 76ce67e70b
commit 581d76b41a

View file

@ -464,7 +464,9 @@ gst_interlace_setcaps (GstInterlace * interlace, GstCaps * caps)
} }
interlace->switch_fields = FALSE; 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 /* 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 * in a non-telecine mode and we have TFF upstream and
* top-field-first=FALSE in interlace (or the other way around), AND * top-field-first=FALSE in interlace (or the other way around), AND