On Sat, 4 Jul 2020 17:03:07 +0200
Landry Breuil <lan...@openbsd.org> wrote:

> Hi,
> 
> since firefox 78, video(4) devices arent detected anymore. Upstream
> added code in https://bugzilla.mozilla.org/show_bug.cgi?id=1637319 to
> check for the V4L2_CAP_VIDEO_CAPTURE capacity, and the code added in
> https://hg.mozilla.org/integration/autoland/rev/33facf191f23 checks
> for that in the 'device_caps' field of v4l2_capability struct.
> 
> problem is, we only set the 'capabilities' field in uvideo(4). Looking
> at the linux doc in
> https://www.kernel.org/doc/html/v4.14/media/uapi/v4l/vidioc-querycap.html#description,
> both fields are used to distinguish multiple devices created by the
> same driver. We dont have such a feature, but still, 'device_caps'
> should/could be filled for compatibility ? The utvfu(4) driver
> apparently does it this way:
> https://github.com/openbsd/src/blob/master/sys/dev/usb/utvfu.c#L490
> 
> so let's just do the same in uvideo(4). With this diff, i can use my
> webcam again from firefox 78. No apparent difference in lsusb -vv.
> 
> ok ?

ok mglocker

> Landry
> 
> Index: usb/uvideo.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/usb/uvideo.c,v
> retrieving revision 1.207
> diff -u -r1.207 uvideo.c
> --- usb/uvideo.c      30 May 2020 09:01:04 -0000      1.207
> +++ usb/uvideo.c      4 Jul 2020 15:00:14 -0000
> @@ -2942,9 +2942,10 @@
>       strlcpy(caps->bus_info, "usb", sizeof(caps->bus_info));
>  
>       caps->version = 1;
> -     caps->capabilities = V4L2_CAP_VIDEO_CAPTURE
> +     caps->device_caps = V4L2_CAP_VIDEO_CAPTURE
>           | V4L2_CAP_STREAMING
>           | V4L2_CAP_READWRITE;
> +     caps->capabilities = caps->device_caps |
> V4L2_CAP_DEVICE_CAPS; 
>       return (0);
>  }
> 

Reply via email to