summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorSeungha Yang <seungha@centricular.com>2021-05-25 19:47:28 +0900
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-05-27 08:15:15 +0000
commit1ac30ad53fff9b572212d7727695b1424b803214 (patch)
tree3d6caa42c55480e38d3ac7bb7173b9bac50f585c /gst
parentda33921f8d6d746d638c011065231419da221f71 (diff)
downloadgstreamer-plugins-bad-1ac30ad53fff9b572212d7727695b1424b803214.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/2282>
Diffstat (limited to 'gst')
-rw-r--r--gst/interlace/gstinterlace.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/gst/interlace/gstinterlace.c b/gst/interlace/gstinterlace.c
index 409de1b1e..8858d97f2 100644
--- a/gst/interlace/gstinterlace.c
+++ b/gst/interlace/gstinterlace.c
@@ -980,18 +980,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)