This example uses an extended version of a KSDATAFORMAT_WAVEFORMATEX structure to describe the data format of a PCM multichannel stream.
DataFormat.FormatSize = sizeof(KSDATAFORMAT) + sizeof(WAVEFORMATEXTENSIBLE); DataFormat.Flags = 0; DataFormat.SampleSize = 0; DataFormat.Reserved = 0; DataFormat.MajorFormat = STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO); DataFormat.SubFormat = STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM); DataFormat.Specifier = STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX); Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE; Format.nChannels = 4; Format.nSamplesPerSec = 44100; Format.nAvgBytesPerSec = 352800; Format.nBlockAlign = 8; Format.wBitsPerSample = 16; Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE) - sizeof(WAVEFORMATEX); Format.wValidBitsPerSample = 16; Format.dwChannelMask = KSAUDIO_SPEAKER_SURROUND; Format.SubFormat = KSDATAFORMAT_SUBTYPE_PCM;