diff --git a/subprojects/gst-plugins-bad/sys/va/gstvadevice.c b/subprojects/gst-plugins-bad/sys/va/gstvadevice.c index 1faa61fa8f..33ab55ae73 100644 --- a/subprojects/gst-plugins-bad/sys/va/gstvadevice.c +++ b/subprojects/gst-plugins-bad/sys/va/gstvadevice.c @@ -24,7 +24,9 @@ #include "gstvadevice.h" +#if HAVE_GUDEV #include +#endif #define GST_CAT_DEFAULT gstva_debug GST_DEBUG_CATEGORY_EXTERN (gstva_debug); @@ -62,6 +64,7 @@ compare_device_path (gconstpointer a, gconstpointer b, gpointer user_data) return strcmp (pa->render_device_path, pb->render_device_path); } +#if HAVE_GUDEV GList * gst_va_device_find_devices (void) { @@ -96,6 +99,31 @@ gst_va_device_find_devices (void) return devices.head; } +#else +GList * +gst_va_device_find_devices (void) +{ + GstVaDisplay *dpy; + GQueue devices = G_QUEUE_INIT; + gchar path[64]; + guint i; + + for (i = 0; i < 8; i++) { + g_snprintf (path, sizeof (path), "/dev/dri/renderD%d", 128 + i); + if (!g_file_test (path, G_FILE_TEST_EXISTS)) + continue; + + if (!(dpy = gst_va_display_drm_new_from_path (path))) + continue; + + GST_INFO ("Found VA-API device: %s", path); + g_queue_push_head (&devices, gst_va_device_new (dpy, path)); + } + + g_queue_sort (&devices, compare_device_path, NULL); + return devices.head; +} +#endif void gst_va_device_list_free (GList * devices) diff --git a/subprojects/gst-plugins-bad/sys/va/meson.build b/subprojects/gst-plugins-bad/sys/va/meson.build index 4d33fad477..6f47c5a6d6 100644 --- a/subprojects/gst-plugins-bad/sys/va/meson.build +++ b/subprojects/gst-plugins-bad/sys/va/meson.build @@ -26,7 +26,7 @@ if va_option.disabled() or host_system != 'linux' subdir_done() endif -libgudev_dep = dependency('gudev-1.0', required: va_option) +libgudev_dep = dependency('gudev-1.0', required: false) if not gstva_dep.found() or not libgudev_dep.found() if va_option.enabled() @@ -39,6 +39,7 @@ if libva_dep.version().version_compare('>= 1.8') va_sources += 'gstvaav1dec.c' endif +cdata.set10('HAVE_GUDEV', libgudev_dep.found()) driverdir = libva_dep.get_variable(pkgconfig: 'driverdir', internal: 'driverdir', default_value: '') if driverdir == ''