summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeungha Yang <seungha@centricular.com>2020-06-12 19:07:07 +0900
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>2020-06-16 10:49:02 +0000
commitd12c0c4c7b0026633ae3966492be2daf3f497151 (patch)
tree6a24a7b8f3f7eff90ed544ac72dfaf8134d7cd82
parentb5c8889d4f8a64b1cd22786b4228304c9c0f93d4 (diff)
downloadgstreamer-plugins-bad-d12c0c4c7b0026633ae3966492be2daf3f497151.tar.gz
d3d11utils: Add a helper method for checking Xbox device
Required for some cases to work around device specific issue Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1339>
-rw-r--r--sys/d3d11/gstd3d11utils.c21
-rw-r--r--sys/d3d11/gstd3d11utils.h2
2 files changed, 23 insertions, 0 deletions
diff --git a/sys/d3d11/gstd3d11utils.c b/sys/d3d11/gstd3d11utils.c
index 32a701828..7d33048d1 100644
--- a/sys/d3d11/gstd3d11utils.c
+++ b/sys/d3d11/gstd3d11utils.c
@@ -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)
{
diff --git a/sys/d3d11/gstd3d11utils.h b/sys/d3d11/gstd3d11utils.h
index eb02945a8..ab3618f3c 100644
--- a/sys/d3d11/gstd3d11utils.h
+++ b/sys/d3d11/gstd3d11utils.h
@@ -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,