I'm learning about Windows Core Audio APIs. Using this Rendering a Stream example, I'm finding that IAudioClient::GetMixFormat returns an ambiguous WAVEFORMATEXTENSIBLE that looks like this:
Format
wFormatTag = WAVE_FORMAT_EXTENSIBLE (65534)
nChannels = 2
nSamplesPerSec = 48000
nAvgBytesPerSec = 384000
nBlockAlign = 8
wBitsPerSample = 32
cbSize = 22
Samples // this is a union
wValidBitsPerSample = 32
wSamplesPerBlock = 32
wReserved = 32
Since Format.cbSize
is 22, this is the entire structure; there is no SubFormat
GUID to provide more information about the samples. That seems weird because the format tag is WAVE_FORMAT_EXTENSIBLE
, which--I thought--means that you have to rely on the Subformat
GUID to determine the actual format.
I can see that there are two channels of 32-bit samples. How can I determine whether those samples are integers or floating point values?
[The core-audio tag is apparently for an Apple API. Is there a different tag for Windows Core Audio?]