mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
v4l2: Track /dev/video* to triggered required probe
If something in /dev/video* get added, removed or replaced, we need to probe the devices again in order to ensure the dynamic devices are up to date. https://bugzilla.gnome.org/show_bug.cgi?id=758085
This commit is contained in:
parent
dd4df554d5
commit
3cdc700e3e
2 changed files with 26 additions and 2 deletions
11
configure.ac
11
configure.ac
|
@ -555,6 +555,17 @@ if test x$HAVE_GST_V4L2 = xyes; then
|
|||
fi
|
||||
fi
|
||||
|
||||
dnl Allow enabling v4l2 device probing
|
||||
AC_ARG_ENABLE(
|
||||
v4l2-probe,
|
||||
AC_HELP_STRING(
|
||||
[--enable-v4l2-probe],
|
||||
[enable V4L2 plugin to probe devices @<:@default=no@:>@]))
|
||||
if test "x$enable_v4l2_probe" = xyes; then
|
||||
AC_DEFINE(GST_V4L2_ENABLE_PROBE, 1,
|
||||
[Define if Video4Linux probe shall be run at plugin load])
|
||||
fi
|
||||
|
||||
dnl Check for X11
|
||||
translit(dnm, m, l) AM_CONDITIONAL(USE_X, true)
|
||||
AG_GST_CHECK_FEATURE(X, [X libraries and plugins],
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
GST_DEBUG_CATEGORY (v4l2_debug);
|
||||
#define GST_CAT_DEFAULT v4l2_debug
|
||||
|
||||
#ifdef GST_V4L2_ENABLE_PROBE
|
||||
/* This is a minimalist probe, for speed, we only enumerate formats */
|
||||
static GstCaps *
|
||||
gst_v4l2_probe_template_caps (const gchar * device, gint video_fd,
|
||||
|
@ -192,12 +193,21 @@ gst_v4l2_probe_and_register (GstPlugin * plugin)
|
|||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
static gboolean
|
||||
plugin_init (GstPlugin * plugin)
|
||||
{
|
||||
const gchar *paths[] = { "/dev", "/dev/v4l2", NULL };
|
||||
const gchar *names[] = { "video", NULL };
|
||||
|
||||
GST_DEBUG_CATEGORY_INIT (v4l2_debug, "v4l2", 0, "V4L2 API calls");
|
||||
|
||||
/* Add some depedency, so the dynamic features get updated upon changes in
|
||||
* /dev/video* */
|
||||
gst_plugin_add_dependency (plugin,
|
||||
NULL, paths, names, GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_PREFIX);
|
||||
|
||||
if (!gst_element_register (plugin, "v4l2src", GST_RANK_PRIMARY,
|
||||
GST_TYPE_V4L2SRC) ||
|
||||
!gst_element_register (plugin, "v4l2sink", GST_RANK_NONE,
|
||||
|
@ -205,9 +215,12 @@ plugin_init (GstPlugin * plugin)
|
|||
!gst_element_register (plugin, "v4l2radio", GST_RANK_NONE,
|
||||
GST_TYPE_V4L2RADIO) ||
|
||||
!gst_device_provider_register (plugin, "v4l2deviceprovider",
|
||||
GST_RANK_PRIMARY, GST_TYPE_V4L2_DEVICE_PROVIDER) ||
|
||||
GST_RANK_PRIMARY, GST_TYPE_V4L2_DEVICE_PROVIDER)
|
||||
/* etc. */
|
||||
!gst_v4l2_probe_and_register (plugin))
|
||||
#ifdef GST_V4L2_ENABLE_PROBE
|
||||
|| !gst_v4l2_probe_and_register (plugin)
|
||||
#endif
|
||||
)
|
||||
return FALSE;
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
|
|
Loading…
Reference in a new issue