diff options
author | Matthew Waters <matthew@centricular.com> | 2018-09-27 13:29:03 +1000 |
---|---|---|
committer | Matthew Waters <matthew@centricular.com> | 2018-10-04 14:28:35 +1000 |
commit | 0086dfcf7f87a009c1040086c2bf188c12b0f755 (patch) | |
tree | c42ecbf10d9807b17f008ac8ae1e2546e240a749 | |
parent | 919083d082e71e5956df4e1dbf873f663a18caa9 (diff) | |
download | gst-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.c | 12 |
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; |