glupload: Detect overlay meta buffers correctly
authorLubosz Sarnecki <lubosz.sarnecki@collabora.co.uk>
Thu, 18 Jun 2015 11:34:58 +0000 (13:34 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:32:06 +0000 (19:32 +0000)
https://bugzilla.gnome.org/show_bug.cgi?id=745107

gst-libs/gst/gl/gstglupload.c

index 3387eeb42c92ec46720c7255ed3a95a64c43d9da..5f0f637ec336207ea54f73998772fe538028c252 100644 (file)
@@ -153,7 +153,8 @@ _gl_memory_upload_accept (gpointer impl, GstBuffer * buffer, GstCaps * in_caps,
     GstCaps * out_caps)
 {
   struct GLMemoryUpload *upload = impl;
-  GstCapsFeatures *features, *gl_features;
+  GstCapsFeatures *features, *gl_features, *gl_overlay_features,
+      *system_memory_overlay_features;
   gboolean ret = TRUE;
   int i;
 
@@ -164,10 +165,23 @@ _gl_memory_upload_accept (gpointer impl, GstBuffer * buffer, GstCaps * in_caps,
   if (!gst_caps_features_is_equal (features, gl_features))
     ret = FALSE;
 
+  gl_overlay_features =
+      gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_GL_MEMORY ","
+      GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
+  if (gst_caps_features_is_equal (features, gl_overlay_features))
+    ret = TRUE;
+
   features = gst_caps_get_features (in_caps, 0);
+
+  system_memory_overlay_features =
+      gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY ","
+      GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
+
   if (!gst_caps_features_is_equal (features, gl_features)
+      && !gst_caps_features_is_equal (features, gl_overlay_features)
       && !gst_caps_features_is_equal (features,
-          GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY))
+          GST_CAPS_FEATURES_MEMORY_SYSTEM_MEMORY)
+      && !gst_caps_features_is_equal (features, system_memory_overlay_features))
     ret = FALSE;
 
   gst_caps_features_free (gl_features);