vaapisink: Fix the capsfeature advertisement in padtemplate
authorSreerenj Balachandran <sreerenj.balachandran@intel.com>
Wed, 17 Jun 2015 11:20:37 +0000 (14:20 +0300)
committerSreerenj Balachandran <sreerenj.balachandran@intel.com>
Wed, 17 Jun 2015 11:20:37 +0000 (14:20 +0300)
This fixes the regression introduced in 64acc74.

If a pad supports multiple set of capsfeatures, it needs to add
multiple equal structures with different feature sets to the caps.
Because caps structures with the same name but with a non-equal
set of caps features are not compatible.

Without this patch, playbin will autoplug xvimagesink instead of vaapisink.

https://bugzilla.gnome.org/show_bug.cgi?id=750095

gst/vaapi/gstvaapisink.c

index 26ea5bf..5c78a0b 100644 (file)
@@ -58,17 +58,19 @@ GST_DEBUG_CATEGORY_STATIC (gst_debug_vaapisink);
 /* *INDENT-OFF* */
 static const char gst_vaapisink_sink_caps_str[] =
     GST_VIDEO_CAPS_MAKE_WITH_FEATURES (
-        GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE
+        GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE,
+        "{ ENCODED, NV12, I420, YV12 }") ";"
 #if GST_CHECK_VERSION(1,3,1)
-        "," GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION
+    GST_VIDEO_CAPS_MAKE_WITH_FEATURES (
+        GST_CAPS_FEATURE_MEMORY_VAAPI_SURFACE ","
+            GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION,
+        "{ ENCODED, NV12, I420, YV12 }") ";"
 #endif
-        ,"{ ENCODED, NV12, I420, YV12 }") ";"
+    GST_VIDEO_CAPS_MAKE (GST_VIDEO_FORMATS_ALL) ";"
 #if GST_CHECK_VERSION(1,3,1)
     GST_VIDEO_CAPS_MAKE_WITH_FEATURES (
         GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION,
         GST_VIDEO_FORMATS_ALL);
-#else
-     GST_VIDEO_CAPS_MAKE (GST_VIDEO_FORMATS_ALL);
 #endif
 /* *INDENT-ON* */