d3d11utils: Add a helper method for checking Xbox device
authorSeungha Yang <seungha@centricular.com>
Fri, 12 Jun 2020 10:07:07 +0000 (19:07 +0900)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Tue, 16 Jun 2020 10:49:02 +0000 (10:49 +0000)
Required for some cases to work around device specific issue

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1339>

sys/d3d11/gstd3d11utils.c
sys/d3d11/gstd3d11utils.h

index 32a7018..7d33048 100644 (file)
@@ -342,6 +342,27 @@ gst_d3d11_is_windows_8_or_greater (void)
   return ret;
 }
 
+gboolean
+gst_d3d11_is_xbox_device (GstD3D11Device * device)
+{
+  guint device_id = 0;
+  guint vendor_id = 0;
+  gchar *desc = NULL;
+  gboolean ret = FALSE;
+
+  g_return_val_if_fail (GST_IS_D3D11_DEVICE (device), FALSE);
+
+  g_object_get (device, "device-id", &device_id, "vendor-id", &vendor_id,
+      "description", &desc, NULL);
+
+  if (device_id == 0 && vendor_id == 0 && desc && g_strrstr (desc, "SraKmd"))
+    ret = TRUE;
+
+  g_free (desc);
+
+  return ret;
+}
+
 static gchar *
 gst_d3d11_hres_to_string (HRESULT hr)
 {
index eb02945..ab3618f 100644 (file)
@@ -42,6 +42,8 @@ gboolean        gst_d3d11_ensure_element_data       (GstElement * element,
 
 gboolean        gst_d3d11_is_windows_8_or_greater   (void);
 
+gboolean        gst_d3d11_is_xbox_device            (GstD3D11Device * device);
+
 gboolean       _gst_d3d11_result                    (HRESULT hr,
                                                      GstD3D11Device * device,
                                                      GstDebugCategory * cat,