diff options
author | Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> | 2017-10-19 14:02:37 +0200 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2017-11-06 19:34:22 -0500 |
commit | 7e4bc6d418bd6680232e26103d7d3f8efaab688a (patch) | |
tree | 5374c85a81b9cbffb4ec852bdf6aae5806cc1e34 /sys | |
parent | 593615de46a98165ff34e74bb2559eeecec61fec (diff) |
v4l2deviceprovider: Ignore touch sensing devices
With GST_V4L2_USE_LIBV4L2=1, my laptop's touchpad shows up as a video
source device in gst-device-monitor, but attempting to stream from it
fails because the device doesn't actually support any video formats.
name : Synaptics RMI4 Touch Sensor
class : Video/Source
caps : video/x-raw, format=(string)I420, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)0, height=(int)0, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)YV12, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)0, height=(int)0, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)BGR, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)0, height=(int)0, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)RGB, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)0, height=(int)0, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1;
properties:
udev-probed = true
device.bus_path = /sys/devices/rmi4-00/rmi4-00.fn54/video4linux/v4l-touch0
sysfs.path = /sys/devices/rmi4-00/rmi4-00.fn54/video4linux/v4l-touch0
device.subsystem = video4linux
device.product.name = "Synaptics\ RMI4\ Touch\ Sensor"
device.capabilities = :capture:
device.api = v4l2
device.path = /dev/v4l-touch0
v4l2.device.driver = rmi4_f54
v4l2.device.card = "Synaptics\ RMI4\ Touch\ Sensor"
v4l2.device.bus_info = rmi4:rmi4-00.fn54
v4l2.device.version = 265480 (0x00040d08)
v4l2.device.capabilities = 2501902337 (0x95200001)
v4l2.device.device_caps = 354418689 (0x15200001)
gst-launch-1.0 v4l2src device=/dev/v4l-touch0 ! ...
v4l2-ctl -d /dev/v4l-touch0 --list-formats reports:
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'TD16'
Name : 16-bit signed deltas
Index : 1
Type : Video Capture
Pixel Format: 'TD08'
Name : 8-bit signed deltas
Index : 2
Type : Video Capture
Pixel Format: 'TU16'
Name : 16-bit unsigned touch data
https://bugzilla.gnome.org/show_bug.cgi?id=789197
Diffstat (limited to 'sys')
-rw-r--r-- | sys/v4l2/gstv4l2deviceprovider.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/v4l2/gstv4l2deviceprovider.c b/sys/v4l2/gstv4l2deviceprovider.c index 4b003e721..0f050abd9 100644 --- a/sys/v4l2/gstv4l2deviceprovider.c +++ b/sys/v4l2/gstv4l2deviceprovider.c @@ -136,8 +136,13 @@ gst_v4l2_device_provider_probe_device (GstV4l2DeviceProvider * provider, v4l2obj->vcap.device_caps, NULL); if (v4l2obj->device_caps & - (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_CAPTURE_MPLANE)) + (V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_CAPTURE_MPLANE)) { + /* We ignore touch sensing devices; those are't really video */ + if (v4l2obj->device_caps & V4L2_CAP_TOUCH) + goto close; + type = GST_V4L2_DEVICE_TYPE_SOURCE; + } if (v4l2obj->device_caps & (V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_OUTPUT_MPLANE)) { |