Skip to content

Switch to using endpoint IDs for identifying selected output device in user configuration #17497

@coderabbitai

Description

@coderabbitai

Is your feature request related to a problem? Please describe.

Currently, users' selection of which audio output device to use is stored in the config by saving the device's friendly name to their config, then enumerating all output devices on the system, and matching against the first device with the same friendly name. This presents a number of issues:

  • Friendly names are not unique.
  • Friendly names may change if the system language changes.
  • Friendly names are not designed for programmatic identification of of devices, so may change at any point.

Describe the solution you'd like

After winmm support is removed (#17496 ), switch to using endpoint IDs for identification. This also has a number of drawbacks:

  • Endpoint IDs are not human-readable.
  • Endpoint IDs may change if the user upgrades device drivers, or uninstalls and reinstalls the drivers for a device.

Describe alternatives you've considered

Keep on identifying devices by their friendly names.

Additional context

This will require rewriting some of NVDAHelper, as our C++ WASAPI code assumes that what we give it to identify devices is the device's friendly name. Would also require changes to the settings GUI code, and nvwave.

Metadata

Metadata

Assignees

Labels

api-breaking-changecomponent/audioNVDA's audio output (nvWave, issues with usb audio etc).p2https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priorityrelease/blockingthis issue blocks the milestone releasetriagedHas been triaged, issue is waiting for implementation.

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions