plugins: don't create display at caps query
authorVíctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
Wed, 28 Oct 2015 11:59:02 +0000 (12:59 +0100)
committerVíctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
Mon, 9 Nov 2015 15:18:19 +0000 (16:18 +0100)
Caps query can happen before the element has a bus. The display creation should
be should occur on the context negotiation, when the bus is already configured.
Then at caps query no display should be created.

Instead of force the display creation, we graciously fail the allowed_caps()
creation.

This change only applies for vaapidecode and vaapisink. The vaapipostroc, as a
basetransform descendant, seems to be not affected by this, nor the encoders.

Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=757598

gst/vaapi/gstvaapidecode.c
gst/vaapi/gstvaapisink.c

index 7bec7b8869bfba71b5e7f959e372610d64893372..5fc2592b85ddd71fa7b4917d00a4af1bae555130 100644 (file)
@@ -957,7 +957,7 @@ gst_vaapidecode_ensure_allowed_caps (GstVaapiDecode * decode)
   if (decode->allowed_caps)
     return TRUE;
 
-  if (!gst_vaapidecode_ensure_display (decode))
+  if (!GST_VAAPI_PLUGIN_BASE_DISPLAY (decode))
     goto error_no_display;
 
   profiles =
@@ -1001,7 +1001,7 @@ gst_vaapidecode_ensure_allowed_caps (GstVaapiDecode * decode)
   /* ERRORS */
 error_no_display:
   {
-    GST_ERROR ("failed to retrieve VA display");
+    GST_INFO_OBJECT (decode, "no VA display shared yet");
     return FALSE;
   }
 error_no_profiles:
index 7ff8401241c4701b25c6911b5c58f474ef256eb4..fd22524227ae5cd4617c4e6795b99f3ed6c4f2f8 100644 (file)
@@ -1206,7 +1206,7 @@ gst_vaapisink_get_caps_impl (GstBaseSink * base_sink)
   if (!out_caps)
     return NULL;
 
-  if (gst_vaapisink_ensure_display (sink)) {
+  if (GST_VAAPI_PLUGIN_BASE_DISPLAY (sink)) {
     raw_caps = gst_vaapi_plugin_base_get_allowed_raw_caps (GST_VAAPI_PLUGIN_BASE (sink));
     if (raw_caps) {
       out_caps = gst_caps_make_writable (out_caps);