obsproject / design

Mockups and design tasks for OBS Studio
Creative Commons Zero v1.0 Universal
19 stars 3 forks source link

Alternative ways to match devices #21

Open GeorgesStavracas opened 1 year ago

GeorgesStavracas commented 1 year ago

This sparked from a discussion about how the V4L2 plugin matches capture devices (https://github.com/obsproject/obs-studio/pull/9246). Matching devices by the bus / port might be interesting, but we need to consider this approach holistically, both for other platforms, and also for other device types. It's unclear how the UI would look like, if it's a global vs per device type vs per source, etc.

TODO: list use cases

DarkDefender commented 1 year ago

I'll just list out the use cases for the other options than the "by device id" option.

By Bus Path

Here the device is mapped by looking at which bus adress it is connected via. This in practice means that you can map devices to specific USB port or even internal PCI-E slots.

Pros:

Cons:

By "Other" method

This is the current default on Linux and freeBSD. Even if this is not as useful for physical devices as the "By ID" or "By bus path" methods, there is still some cases where this is useful or needed. One of these is when using virtual v4l devices. These will not show up with the ID or Bus path method as they are nor real devices. For example if I create some virtual devices with https://github.com/umlaeute/v4l2loopback, they will not show up in any other mode than this one.

This is because the virtual devices only gets put in /sys/class/video4linux/ and /dev/ but not /dev/v4l/by-id/ and /dev/v4l/by-path/.

Pros:

Cons:

DarkDefender commented 1 year ago

Current issue with the UI

I think that the current pain point is that it is hard for a new user to realize what options are relevant as the current UI presents quite a few options at the same time with quite minimal amount of visual grouping: screenshot

I will suggest some potential solutions by looking at the UI from Blender. Note though that this is more as an example as we of course shouldn't copy this outright as we should come up with a solution that feels natural and is appropriate for the general OBS UI design language.

Radio Buttons

To break up the monotony of the drop down menu list. We could consider using radio buttons for the "Device Detection" setting. This would be at the top and also by it's different look perhaps signify that this is a more important option than then others: screenshot

Using more groups and make them collapse able

In Blender there are places where there are an overwhelming amount of options. There they usually use a lot grouping of settings that can be nested and collapse able: screenshot

Quick mock up

Collapsed view. This is what the user will see when the add create a brand new V4L source moc

Expanded view. If the user wants to get configure the more advanced options, they can expand the two extra sections: moc_collapsed