From 9f9493598c561cc6e736e3800557c82ceac405c3 Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Mon, 11 Aug 2014 12:21:28 -0300 Subject: [PATCH] assrender: always intersect with the filter caps Avoids returning values that peers can't use https://bugzilla.gnome.org/show_bug.cgi?id=733916 --- ext/assrender/gstassrender.c | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c index 369801c..253d111 100644 --- a/ext/assrender/gstassrender.c +++ b/ext/assrender/gstassrender.c @@ -612,13 +612,6 @@ gst_ass_render_get_videosink_caps (GstPad * pad, GstCaps * filter) /* if peer returns ANY caps, return filtered src pad template caps */ caps = gst_caps_copy (gst_pad_get_pad_template_caps (srcpad)); - if (filter) { - GstCaps *intersection = gst_caps_intersect_full (filter, caps, - GST_CAPS_INTERSECT_FIRST); - gst_caps_unref (caps); - caps = intersection; - } - } else { /* duplicate caps which contains the composition into one version with @@ -634,14 +627,13 @@ gst_ass_render_get_videosink_caps (GstPad * pad, GstCaps * filter) } else { /* no peer, our padtemplate is enough then */ caps = gst_pad_get_pad_template_caps (pad); - if (filter) { - GstCaps *intersection; + } - intersection = - gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST); - gst_caps_unref (caps); - caps = intersection; - } + if (filter) { + GstCaps *intersection = gst_caps_intersect_full (filter, caps, + GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (caps); + caps = intersection; } GST_DEBUG_OBJECT (render, "returning %" GST_PTR_FORMAT, caps); @@ -682,12 +674,6 @@ gst_ass_render_get_src_caps (GstPad * pad, GstCaps * filter) /* if peer returns ANY caps, return filtered sink pad template caps */ caps = gst_caps_copy (gst_pad_get_pad_template_caps (sinkpad)); - if (filter) { - GstCaps *intersection = gst_caps_intersect_full (filter, caps, - GST_CAPS_INTERSECT_FIRST); - gst_caps_unref (caps); - caps = intersection; - } } else { @@ -704,14 +690,15 @@ gst_ass_render_get_src_caps (GstPad * pad, GstCaps * filter) } else { /* no peer, our padtemplate is enough then */ caps = gst_pad_get_pad_template_caps (pad); - if (filter) { - GstCaps *intersection; + } - intersection = - gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST); - gst_caps_unref (caps); - caps = intersection; - } + if (filter) { + GstCaps *intersection; + + intersection = + gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST); + gst_caps_unref (caps); + caps = intersection; } GST_DEBUG_OBJECT (render, "returning %" GST_PTR_FORMAT, caps); -- 2.7.4