diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2015-11-13 12:35:59 -0500 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2015-11-25 14:31:29 -0500 |
commit | 3cdc700e3e65feb0b78be2c5201c7d3f589cf72a (patch) | |
tree | 51b912efdbaf3e2ec4ffa8a1f78de737eb5c781c /sys/v4l2/gstv4l2.c | |
parent | dd4df554d5c2d4a61d09e7ec7ab5844d126474a9 (diff) |
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
Diffstat (limited to 'sys/v4l2/gstv4l2.c')
-rw-r--r-- | sys/v4l2/gstv4l2.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/v4l2/gstv4l2.c b/sys/v4l2/gstv4l2.c index 8333eab41..97d617b82 100644 --- a/sys/v4l2/gstv4l2.c +++ b/sys/v4l2/gstv4l2.c @@ -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 |