From 5e09f57deaceaf0ce8ae9a3211571c88457f53f6 Mon Sep 17 00:00:00 2001 From: Hyunjun Ko Date: Wed, 21 Dec 2016 17:50:41 +0900 Subject: [PATCH] vaapisink: ensures raw caps at start() Calls gst_vaapi_plugin_base_get_allowed_raw_caps() at start() to avoid race conditions at get_caps(), especially with multiple src elements. https://bugzilla.gnome.org/show_bug.cgi?id=776303 --- gst/vaapi/gstvaapisink.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c index 58e194a7e8..7c8caff647 100644 --- a/gst/vaapi/gstvaapisink.c +++ b/gst/vaapi/gstvaapisink.c @@ -1214,7 +1214,18 @@ gst_vaapisink_display_changed (GstVaapiPluginBase * plugin) static gboolean gst_vaapisink_start (GstBaseSink * base_sink) { - return gst_vaapisink_ensure_display (GST_VAAPISINK_CAST (base_sink)); + GstVaapiSink *const sink = GST_VAAPISINK_CAST (base_sink); + GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (base_sink); + + if (!gst_vaapisink_ensure_display (sink)) + return FALSE; + + /* Ensures possible raw caps earlier to avoid race conditions at + * get_caps() */ + if (!gst_vaapi_plugin_base_get_allowed_raw_caps (plugin)) + return FALSE; + + return TRUE; } static gboolean