All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Ricardo Ribalda <ribalda@chromium.org>,
	Yunke Cao <yunkec@chromium.org>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	linux-media@vger.kernel.org,
	Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 3/3] media: uvcvideo: Add a unique suffix to camera names
Date: Thu, 22 Dec 2022 00:24:44 +0200	[thread overview]
Message-ID: <Y6OHrDw8p4qPWBqz@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20221221220248.12395efb@sal.lan>

Hi Mauro,

On Wed, Dec 21, 2022 at 10:02:48PM +0000, Mauro Carvalho Chehab wrote:
> Em Tue, 6 Dec 2022 00:02:22 +0100 Ricardo Ribalda escreveu:
> > On Mon, 5 Dec 2022 at 23:16, Laurent Pinchart wrote:
> > > On Fri, Dec 02, 2022 at 06:08:19PM +0100, Ricardo Ribalda wrote:  
> > > > Some cameras have multiple data inputs (i.e. IR sensor and RGB sensor),
> > > > append a unique number to the device name.
> > > >
> > > > Fixes v4l2-compliance:
> > > >     Media Controller ioctls:
> > > >          fail: v4l2-test-media.cpp(205): v2_entity_names_set.find(key) != v2_entity_names_set.end()
> > > >        test MEDIA_IOC_G_TOPOLOGY: FAIL
> > > >          fail: v4l2-test-media.cpp(394): num_data_links != num_links
> > > >        test MEDIA_IOC_ENUM_ENTITIES/LINKS: FAIL
> > > >
> > > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > > > ---
> > > >  drivers/media/usb/uvc/uvc_driver.c | 3 ++-
> > > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > > > index 215fb483efb0..f4032ebb3689 100644
> > > > --- a/drivers/media/usb/uvc/uvc_driver.c
> > > > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > > > @@ -1963,7 +1963,8 @@ int uvc_register_video_device(struct uvc_device *dev,
> > > >               break;
> > > >       }
> > > >
> > > > -     strscpy(vdev->name, dev->name, sizeof(vdev->name));
> > > > +     snprintf(vdev->name, sizeof(vdev->name), "%s %u", dev->name,
> > > > +              stream->header.bTerminalLink);  
> > >
> > > This won't be perfect as the string is not guaranteed to fit in
> > > vdev->name, but I suppose it will help as a quick fix for some devices.
> > > How about the other devices ? Won't they still exhibit the above
> > > v4l2-compliance failure ? Isn't that something that will still affect
> > > Chrome OS devices ?  
> > 
> > We could place the id first... but that will look bad: Eg:
> > 
> > 1- My favorite camera
> > 
> > Another option is to remove the last chars to fit the id. Eg:
> > 
> > My favorite came-1
> > 
> > If you prefer any of those options or have a better idea I can implement that.
> > 
> > > The change should not cause any regression as big as in patch 1/3.
> > > However, unless I'm mistaken users will notice a device name change,
> > > especially when selecting a device in their web browser. Could that be a
> > > problem ?  
> > 
> > I think the only side effect is that the first time that the kernel
> > changes the naming convention, if there are more than one camera on
> > the system, the video conference might pick a different camera.
> > The good news is that the user will be presented with cameras with
> > different names. Now some cameras show very confusing names:
> > 
> > ribalda@alco:~/work/linux$ for a in /dev/video* ; do yavta -l $a| grep
> > "Dell Webcam"; done
> > Device `Dell Webcam WB7022' on `usb-0000:2d:00.0-1.2.3.1' (driver
> > 'uvcvideo') supports video, capture, without mplanes.
> > Device `Dell Webcam WB7022' on `usb-0000:2d:00.0-1.2.3.1' (driver
> > 'uvcvideo') supports meta-data, capture, without mplanes.
> > Device `Dell Webcam WB7022' on `usb-0000:2d:00.0-1.2.3.1' (driver
> > 'uvcvideo') supports video, capture, without mplanes.
> > Device `Dell Webcam WB7022' on `usb-0000:2d:00.0-1.2.3.1' (driver
> > 'uvcvideo') supports meta-data, capture, without mplanes.
> 
> That is bad, as some apps like camorama actually store the user
> preferences (last used resolution and fps), preserving them the next
> time the camera with the same name is used.
> 
> In the specific case of camorama, it uses the by-id filename, which is
> derived from the name, as stored at:
> 
> 	$ ls -la /dev/v4l/by-id/usb-Quanta_HD_Camera_0001-video-index*
> 	lrwxrwxrwx 1 root root 12 dez 21 09:59 /dev/v4l/by-id/usb-Quanta_HD_Camera_0001-video-index0 -> ../../video0
> 	lrwxrwxrwx 1 root root 12 dez 21 09:59 /dev/v4l/by-id/usb-Quanta_HD_Camera_0001-video-index1 -> ../../video1
> 
> With this change, not only the camera name will become bigger (and may
> end losing the index0/index1 data), but it will also lost the stored 
> preferences on apps like camorama, causing regressions.
> 
> It sounds a lot easier to teach udev to change the name on an unique
> way, on machines where you need it.

It's not a udev issue, it's an API compliance problem, entity names in a
media controller graph must be unique, and they are not.

Losing the stored preference is possibly inconvenient in some cases, but
I don't think it's a real blocker.

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2022-12-21 22:26 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-02 17:08 [PATCH v4 0/3] Add Meta: to Metadata devices Ricardo Ribalda
2022-12-02 17:08 ` [PATCH v4 1/3] media: v4l2-dev.c: Add Meta: to the name of metadata devices Ricardo Ribalda
2022-12-05  5:02   ` Yunke Cao
2022-12-05 22:03   ` Laurent Pinchart
2022-12-21 22:16   ` Mauro Carvalho Chehab
2022-12-21 22:21     ` Laurent Pinchart
2022-12-02 17:08 ` [PATCH v4 2/3] media: Documentation/driver-api: Document device name Ricardo Ribalda
2022-12-05  5:06   ` Yunke Cao
2022-12-02 17:08 ` [PATCH v4 3/3] media: uvcvideo: Add a unique suffix to camera names Ricardo Ribalda
2022-12-05  5:04   ` Yunke Cao
2022-12-05 22:15   ` Laurent Pinchart
2022-12-05 23:02     ` Ricardo Ribalda
2022-12-20 23:00       ` Ricardo Ribalda
2022-12-21 10:55         ` Laurent Pinchart
2022-12-21 10:57           ` Ricardo Ribalda
2022-12-21 11:23             ` Laurent Pinchart
2022-12-21 20:21               ` Ricardo Ribalda
2022-12-21 22:27                 ` Laurent Pinchart
2022-12-21 22:02       ` Mauro Carvalho Chehab
2022-12-21 22:24         ` Laurent Pinchart [this message]
2022-12-21 22:54           ` Mauro Carvalho Chehab
2022-12-21 23:00             ` Laurent Pinchart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y6OHrDw8p4qPWBqz@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab+huawei@kernel.org \
    --cc=mchehab@kernel.org \
    --cc=ribalda@chromium.org \
    --cc=senozhatsky@chromium.org \
    --cc=yunkec@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.