[wdmaudiodev] Re: Msvad pcmex, audio channel mask

  • From: "Bielik, Robert" <Robert.Bielik@xxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Mon, 4 Feb 2013 07:38:56 +0000

Hi Kim,

AFAIK, you cannot know that since the Audio Server in Windows does the mixing 
of the source material to fit your device setup. So what you're seeing is 
already down(/up?)mixed.

In Vista and later OS, the device format is controlled by the user (in control 
panel), so you cannot expect a stereo stream to open your device in 2 channels, 
5.1 -> 6ch, and so on. The device will
only be opened in the format chosen by the user, no matter what format the 
source material is in.

Previously (in XP), the device was queried for the most appropriate format to 
match the source material, but that is no longer the case.


From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Kim Therkelsen
Sent: den 3 februari 2013 16:10
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Msvad pcmex, audio channel mask


I have made an implementation based on the msvad pcmex example that downmixes 
from 1-8 audio channels to 2 channels.

In pcmex.h MIN_CHANNELS is set to 1 and MAX_CHANNELS_PCM to 8. After installing 
the driver on Win7, I have set the loudspeaker setup to 7.1. Now when I 
playback some stereo, 5.1 or 7.1 audio material the driver always receives 8 
audio channels in CMiniportWaveCyclicStreamMSVAD::Init (pWfx->nChannels=8), and 
the channel mask received in CMiniportWaveCyclic::ValidateFormat
is always 0x63f (the standard 7.1 setup). The behaviour I need is stereo->2 
channels, 5.1->6 channels, and 7.1->8 channels. Actually I need to know the 
original format (the channel mask) of the audio material inside the driver so I 
can perform a proper downmix.
How do I acquire the needed information about the audio material?

Best regards,

Other related posts: