vaapidecodebin: try to get display from decoder
authorVíctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
Thu, 12 Nov 2015 11:47:01 +0000 (12:47 +0100)
committerVíctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
Mon, 16 Nov 2015 15:07:07 +0000 (16:07 +0100)
Rather than create a dummy display, if none has propagated as a context, we
should try to get the one from vaapidecode.

As the bin is already in READY state, the vaapidecode should be also in that
state. That means that the contexts have been negotiated, and it should have
already a display.

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

gst/vaapi/gstvaapidecodebin.c

index 635cdf3bbb15e75e564f53b00d1f7abe1bca15d4..e0858e39812c798fbd2e7e2b675fb9d79c47bc6b 100644 (file)
@@ -28,6 +28,7 @@
 #include "gstvaapipluginutil.h"
 #include "gstvaapidecodebin.h"
 #include "gstvaapivideocontext.h"
+#include "gstvaapipluginbase.h"
 
 #define GST_PLUGIN_NAME "vaapidecodebin"
 #define GST_PLUGIN_DESC "A Bin of VA-API elements: vaapidecode ! queue ! vaapipostproc"
@@ -197,8 +198,14 @@ ensure_vpp (GstVaapiDecodeBin * vaapidecbin)
   if (vaapidecbin->has_vpp != HAS_VPP_UNKNOWN)
     return TRUE;
 
-  GST_INFO_OBJECT (vaapidecbin, "Creating a dummy display to test for vpp");
-  display = gst_vaapi_create_test_display ();
+  display = GST_VAAPI_PLUGIN_BASE_DISPLAY (vaapidecbin->decoder);
+  if (display) {
+    GST_INFO_OBJECT (vaapidecbin, "Got display from vaapidecode");
+    gst_vaapi_display_ref (display);
+  } else {
+    GST_INFO_OBJECT (vaapidecbin, "Creating a dummy display to test for vpp");
+    display = gst_vaapi_create_test_display ();
+  }
   if (!display)
     return FALSE;