summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeungha Yang <seungha@centricular.com>2021-05-26 00:23:56 +0900
committerTim-Philipp Müller <tim@centricular.com>2021-06-01 10:37:47 +0100
commit86d08471904d8cc5f5a620ee1fb449cb883acb34 (patch)
tree94329b16bbb66fe9ae591e6185fb6f5fccec9a50
parentf895791a7bee39b9e7557a6dc3ba4d4ddb5c4fd1 (diff)
downloadgstreamer-plugins-good-86d08471904d8cc5f5a620ee1fb449cb883acb34.tar.gz
deinterlace: Drop "field-order" field while transforming caps
Like other basetransform subclasses are doing, drop field which can be converted by deinterlace. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1001>
-rw-r--r--gst/deinterlace/gstdeinterlace.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gst/deinterlace/gstdeinterlace.c b/gst/deinterlace/gstdeinterlace.c
index 1d48c5957..abacf1865 100644
--- a/gst/deinterlace/gstdeinterlace.c
+++ b/gst/deinterlace/gstdeinterlace.c
@@ -2524,11 +2524,18 @@ gst_deinterlace_getcaps (GstDeinterlace * self, GstPad * pad, GstCaps * filter)
for (len = gst_caps_get_size (tmp2); len > 0; len--) {
GstStructure *s = gst_caps_get_structure (tmp2, len - 1);
- if (pad == self->sinkpad)
+ /* Drop fields which can be converted by us.
+ * Specifically "field-order" here.
+ * "field-order" with "progressive" and/or
+ * unspecified "interlace-mode" would cause negotiation issue */
+ gst_structure_remove_field (s, "field-order");
+
+ if (pad == self->sinkpad) {
gst_structure_remove_field (s, "interlace-mode");
- else
+ } else {
gst_structure_set (s, "interlace-mode", G_TYPE_STRING, "progressive",
NULL);
+ }
}
if (self->user_set_fields == GST_DEINTERLACE_ALL) {