diff options
author | Seungha Yang <seungha@centricular.com> | 2021-05-25 19:47:28 +0900 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2021-06-01 02:01:40 +0100 |
commit | 9f6b1bcfaca5566904aebc503978563a262cee93 (patch) | |
tree | daef67926b279e5155f1a932bb6194d40623799c | |
parent | 49d510872b338dc5a544ce6003de38d8c8183c71 (diff) | |
download | gstreamer-plugins-bad-9f6b1bcfaca5566904aebc503978563a262cee93.tar.gz |
interlace: Drop framerate from query caps of sinkpad
Query caps should return caps which represent the element can accept,
not resulting format.
Fixing negotiation error with
gst-launch-1.0 videotestsrc ! video/x-raw,framerate=25/1 ! interlace field-pattern=0 ! fakesink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2293>
-rw-r--r-- | gst/interlace/gstinterlace.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/gst/interlace/gstinterlace.c b/gst/interlace/gstinterlace.c index 6f4d2f922..73ba69698 100644 --- a/gst/interlace/gstinterlace.c +++ b/gst/interlace/gstinterlace.c @@ -951,18 +951,25 @@ gst_interlace_getcaps (GstPad * pad, GstInterlace * interlace, GstCaps * filter) icaps = gst_caps_merge (icaps, alternate); } - if (pattern == GST_INTERLACE_PATTERN_1_1) { - icaps = - gst_interlace_caps_double_framerate (icaps, (pad == interlace->srcpad), - FALSE); - } else if (pattern != GST_INTERLACE_PATTERN_2_2) { - GST_FIXME_OBJECT (interlace, - "Add calculations for telecine framerate conversions"); + /* Drop framerate for sinkpad */ + if (pad == interlace->sinkpad) { for (i = 0; i < gst_caps_get_size (icaps); ++i) { GstStructure *s = gst_caps_get_structure (icaps, i); gst_structure_remove_field (s, "framerate"); } + } else { + if (pattern == GST_INTERLACE_PATTERN_1_1) { + icaps = gst_interlace_caps_double_framerate (icaps, TRUE, FALSE); + } else if (pattern != GST_INTERLACE_PATTERN_2_2) { + GST_FIXME_OBJECT (interlace, + "Add calculations for telecine framerate conversions"); + for (i = 0; i < gst_caps_get_size (icaps); ++i) { + GstStructure *s = gst_caps_get_structure (icaps, i); + + gst_structure_remove_field (s, "framerate"); + } + } } if (clean_filter) |