Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
coderabbitai bot opened this issue Dec 10, 2024 · 0 comments · May be fixed by #17547
Open

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

coderabbitai bot opened this issue Dec 10, 2024 · 0 comments · May be fixed by #17547
Assignees
Labels
api-breaking-change component/audio NVDA's audio output (nvWave, issues with usb audio etc). p2 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority release/blocking this issue blocks the milestone release triaged Has been triaged, issue is waiting for implementation.
Milestone

Comments

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 10, 2024

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.

@SaschaCowley SaschaCowley removed their assignment Dec 10, 2024
@SaschaCowley SaschaCowley added p2 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority component/audio NVDA's audio output (nvWave, issues with usb audio etc). api-breaking-change triaged Has been triaged, issue is waiting for implementation. labels Dec 16, 2024
@SaschaCowley SaschaCowley self-assigned this Dec 16, 2024
@SaschaCowley SaschaCowley added the release/blocking this issue blocks the milestone release label Dec 16, 2024
@SaschaCowley SaschaCowley added this to the 2025.1 milestone Dec 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api-breaking-change component/audio NVDA's audio output (nvWave, issues with usb audio etc). p2 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority release/blocking this issue blocks the milestone release triaged Has been triaged, issue is waiting for implementation.
Projects
None yet
1 participant