mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-20 21:16:24 +00:00
msdk: allow user specify a drm device via an env variable
User may specify the required device via GST_MSDK_DRM_DEVICE Example: GST_MSDK_DRM_DEVICE=/dev/dri/card0 gst-launch-1.0 videotestsrc ! msdkh264enc ! fakesink Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1953>
This commit is contained in:
parent
e15be4cf0f
commit
54091d0290
2 changed files with 29 additions and 2 deletions
|
@ -34,6 +34,7 @@
|
|||
#ifndef _WIN32
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <xf86drm.h>
|
||||
#include <va/va_drm.h>
|
||||
#include <gudev/gudev.h>
|
||||
#endif
|
||||
|
@ -76,6 +77,31 @@ get_device_id (void)
|
|||
const gchar *devnode_path;
|
||||
const gchar *devnode_files[2] = { "renderD[0-9]*", "card[0-9]*" };
|
||||
int fd = -1, i;
|
||||
const gchar *user_choice = g_getenv ("GST_MSDK_DRM_DEVICE");
|
||||
|
||||
if (user_choice) {
|
||||
if (g_str_has_prefix (user_choice, "/dev/dri/"))
|
||||
fd = open (user_choice, O_RDWR | O_CLOEXEC);
|
||||
|
||||
if (fd >= 0) {
|
||||
drmVersionPtr drm_version = drmGetVersion (fd);
|
||||
|
||||
if (!drm_version || strncmp (drm_version->name, "i915", 4)) {
|
||||
GST_WARNING ("The specified device isn't an Intel device, "
|
||||
"use the default device instead");
|
||||
drmFreeVersion (drm_version);
|
||||
close (fd);
|
||||
fd = -1;
|
||||
} else {
|
||||
GST_DEBUG ("Opened the specified drm device %s", user_choice);
|
||||
drmFreeVersion (drm_version);
|
||||
return fd;
|
||||
}
|
||||
} else {
|
||||
GST_WARNING ("The specified device isn't a valid drm device, "
|
||||
"use the default device instead");
|
||||
}
|
||||
}
|
||||
|
||||
client = g_udev_client_new (NULL);
|
||||
if (!client)
|
||||
|
|
|
@ -124,8 +124,9 @@ else
|
|||
libva_dep = dependency('libva-drm', required: get_option('msdk'))
|
||||
libdl_dep = cc.find_library('dl', required: get_option('msdk'))
|
||||
libgudev_dep = dependency('gudev-1.0', required: get_option('msdk'))
|
||||
msdk_deps = declare_dependency(dependencies: [libva_dep, libdl_dep, libgudev_dep])
|
||||
msdk_deps_found = libva_dep.found() and libdl_dep.found() and libgudev_dep.found()
|
||||
libdrm_dep = dependency('libdrm', required: get_option('msdk'))
|
||||
msdk_deps = declare_dependency(dependencies: [libva_dep, libdl_dep, libgudev_dep, libdrm_dep])
|
||||
msdk_deps_found = libva_dep.found() and libdl_dep.found() and libgudev_dep.found() and libdrm_dep.found()
|
||||
endif
|
||||
|
||||
if msdk_deps_found
|
||||
|
|
Loading…
Reference in a new issue