summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVíctor Manuel Jáquez Leal <victorx.jaquez@intel.com>2015-10-28 12:59:02 +0100
committerVíctor Manuel Jáquez Leal <victorx.jaquez@intel.com>2015-11-09 16:18:19 +0100
commitd69f747d0949bc87816bb74ac33135b618296c45 (patch)
treecad9ccb676952c6f495173211ea0d1f5fd98ce85
parentb2707c8eece0a57906b3225f3f8706d94d41831c (diff)
downloadgst-vaapi-d69f747d0949bc87816bb74ac33135b618296c45.tar.gz
plugins: don't create display at caps query
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
-rw-r--r--gst/vaapi/gstvaapidecode.c4
-rw-r--r--gst/vaapi/gstvaapisink.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/gst/vaapi/gstvaapidecode.c b/gst/vaapi/gstvaapidecode.c
index 7bec7b88..5fc2592b 100644
--- a/gst/vaapi/gstvaapidecode.c
+++ b/gst/vaapi/gstvaapidecode.c
@@ -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:
diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c
index 7ff84012..fd225242 100644
--- a/gst/vaapi/gstvaapisink.c
+++ b/gst/vaapi/gstvaapisink.c
@@ -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);