Hi, we recently discovered that some WASAPI devices lie on API calls.
for example, the device named “Speakers/Headphones (Realtek® Audio)” cannot work properly with float audio sample format (make WAVEFORMATEXTENSIBLE::SubFormat = KSDATAFORMAT_SUBTYPE_IEEE_FLOAT), if you initialize this device with KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, the device will become silence when you push some normal audio buffers to it. but if you call IAudioClient::IsFormatSupported with KSDATAFORMAT_SUBTYPE_IEEE_FLOAT, it will return S_OK…
And if you change KSDATAFORMAT_SUBTYPE_IEEE_FLOAT to KSDATAFORMAT_SUBTYPE_PCM, everythings fine.
I know this is really the driver’s bug, but I think maybe JUCE could do something (like making a device blacklist etc.) to workaround for those kind of problems.
What do you think of this?
B.T.W. we had made a temporary workaround for this kind of problem, that is to force use KSDATAFORMAT_SUBTYPE_PCM for an array of blacklisted devices, but we really hope for an official solution.