Date: Monday, November 27, 2017 @ 11:38:19 Author: heftig Revision: 311002
Add missing patch Added: gst-plugins-good/trunk/0001-v4l2deviceprovider-Ignore-touch-sensing-devices.patch ------------------------------------------------------------+ 0001-v4l2deviceprovider-Ignore-touch-sensing-devices.patch | 70 +++++++++++ 1 file changed, 70 insertions(+) Added: 0001-v4l2deviceprovider-Ignore-touch-sensing-devices.patch =================================================================== --- 0001-v4l2deviceprovider-Ignore-touch-sensing-devices.patch (rev 0) +++ 0001-v4l2deviceprovider-Ignore-touch-sensing-devices.patch 2017-11-27 11:38:19 UTC (rev 311002) @@ -0,0 +1,70 @@ +From b7e908d32e7cd051d77b8b95174d48f07d2a737d Mon Sep 17 00:00:00 2001 +Message-Id: <b7e908d32e7cd051d77b8b95174d48f07d2a737d.1508414658.git.jan.steff...@gmail.com> +From: "Jan Alexander Steffens (heftig)" <jan.steff...@gmail.com> +Date: Thu, 19 Oct 2017 14:02:37 +0200 +Subject: [PATCH] v4l2deviceprovider: Ignore touch sensing devices + +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 ! ... +--- + sys/v4l2/gstv4l2deviceprovider.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/sys/v4l2/gstv4l2deviceprovider.c b/sys/v4l2/gstv4l2deviceprovider.c +index 4b003e721692875f..549979e22845de0b 100644 +--- a/sys/v4l2/gstv4l2deviceprovider.c ++++ b/sys/v4l2/gstv4l2deviceprovider.c +@@ -37,6 +37,11 @@ + #include <gudev/gudev.h> + #endif + ++/* Only available since Linux 4.8 */ ++#ifndef V4L2_CAP_TOUCH ++#define V4L2_CAP_TOUCH 0x10000000 ++#endif ++ + static GstV4l2Device *gst_v4l2_device_new (const gchar * device_path, + const gchar * device_name, GstCaps * caps, GstV4l2DeviceType type, + GstStructure * props); +@@ -136,8 +141,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)) { +-- +2.14.2 +