summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Waters <matthew@centricular.com>2018-09-27 13:29:03 +1000
committerMatthew Waters <matthew@centricular.com>2018-10-04 14:28:35 +1000
commit0086dfcf7f87a009c1040086c2bf188c12b0f755 (patch)
treec42ecbf10d9807b17f008ac8ae1e2546e240a749
parent919083d082e71e5956df4e1dbf873f663a18caa9 (diff)
downloadgst-plugins-base-0086dfcf7f87a009c1040086c2bf188c12b0f755.tar.gz
gst-plugins-base-0086dfcf7f87a009c1040086c2bf188c12b0f755.tar.xz
glfilter: don't complete overwrite caps features from the subclass
We can get away with ensuring that the memory:GLMemory caps feature is present in the output caps
-rw-r--r--gst-libs/gst/gl/gstglfilter.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gst-libs/gst/gl/gstglfilter.c b/gst-libs/gst/gl/gstglfilter.c
index bd2bc2c5e..aba9daafe 100644
--- a/gst-libs/gst/gl/gstglfilter.c
+++ b/gst-libs/gst/gl/gstglfilter.c
@@ -611,7 +611,7 @@ gst_gl_filter_caps_remove_size (GstCaps * caps)
}
static GstCaps *
-gst_gl_filter_set_caps_features (const GstCaps * caps,
+gst_gl_filter_ensure_caps_contains_features (const GstCaps * caps,
const gchar * feature_name)
{
GstCaps *ret = gst_caps_copy (caps);
@@ -619,8 +619,12 @@ gst_gl_filter_set_caps_features (const GstCaps * caps,
guint i = 0;
for (i = 0; i < n; i++) {
- gst_caps_set_features (ret, i,
- gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_GL_MEMORY));
+ GstCapsFeatures *f = gst_caps_get_features (ret, i);
+ if (!gst_caps_features_is_any (f)) {
+ if (!gst_caps_features_contains (f, feature_name)) {
+ gst_caps_features_add (f, GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
+ }
+ }
}
return ret;
@@ -651,7 +655,7 @@ gst_gl_filter_transform_caps (GstBaseTransform * bt,
direction, caps, NULL);
result =
- gst_gl_filter_set_caps_features (tmp,
+ gst_gl_filter_ensure_caps_contains_features (tmp,
GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
gst_caps_unref (tmp);
tmp = result;