https://bugs.winehq.org/show_bug.cgi?id=50502
Bug ID: 50502 Summary: waveInOpen and waveOutOpen do not support the Default Communication Device Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: winmm&mci Assignee: wine-bugs@winehq.org Reporter: hans@betafreak.com Distribution: ---
Beginning with Windows 7, the waveOutOpen and waveInOpen functions allow you to pass special flags in place of the device ID in order to access the Default Communication Device - users can set this device separately in the Control Panel to use it for things like phone calls. Several Windows games use this device for voice chat and don't offer other options.
Specifically, in both functions, if the WAVE_MAPPER flag is provided instead of uDeviceID, and the WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE flag is added to fdwOpen, the Default Communication Device is opened. The Default Communication Device is itself supplied in the OnDefaultDeviceChanged callback in IMMNotificationClient.
MSDN references for both: https://docs.microsoft.com/en-us/windows/win32/api/mmeapi/nf-mmeapi-waveouto..., https://docs.microsoft.com/en-us/windows/win32/api/mmeapi/nf-mmeapi-waveinop..., https://docs.microsoft.com/en-us/windows/win32/api/mmdeviceapi/nf-mmdeviceap...
The current Wine code, as of 6.0, does not make any reference to WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE at all, and its current IMMNotificationClient notification ignores all roles except for eConsole. The ultimate effect of this is that Windows programs that use this API to open the communications device believe that there isn't one and thus fail to make any attached mic available.