[wdmaudiodev] Re: USB Audio/WASAPI channel limits?

  • From: Matthew van Eerde <Matthew.van.Eerde@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Thu, 13 Feb 2014 17:45:01 +0000

--_004_29fd5b6aa166408ebc9f23ea1a603408BLUPR03MB033namprd03pro_
Content-Type: multipart/alternative; 
        boundary="_000_29fd5b6aa166408ebc9f23ea1a603408BLUPR03MB033namprd03pro_"

--_000_29fd5b6aa166408ebc9f23ea1a603408BLUPR03MB033namprd03pro_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

> The WASAPI app is querying the property store with PKEY_AudioEngine_Devic=
eFormat to check for the 'native' format. This entry appears to not be crea=
ted until (at least) the device is queried using the Sound applet >> Advanc=
ed Properties tab.

An app can force this property into existence by calling IAudioClient::GetM=
ixFormat().

From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@freelists=
.org] On Behalf Of Jerry Evans
Sent: Thursday, February 13, 2014 2:03 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: USB Audio/WASAPI channel limits?

Hello Matthew

Update: Using an absolutely minimal exclusive WASAPI capture app on W7x64 I=
 am getting 48 channels of 48K/16bit audio. Which is great. The recorded au=
dio is a bit perfect pattern of the 16bit samples originating in the device=
 firmware.

For anyone else who may visit here:

The firmware channel mask is set to 0, as is the mask in the WAVEFORMATEXTE=
NSIBLE used to query the supported formats.
The WASAPI app is querying the property store with PKEY_AudioEngine_DeviceF=
ormat to check for the 'native' format. This entry appears to not be create=
d until (at least) the device is queried using the Sound
applet >> Advanced Properties tab.

Many thanks for the help.

Now. What about USB Audio 2 class support?

Cheers!

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@freelists.=
org> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eer=
de
Sent: 07 February 2014 21:48
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: USB Audio/WASAPI channel limits?

I would expect an app to always be able to use 0, whether the hardware is 0=
 or not.

I would expect an app to always be able to use the hardware value, whether =
it was 0 or not.

I would not expect an app to ever be able to use a non-zero value which doe=
s not match the hardware.

If the number of channels is more than... oh, say, 8... then I would expect=
 the value to always be 0.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@freelists.=
org> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jerry Evans
Sent: Friday, February 7, 2014 1:38 PM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: USB Audio/WASAPI channel limits?

Matthew, indeed. Thanks.

I will try this next roll. Is your expectation that masks must match?

The 1.0 spec we get "If none of the bits in wChannelConfigare set, then all=
 channels have non-predefined spatial positions." (3.7.2.3). We can source =
more than 16 bits worth of channels so I cannot see this field can used use=
d in any meaningful way (?)


From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@freelists.=
org> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eer=
de
Sent: 07 February 2014 21:07
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: USB Audio/WASAPI channel limits?

It's probably possible to set a breakpoint in IAudioClient::IsFormatSupport=
ed, but let's not go there yet.

If you set the channel mask to 0x60f in firmware, I would expect both 0x0 a=
nd 0x60f to work in the WAVEFORMATEXTENSIBLE. Let me know if that's not the=
 case.

On your device, what do you get for the following?

IAudioClient::GetMixFormat()

IAudioClient::IsFormatSupported(x, y)

x in { AUDCLNT_SHAREMODE_EXCLUSIVE, AUDCLNT_SHAREMODE_SHARED }
y in { 2-channel, 6-channel w/ channel mask =3D 0, 6-channel w/ channel mas=
k =3D 0x3f, 6-channel w/ channel mask =3D 0x60f }

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@freelists.=
org> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jerry Evans
Sent: Friday, February 7, 2014 12:02 PM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: USB Audio/WASAPI channel limits?

Hi Matthew

The wchannelMask is clearly having more impact than I expected.

If I set a channel mask of 0x00 in device firmware and ensure channel mask =
in WAVEFORMATEXTENSIBLE is also zero , I can record data correctly using WA=
SAPI exclusive mode via the Portaudio libraries. I am getting data as expec=
ted, which is good.

Question arising are:

If one calls IAudioClient::IsFormatSupported() to check the device's native=
 format using a WAVEFORMATEXTENSIBLE struct where the channel mask does *no=
t* match that of the device, will this return a 'format not supported' erro=
r?

An well-known audio recording app is failing with the device, whilst others=
 work as expected with WASAPI mode. Is there any way I can determine if (an=
d what) channel mask it uses when checking in with the audi engine? Is ther=
e any ETW style log data? Or a KS spy?

Thanks.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@freelists.=
org> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eer=
de
Sent: 06 February 2014 19:35
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: USB Audio/WASAPI channel limits?

Nitpick: you probably want 0x60f instead of 0x3f or 0; that is, you want si=
de speakers rather than rear speakers or a "direct out" channel mask.

To try instantiating a pin in KS Studio, instantiate the filter first, then=
 right-click the streaming pin factory and choose "Instantiate." You will t=
hen be able to enter all the parameters to KsCreatePin.

[cid:image001.png@01CF2853.D030F620]

The speaker configuration wizard in the Sound control panel doesn't affect =
KS Studio; it just tells the Windows audio engine what to pass to KsCreateP=
in.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@freelists.=
org> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jerry Evans
Sent: Thursday, February 6, 2014 11:22 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: USB Audio/WASAPI channel limits?

Matthew, a little more exploration and things get more puzzling. For refere=
nce I'm using the cross paltform Portaudio library with exclusive WASAPI mo=
de as we also have to test this stuff on a Mac.


1.       Configure as 2 channel device, all is good. Device is enumerated c=
orrectly, stream precisely the sample pattern we have loaded into firmware.=
 Channel mask is 0

2.       Configure as 6 channel device, WASAPI baulks claiming sample forma=
t not supported etc (can send you more detail if interested)

3.       Configure as 6 channel device with channel mask set to 0x3F, c.

What Is even stranger is that if I run up Audacity (cross-platform audio ed=
itor) the device does not appear if WASAPI mode is selected. It *does* appe=
ar if DirectSound is specified as the audio engine. And to put things right=
 out there into the twilight zone, for DirectSound reverse the outcomes for=
 configurations 2 and 3 - i.e. DirectSound mode streams zeroes if, and only=
 if, the channel mask is set to zero.

Thoughts?

Many thanks.

KS Studio spew follows for 6 channel mode, apparently identical if channelm=
ask is set to 0x00 or to 0x3F.

( I'm unsure if the failed queries are an issue. Precisely the same is repo=
rted when I instantiate a filter for an M-Audio PCI soundcard and others):

------------------------------
Instantiating Filter: "Chordia 6CH"

------------------------------
Profiling filter "\\?\usb#vid_face&pid_0646&mi_00#8&3864bd55&0&0000#{6994ad=
04-93ef-11d0-a3cc-00a0c9223196}\global<file:///\\%3f\usb%23vid_face&pid_064=
6&mi_00%238&3864bd55&0&0000%23%7b6994ad04-93ef-11d0-a3cc-00a0c9223196%7d\gl=
obal>"
Getting property KSPROPERTY_TYPE_SETSUPPORT:
Filter Property set supported:
        {c3fa16d7-274e-4f2b-a63b-d5e10955fa27}
        KSPROPSETID_Pin
        KSPROPSETID_Audio
        KSPROPSETID_Topology
        KSPROPSETID_General
        {a60d8368-5324-4893-b020-c431a50bcbe3}

Getting event KSEVENT_TYPE_SETSUPPORT:
Filter Event set supported:

          Getting property KSPROPERTY_PIN_CTYPES
Getting property KSPROPSETID_Topology.KSPROPERTY_TOPOLOGY_CATEGORIES
          Getting property KSPROPERTY_TOPOLOGY_CATEGORIES
          Got KSPROPERTY_TOPOLOGY_CATEGORIES:
Getting property KSPROPSETID_Topology.KSPROPERTY_TOPOLOGY_NODES
          Getting property KSPROPERTY_TOPOLOGY_NODES
          Got KSPROPERTY_TOPOLOGY_NODES:
Getting property KSPROPSETID_Topology.KSPROPERTY_TOPOLOGY_CONNECTIONS
          Getting property KSPROPERTY_TOPOLOGY_CONNECTIONS
          Got KSPROPERTY_TOPOLOGY_CONNECTIONS:
          Getting property KSPROPERTY_TOPOLOGY_NAME
          Got KSPROPERTY_TOPOLOGY_NAME:
          Getting property KSPROPERTY_TOPOLOGY_NAME
          Got KSPROPERTY_TOPOLOGY_NAME:
SyncGetSupportedPropertySets: size query failed
Warning:  QueryPropSetSupport failed for node 0.  Defaulting to "supported =
propertyset" array from filter
SyncGetSupportedEventSets: size query failed
Warning:  QueryEventSetSupport failed for node 0.  Defaulting to "supported=
 eventset" array from filter
SyncGetSupportedPropertySets: size query failed
Warning:  QueryPropSetSupport failed for node 1.  Defaulting to "supported =
propertyset" array from filter
SyncGetSupportedEventSets: size query failed
Warning:  QueryEventSetSupport failed for node 1.  Defaulting to "supported=
 eventset" array from filter
PIN [0]    (pin 1 of 2)
          Getting property KSPROPERTY_PIN_INTERFACES
          Got KSPROPERTY_PIN_INTERFACES:
          Getting property KSPROPERTY_PIN_MEDIUMS
          Got KSPROPERTY_PIN_MEDIUMS:
          Getting property KSPROPERTY_PIN_DATARANGES
          Got KSPROPERTY_PIN_DATARANGES:
          Getting property KSPROPERTY_PIN_CONSTRAINEDDATARANGES
Failed to get property KSPROPSETID_Pin.KSPROPERTY_PIN_CONSTRAINEDDATARANGES
          Getting property KSPROPERTY_PIN_DATAFLOW
          Getting property KSPROPERTY_PIN_COMMUNICATION
          Getting property KSPROPERTY_PIN_CINSTANCES
          Getting property KSPROPERTY_PIN_GLOBALCINSTANCES
Failed to get property KSPROPSETID_Pin.KSPROPERTY_PIN_GLOBALCINSTANCES
          Getting property KSPROPERTY_PIN_NECESSARYINSTANCES
          Getting property KSPROPERTY_PIN_PHYSICALCONNECTION
Failed to get property KSPROPSETID_Pin.KSPROPERTY_PIN_PHYSICALCONNECTION
          Getting property KSPROPERTY_PIN_CATEGORY
          Getting property KSPROPERTY_PIN_NAME
          Got KSPROPERTY_PIN_NAME:
          Getting property KSPROPERTY_JACK_DESCRIPTION
Failed to get property KSPROPSETID_Jack.KSPROPERTY_JACK_DESCRIPTION
PIN [1]    (pin 2 of 2)
          Getting property KSPROPERTY_PIN_INTERFACES
          Got KSPROPERTY_PIN_INTERFACES:
          Getting property KSPROPERTY_PIN_MEDIUMS
          Got KSPROPERTY_PIN_MEDIUMS:
          Getting property KSPROPERTY_PIN_DATARANGES
          Got KSPROPERTY_PIN_DATARANGES:
          Getting property KSPROPERTY_PIN_CONSTRAINEDDATARANGES
Failed to get property KSPROPSETID_Pin.KSPROPERTY_PIN_CONSTRAINEDDATARANGES
          Getting property KSPROPERTY_PIN_DATAFLOW
          Getting property KSPROPERTY_PIN_COMMUNICATION
          Getting property KSPROPERTY_PIN_CINSTANCES
          Getting property KSPROPERTY_PIN_GLOBALCINSTANCES
Failed to get property KSPROPSETID_Pin.KSPROPERTY_PIN_GLOBALCINSTANCES
          Getting property KSPROPERTY_PIN_NECESSARYINSTANCES
          Getting property KSPROPERTY_PIN_PHYSICALCONNECTION
Failed to get property KSPROPSETID_Pin.KSPROPERTY_PIN_PHYSICALCONNECTION
          Getting property KSPROPERTY_PIN_CATEGORY
          Getting property KSPROPERTY_PIN_NAME
          Got KSPROPERTY_PIN_NAME:
          Getting property KSPROPERTY_JACK_DESCRIPTION
Failed to get property KSPROPSETID_Jack.KSPROPERTY_JACK_DESCRIPTION
          Getting property KSPROPERTY_PIN_CINSTANCES
          Getting property KSPROPERTY_PIN_NECESSARYINSTANCES
          Getting property KSPROPERTY_PIN_CINSTANCES
          Getting property KSPROPERTY_PIN_NECESSARYINSTANCES
  Node (0) KSNODETYPE_ADC (ADC)
      Supported PropertySets:
                 KSStudio does not recognize PropertySet GUID {c3fa16d7-274=
e-4f2b-a63b-d5e10955fa27} supported on Node 0
                                                This is not a driver bug.
        Filter reports support for PropertySet KSPROPSETID_Pin on node 0
        Filter reports support for PropertySet KSPROPSETID_Audio on node 0
        Filter reports support for PropertySet KSPROPSETID_Topology on node=
 0
        Filter reports support for PropertySet KSPROPSETID_General on node =
0
                 KSStudio does not recognize PropertySet GUID {a60d8368-532=
4-4893-b020-c431a50bcbe3} supported on Node 0
                                                This is not a driver bug.
      Supported EventSets:
  Node (1) KSNODETYPE_SRC (Sample Rate Converter)
      Supported PropertySets:
                 KSStudio does not recognize PropertySet GUID {c3fa16d7-274=
e-4f2b-a63b-d5e10955fa27} supported on Node 1
                                                This is not a driver bug.
        Filter reports support for PropertySet KSPROPSETID_Pin on node 1
        Filter reports support for PropertySet KSPROPSETID_Audio on node 1
        Filter reports support for PropertySet KSPROPSETID_Topology on node=
 1
        Filter reports support for PropertySet KSPROPSETID_General on node =
1
                 KSStudio does not recognize PropertySet GUID {a60d8368-532=
4-4893-b020-c431a50bcbe3} supported on Node 1
                                                This is not a driver bug.
      Supported EventSets:
Misc. Supported PropertySets
                 KSStudio does not recognize PropertySet GUID {c3fa16d7-274=
e-4f2b-a63b-d5e10955fa27} supported by the filter
                                                This is not a driver bug.
        Filter reports support for PropertySet KSPROPSETID_Audio
        Filter reports the following support for Property KSPROPERTY_AUDIO_=
MIC_ARRAY_GEOMETRY: 0x00000001 { KSPROPERTY_TYPE_GET}
          Getting property KSPROPERTY_AUDIO_MIC_ARRAY_GEOMETRY
          KSPROPERTY_AUDIO_MIC_ARRAY_GEOMETRY      get failed
        Filter reports support for PropertySet KSPROPSETID_General
        Filter reports the following support for Property KSPROPERTY_GENERA=
L_COMPONENTID: 0x00000001 { KSPROPERTY_TYPE_GET}
          Getting property KSPROPERTY_GENERAL_COMPONENTID
                 KSStudio does not recognize PropertySet GUID {a60d8368-532=
4-4893-b020-c431a50bcbe3} supported by the filter
                                                This is not a driver bug.


From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@freelists.=
org> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eer=
de
Sent: 05 February 2014 19:11
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: USB Audio/WASAPI channel limits?

Well, let's see...

You can use KS Studio to validate directly that instantiating a pin with a =
(say) 40-channel WAVEFORMATEX works.

If your data ranges advertise only a (say) 40-channel format, then I would =
expect shared-mode capture not to work at all, since Windows has no idea ho=
w to downmix 40 channels without a channel mask to, e.g., mono. Whether exc=
lusive-mode capture should work in this situation is less clear.

If you advertise both a (say) 2-channel format and a 40-channel format, the=
n I would expect shared-mode capture to work (in 2-channel mode) and I woul=
d also expect exclusive-mode capture to work in both 2-channel mode and 40-=
channel mode (with a zero channel mask.) If that is not the case I would op=
en a support ticket on http://support.microsoft.com/ since there's likely a=
 bug in the capture stack.

It would be helpful to know what function was failing (e.g., IAudioClient::=
IsFormatSupported(AUDCLNT_SHAREMODE_EXCLUSIVE, ...)) as well as the specifi=
c HRESULT that was being returned.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@freelists.=
org> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jerry Evans
Sent: Wednesday, February 5, 2014 10:55 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: USB Audio/WASAPI channel limits?

Yes. It is odd. The descriptors all appear valid.

Can I infer there are no explicit limitations in the stack? This is possibl=
y not a show stopper as 32+ channels is a large number in most practical co=
ntexts. However, and annoyingly, the audio system for another well-known pr=
oprietary OS seems happy to allow us to stream 80 channels ...

Thanks and any other suggestions welcomed.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@freelists.=
org> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eer=
de
Sent: 05 February 2014 18:36
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: USB Audio/WASAPI channel limits?

The "channel mask" section of a WAVEFORMATEXTENSIBLE is a 32-bit number. Pe=
rhaps you're tripping some wave format validation that assumes a valid WAVE=
FORMATEX only ever has fewer than 32 channels. (This sounds like a bug to m=
e, since a channel mask of zero is always valid.)

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@freelists.=
org> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Jerry Evans
Sent: Wednesday, February 5, 2014 10:27 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] USB Audio/WASAPI channel limits?

Greetings.

I'm developing a USB2 input only audio device that exposes a large (N >=3D =
24) number of channels.

The device is recognized and streams correctly on W7x64 at up to 32 channel=
s, 48K sample rate and both 16 and 24 bit sample sizes. Data is recorded ac=
curately using various commercial WASAPI hosts (Sonar/Tracktion)

Windows, however, appears to baulk at any larger channel count. The various=
 USB tracers (both stack and wire) show Windows sending a QUERY_CAPABILITIE=
S every second or so when device is configured with 32 channels. Anything a=
bove that and zero action.

Is there some hard limit or have I missed something?

Cheers.

Jerry

--_000_29fd5b6aa166408ebc9f23ea1a603408BLUPR03MB033namprd03pro_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml"; xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle23
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle24
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle25
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle26
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle27
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle28
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle29
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle30
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle31
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle32
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"blue" vlink=3D"purple">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">&gt; </span><span lang=
=3D"EN-GB" style=3D"color:#1F497D">The WASAPI app is querying the property =
store with PKEY_AudioEngine_DeviceFormat to check for the &#8216;native&#82=
17; format. This entry appears to not be created until
 (at least) the device is queried using the Sound applet &gt;&gt; Advanced =
Properties tab.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">An app can force this =
property into existence by calling IAudioClient::GetMixFormat().<o:p></o:p>=
</span></p>
<p class=3D"MsoNormal"><a name=3D"_MailEndCompose"><span style=3D"color:#1F=
497D"><o:p>&nbsp;</o:p></span></a></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b>From:</b> wdmaudiodev-bounce@xxxxxxxxxxxxx [mailt=
o:wdmaudiodev-bounce@xxxxxxxxxxxxx]
<b>On Behalf Of </b>Jerry Evans<br>
<b>Sent:</b> Thursday, February 13, 2014 2:03 AM<br>
<b>To:</b> wdmaudiodev@xxxxxxxxxxxxx<br>
<b>Subject:</b> [wdmaudiodev] Re: USB Audio/WASAPI channel limits?<o:p></o:=
p></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Hello M=
atthew<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Update:=
 Using an absolutely minimal exclusive WASAPI capture app on W7x64 I am get=
ting 48 channels of 48K/16bit audio. Which is great. The recorded audio is =
a bit perfect pattern of the 16bit samples
 originating in the device firmware.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">For any=
one else who may visit here:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">The fir=
mware channel mask is set to 0, as is the mask in the WAVEFORMATEXTENSIBLE =
used to query the supported formats.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">The WAS=
API app is querying the property store with PKEY_AudioEngine_DeviceFormat t=
o check for the &#8216;native&#8217; format. This entry appears to not be c=
reated until (at least) the device is queried using
 the Sound <o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">applet =
&gt;&gt; Advanced Properties tab.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Many th=
anks for the help.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Now. Wh=
at about USB Audio 2 class support?<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Cheers!=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style=3D"font-s=
ize:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">
<a href=3D"mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx";>wdmaudiodev-bounce@free=
lists.org</a> [<a href=3D"mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx";>mailto:w=
dmaudiodev-bounce@xxxxxxxxxxxxx</a>]
<b>On Behalf Of </b>Matthew van Eerde<br>
<b>Sent:</b> 07 February 2014 21:48<br>
<b>To:</b> <a href=3D"mailto:wdmaudiodev@xxxxxxxxxxxxx";>wdmaudiodev@freelis=
ts.org</a><br>
<b>Subject:</b> [wdmaudiodev] Re: USB Audio/WASAPI channel limits?<o:p></o:=
p></span></p>
</div>
</div>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">I would expect an app =
to always be able to use 0, whether the hardware is 0 or not.<o:p></o:p></s=
pan></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">I would expect an app =
to always be able to use the hardware value, whether it was 0 or not.<o:p><=
/o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">I would not expect an =
app to ever be able to use a non-zero value which does not match the hardwa=
re.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">If the number of chann=
els is more than&#8230; oh, say, 8&#8230; then I would expect the value to =
always be 0.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b>From:</b> <a href=3D"mailto:wdmaudiodev-bounce@fr=
eelists.org">
wdmaudiodev-bounce@xxxxxxxxxxxxx</a> [<a href=3D"mailto:wdmaudiodev-bounce@=
freelists.org">mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx</a>]
<b>On Behalf Of </b>Jerry Evans<br>
<b>Sent:</b> Friday, February 7, 2014 1:38 PM<br>
<b>To:</b> <a href=3D"mailto:wdmaudiodev@xxxxxxxxxxxxx";>wdmaudiodev@freelis=
ts.org</a><br>
<b>Subject:</b> [wdmaudiodev] Re: USB Audio/WASAPI channel limits?<o:p></o:=
p></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Matthew=
, indeed. Thanks.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">I will =
try this next roll. Is your expectation that masks must match?<o:p></o:p></=
span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">The 1.0=
 spec we get &#8220;If none of the bits in wChannelConfigare set, then all =
channels have non-predefined spatial positions.&#8221; (3.7.2.3). We can so=
urce more than 16 bits worth of channels so I cannot
 see this field can used used in any meaningful way (?)<o:p></o:p></span></=
p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style=3D"font-s=
ize:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">
</span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev-bounce@freelists.=
org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahom=
a&quot;,&quot;sans-serif&quot;">wdmaudiodev-bounce@xxxxxxxxxxxxx</span></a>=
</span><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot=
;sans-serif&quot;">
 [</span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev-bounce@freelist=
s.org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tah=
oma&quot;,&quot;sans-serif&quot;">mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx</=
span></a></span><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&qu=
ot;,&quot;sans-serif&quot;">]
<b>On Behalf Of </b>Matthew van Eerde<br>
<b>Sent:</b> 07 February 2014 21:07<br>
<b>To:</b> </span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev@freeli=
sts.org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;T=
ahoma&quot;,&quot;sans-serif&quot;">wdmaudiodev@xxxxxxxxxxxxx</span></a></s=
pan><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sa=
ns-serif&quot;"><br>
<b>Subject:</b> [wdmaudiodev] Re: USB Audio/WASAPI channel limits?<o:p></o:=
p></span></p>
</div>
</div>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">It&#8217;s probably po=
ssible to set a breakpoint in IAudioClient::IsFormatSupported, but let&#821=
7;s not go there yet.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">If you set the channel=
 mask to 0x60f in firmware, I would expect both 0x0 and 0x60f to work in th=
e WAVEFORMATEXTENSIBLE. Let me know if that&#8217;s not the case.<o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">On your device, what d=
o you get for the following?<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">IAudioClient::GetMixFo=
rmat()<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">IAudioClient::IsFormat=
Supported(x, y)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">x in { AUDCLNT_SHAREMO=
DE_EXCLUSIVE, AUDCLNT_SHAREMODE_SHARED }<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">y in { 2-channel, 6-ch=
annel w/ channel mask =3D 0, 6-channel w/ channel mask =3D 0x3f, 6-channel =
w/ channel mask =3D 0x60f }<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b>From:</b> <span lang=3D"EN-GB"><a href=3D"mailto:=
wdmaudiodev-bounce@xxxxxxxxxxxxx"><span lang=3D"EN-US">wdmaudiodev-bounce@f=
reelists.org</span></a></span> [<span lang=3D"EN-GB"><a href=3D"mailto:wdma=
udiodev-bounce@xxxxxxxxxxxxx"><span lang=3D"EN-US">mailto:wdmaudiodev-bounc=
e@xxxxxxxxxxxxx</span></a></span>]
<b>On Behalf Of </b>Jerry Evans<br>
<b>Sent:</b> Friday, February 7, 2014 12:02 PM<br>
<b>To:</b> <span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev@xxxxxxxxxxxxx=
"><span lang=3D"EN-US">wdmaudiodev@xxxxxxxxxxxxx</span></a></span><br>
<b>Subject:</b> [wdmaudiodev] Re: USB Audio/WASAPI channel limits?<o:p></o:=
p></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Hi Matt=
hew<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">The wch=
annelMask is clearly having more impact than I expected.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">If I se=
t a channel mask of 0x00 in device firmware and ensure channel mask in WAVE=
FORMATEXTENSIBLE is also zero , I can record data correctly using WASAPI ex=
clusive mode via the Portaudio libraries.
 I am getting data as expected, which is good.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Questio=
n arising are:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">If one =
calls IAudioClient::IsFormatSupported() to check the device&#8217;s native =
format using a WAVEFORMATEXTENSIBLE struct where the channel mask does *<b>=
not</b>* match that of the device, will this
 return a &#8216;format not supported&#8217; error?<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">An well=
-known audio recording app is failing with the device, whilst others work a=
s expected with WASAPI mode. Is there any way I can determine if (and what)=
 channel mask it uses when checking in
 with the audi engine? Is there any ETW style log data? Or a KS spy?<o:p></=
o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Thanks.=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style=3D"font-s=
ize:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">
</span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev-bounce@freelists.=
org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahom=
a&quot;,&quot;sans-serif&quot;">wdmaudiodev-bounce@xxxxxxxxxxxxx</span></a>=
</span><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot=
;sans-serif&quot;">
 [</span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev-bounce@freelist=
s.org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tah=
oma&quot;,&quot;sans-serif&quot;">mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx</=
span></a></span><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&qu=
ot;,&quot;sans-serif&quot;">]
<b>On Behalf Of </b>Matthew van Eerde<br>
<b>Sent:</b> 06 February 2014 19:35<br>
<b>To:</b> </span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev@freeli=
sts.org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;T=
ahoma&quot;,&quot;sans-serif&quot;">wdmaudiodev@xxxxxxxxxxxxx</span></a></s=
pan><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sa=
ns-serif&quot;"><br>
<b>Subject:</b> [wdmaudiodev] Re: USB Audio/WASAPI channel limits?<o:p></o:=
p></span></p>
</div>
</div>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Nitpick: you probably =
want 0x60f instead of 0x3f or 0; that is, you want side speakers rather tha=
n rear speakers or a &#8220;direct out&#8221; channel mask.<o:p></o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">To try instantiating a=
 pin in KS Studio, instantiate the filter first, then right-click the strea=
ming pin factory and choose &#8220;Instantiate.&#8221; You will then be abl=
e to enter all the parameters to KsCreatePin.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><img bo=
rder=3D"0" width=3D"710" height=3D"355" id=3D"_x0000_i1029" src=3D"cid:imag=
e001.png@01CF289F.EC79F380" alt=3D"cid:image001.png@01CF2853.D030F620"></sp=
an><span style=3D"color:#1F497D"><o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">The speaker configurat=
ion wizard in the Sound control panel doesn&#8217;t affect KS Studio; it ju=
st tells the Windows audio engine what to pass to KsCreatePin.<o:p></o:p></=
span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b>From:</b> <span lang=3D"EN-GB"><a href=3D"mailto:=
wdmaudiodev-bounce@xxxxxxxxxxxxx"><span lang=3D"EN-US">wdmaudiodev-bounce@f=
reelists.org</span></a></span> [<span lang=3D"EN-GB"><a href=3D"mailto:wdma=
udiodev-bounce@xxxxxxxxxxxxx"><span lang=3D"EN-US">mailto:wdmaudiodev-bounc=
e@xxxxxxxxxxxxx</span></a></span>]
<b>On Behalf Of </b>Jerry Evans<br>
<b>Sent:</b> Thursday, February 6, 2014 11:22 AM<br>
<b>To:</b> <span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev@xxxxxxxxxxxxx=
"><span lang=3D"EN-US">wdmaudiodev@xxxxxxxxxxxxx</span></a></span><br>
<b>Subject:</b> [wdmaudiodev] Re: USB Audio/WASAPI channel limits?<o:p></o:=
p></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Matthew=
, a little more exploration and things get more puzzling. For reference I&#=
8217;m using the cross paltform Portaudio library with exclusive WASAPI mod=
e as we also have to test this stuff on a Mac.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in"><span lang=3D"EN=
-GB" style=3D"color:#1F497D">1.</span><span lang=3D"EN-GB" style=3D"font-si=
ze:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&quot;;color:#1=
F497D">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=3D"EN-GB" style=3D"color:#1F497D">Configure as 2 channel =
device, all is good. Device is enumerated correctly, stream precisely the s=
ample pattern we have loaded into firmware. Channel mask is 0<o:p></o:p></s=
pan></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in"><span lang=3D"EN=
-GB" style=3D"color:#1F497D">2.</span><span lang=3D"EN-GB" style=3D"font-si=
ze:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&quot;;color:#1=
F497D">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=3D"EN-GB" style=3D"color:#1F497D">Configure as 6 channel =
device, WASAPI baulks claiming sample format not supported etc (can send yo=
u more detail if interested)<o:p></o:p></span></p>
<p class=3D"MsoListParagraph" style=3D"text-indent:-.25in"><span lang=3D"EN=
-GB" style=3D"color:#1F497D">3.</span><span lang=3D"EN-GB" style=3D"font-si=
ze:7.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&quot;;color:#1=
F497D">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=3D"EN-GB" style=3D"color:#1F497D">Configure as 6 channel =
device with channel mask set to 0x3F, c.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">What Is=
 even stranger is that if I run up Audacity (cross-platform audio editor) t=
he device does not appear if WASAPI mode is selected. It *<b>does</b>* appe=
ar if DirectSound is specified as the
 audio engine. And to put things right out there into the twilight zone, fo=
r DirectSound reverse the outcomes for configurations 2 and 3 &#8211; i.e. =
DirectSound mode streams zeroes if, and only if, the channel mask is set to=
 zero.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Thought=
s?<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Many th=
anks.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">KS Stud=
io spew follows for 6 channel mode, apparently identical if channelmask is =
set to 0x00 or to 0x3F.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">( I&#82=
17;m unsure if the failed queries are an issue. Precisely the same is repor=
ted when I instantiate a filter for an M-Audio PCI soundcard and others):<o=
:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">-------=
-----------------------<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Instant=
iating Filter: &quot;Chordia 6CH&quot;<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">-------=
-----------------------<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Profili=
ng filter &quot;</span><span lang=3D"EN-GB"><a href=3D"file:///\\%3f\usb%23=
vid_face&amp;pid_0646&amp;mi_00%238&amp;3864bd55&amp;0&amp;0000%23%7b6994ad=
04-93ef-11d0-a3cc-00a0c9223196%7d\global">\\?\usb#vid_face&amp;pid_0646&amp=
;mi_00#8&amp;3864bd55&amp;0&amp;0000#{6994ad04-93ef-11d0-a3cc-00a0c9223196}=
\global</a><span style=3D"color:#1F497D">&quot;
<o:p></o:p></span></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Getting=
 property KSPROPERTY_TYPE_SETSUPPORT:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Filter =
Property set supported:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {c3fa16d7-274e-4f2b-a63b-d5e10955fa27}
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KSPROPSETID_Pin
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KSPROPSETID_Audio
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KSPROPSETID_Topology
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KSPROPSETID_General
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{a60d8368-5324-4893-b020-c431a50bc=
be3}
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Getting=
 event KSEVENT_TYPE_SETSUPPORT:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Filter =
Event set supported:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_CTYPES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Getting=
 property KSPROPSETID_Topology.KSPROPERTY_TOPOLOGY_CATEGORIES<o:p></o:p></s=
pan></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_TOPOLOGY_CATEGORIES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_TOPOLOGY_CAT=
EGORIES:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Getting=
 property KSPROPSETID_Topology.KSPROPERTY_TOPOLOGY_NODES<o:p></o:p></span><=
/p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_TOPOLOGY_NODES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_TOPOLOGY_NOD=
ES:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Getting=
 property KSPROPSETID_Topology.KSPROPERTY_TOPOLOGY_CONNECTIONS<o:p></o:p></=
span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_TOPOLOGY_CONNECTIONS<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_TOPOLOGY_CON=
NECTIONS:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_TOPOLOGY_NAME<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_TOPOLOGY_NAM=
E:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_TOPOLOGY_NAME<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_TOPOLOGY_NAM=
E:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">SyncGet=
SupportedPropertySets: size query failed<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Warning=
:&nbsp; QueryPropSetSupport failed for node 0.&nbsp; Defaulting to &quot;su=
pported propertyset&quot; array from filter<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">SyncGet=
SupportedEventSets: size query failed<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Warning=
:&nbsp; QueryEventSetSupport failed for node 0.&nbsp; Defaulting to &quot;s=
upported eventset&quot; array from filter<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">SyncGet=
SupportedPropertySets: size query failed<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Warning=
:&nbsp; QueryPropSetSupport failed for node 1.&nbsp; Defaulting to &quot;su=
pported propertyset&quot; array from filter<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">SyncGet=
SupportedEventSets: size query failed<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Warning=
:&nbsp; QueryEventSetSupport failed for node 1.&nbsp; Defaulting to &quot;s=
upported eventset&quot; array from filter<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">PIN [0]=
&nbsp;&nbsp;&nbsp; (pin 1 of 2)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_INTERFACES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_PIN_INTERFAC=
ES:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_PIN_MEDIUMS<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_PIN_MEDIUMS:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_PIN_DATARANGES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_PIN_DATARANG=
ES:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_PIN_CONSTRAINEDDATARANGES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Failed =
to get property KSPROPSETID_Pin.KSPROPERTY_PIN_CONSTRAINEDDATARANGES<o:p></=
o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_DATAFLOW<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_COMMUNICATION<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_CINSTANCES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_GLOBALCINSTANCES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Failed =
to get property KSPROPSETID_Pin.KSPROPERTY_PIN_GLOBALCINSTANCES<o:p></o:p><=
/span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_NECESSARYINSTANCES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_PHYSICALCONNECTION<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Failed =
to get property KSPROPSETID_Pin.KSPROPERTY_PIN_PHYSICALCONNECTION<o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp; =
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPROPERTY=
_PIN_CATEGORY<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_NAME<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_PIN_NAME:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_JACK_DESCRIPTION<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Failed =
to get property KSPROPSETID_Jack.KSPROPERTY_JACK_DESCRIPTION<o:p></o:p></sp=
an></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">PIN [1]=
&nbsp;&nbsp;&nbsp; (pin 2 of 2)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_INTERFACES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_PIN_INTERFAC=
ES:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_PIN_MEDIUMS<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_PIN_MEDIUMS:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_PIN_DATARANGES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_PIN_DATARANG=
ES:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_PIN_CONSTRAINEDDATARANGES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Failed =
to get property KSPROPSETID_Pin.KSPROPERTY_PIN_CONSTRAINEDDATARANGES<o:p></=
o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_DATAFLOW<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_COMMUNICATION<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_CINSTANCES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_GLOBALCINSTANCES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Failed =
to get property KSPROPSETID_Pin.KSPROPERTY_PIN_GLOBALCINSTANCES<o:p></o:p><=
/span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_NECESSARYINSTANCES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_PHYSICALCONNECTION<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Failed =
to get property KSPROPSETID_Pin.KSPROPERTY_PIN_PHYSICALCONNECTION<o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_CATEGORY<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_NAME<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Got KSPROPERTY_PIN_NAME:
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_JACK_DESCRIPTION<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Failed =
to get property KSPROPSETID_Jack.KSPROPERTY_JACK_DESCRIPTION<o:p></o:p></sp=
an></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_CINSTANCES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_NECESSARYINSTANCES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_CINSTANCES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Getting property KSPROPERTY=
_PIN_NECESSARYINSTANCES<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp; =
Node (0) KSNODETYPE_ADC (ADC)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp; Supported PropertySets:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; &nbsp;KSStudio does not recognize PropertySet GUID {c3fa16d7-274e-4f2b-=
a63b-d5e10955fa27} supported on Node 0<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This is not a driver bug=
.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports support for PropertySet =
KSPROPSETID_Pin on node 0<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports support for PropertySet =
KSPROPSETID_Audio on node 0<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports support for PropertySet =
KSPROPSETID_Topology on node 0<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports support for PropertySet =
KSPROPSETID_General on node 0<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; &nbsp;KSStudio does not recognize PropertySet GUID {a60d8368-5324-4893-=
b020-c431a50bcbe3} supported on Node 0<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This is not a driver bug=
.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp; Supported EventSets:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp; =
Node (1) KSNODETYPE_SRC (Sample Rate Converter)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp; Supported PropertySets:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; &nbsp;KSStudio does not recognize PropertySet GUID {c3fa16d7-274e-4f2b-=
a63b-d5e10955fa27} supported on Node 1<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This is not a driver bug=
.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports support for PropertySet =
KSPROPSETID_Pin on node 1<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports support for PropertySet =
KSPROPSETID_Audio on node 1<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports support for PropertySet =
KSPROPSETID_Topology on node 1<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports support for PropertySet =
KSPROPSETID_General on node 1<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; &nbsp;KSStudio does not recognize PropertySet GUID {a60d8368-5324-4893-=
b020-c431a50bcbe3} supported on Node 1<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This is not a driver bug=
.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp; Supported EventSets:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Misc. S=
upported PropertySets<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; &nbsp;KSStudio does not recognize PropertySet GUID {c3fa16d7-274e-4f2b-=
a63b-d5e10955fa27} supported by the filter<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This is not a driver bug=
.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports support for PropertySet =
KSPROPSETID_Audio<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports the following support fo=
r Property KSPROPERTY_AUDIO_MIC_ARRAY_GEOMETRY: 0x00000001 { KSPROPERTY_TYP=
E_GET}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_AUDIO_MIC_ARRAY_GEOMETRY<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KSPROPERTY_AUDIO_MIC_ARRAY_=
GEOMETRY&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;get failed<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports support for PropertySet =
KSPROPSETID_General<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Filter reports the following support fo=
r Property KSPROPERTY_GENERAL_COMPONENTID: 0x00000001 { KSPROPERTY_TYPE_GET=
}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Getting property KSPRO=
PERTY_GENERAL_COMPONENTID<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; &nbsp;KSStudio does not recognize PropertySet GUID {a60d8368-5324-4893-=
b020-c431a50bcbe3} supported by the filter<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This is not a driver bug=
.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style=3D"font-s=
ize:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">
</span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev-bounce@freelists.=
org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahom=
a&quot;,&quot;sans-serif&quot;">wdmaudiodev-bounce@xxxxxxxxxxxxx</span></a>=
</span><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot=
;sans-serif&quot;">
 [</span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev-bounce@freelist=
s.org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tah=
oma&quot;,&quot;sans-serif&quot;">mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx</=
span></a></span><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&qu=
ot;,&quot;sans-serif&quot;">]
<b>On Behalf Of </b>Matthew van Eerde<br>
<b>Sent:</b> 05 February 2014 19:11<br>
<b>To:</b> </span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev@freeli=
sts.org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;T=
ahoma&quot;,&quot;sans-serif&quot;">wdmaudiodev@xxxxxxxxxxxxx</span></a></s=
pan><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sa=
ns-serif&quot;"><br>
<b>Subject:</b> [wdmaudiodev] Re: USB Audio/WASAPI channel limits?<o:p></o:=
p></span></p>
</div>
</div>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">Well, let&#8217;s see&=
#8230;<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">You can use KS Studio =
to validate directly that instantiating a pin with a (say) 40-channel WAVEF=
ORMATEX works.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">If your data ranges ad=
vertise only a (say) 40-channel format, then I would expect shared-mode cap=
ture not to work at all, since Windows has no idea how to downmix 40 channe=
ls without a channel mask to, e.g.,
 mono. Whether exclusive-mode capture should work in this situation is less=
 clear.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">If you advertise both =
a (say) 2-channel format and a 40-channel format, then I would expect share=
d-mode capture to work (in 2-channel mode) and I would also expect exclusiv=
e-mode capture to work in both 2-channel
 mode and 40-channel mode (with a zero channel mask.) If that is not the ca=
se I would open a support ticket on
</span><span lang=3D"EN-GB"><a href=3D"http://support.microsoft.com/";><span=
 lang=3D"EN-US">http://support.microsoft.com/</span></a><span style=3D"colo=
r:#1F497D">
</span></span><span style=3D"color:#1F497D">since there&#8217;s likely a bu=
g in the capture stack.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">It would be helpful to=
 know what function was failing (e.g., IAudioClient::IsFormatSupported(AUDC=
LNT_SHAREMODE_EXCLUSIVE, &#8230;)) as well as the specific HRESULT that was=
 being returned.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b>From:</b> <span lang=3D"EN-GB"><a href=3D"mailto:=
wdmaudiodev-bounce@xxxxxxxxxxxxx"><span lang=3D"EN-US">wdmaudiodev-bounce@f=
reelists.org</span></a></span> [<span lang=3D"EN-GB"><a href=3D"mailto:wdma=
udiodev-bounce@xxxxxxxxxxxxx"><span lang=3D"EN-US">mailto:wdmaudiodev-bounc=
e@xxxxxxxxxxxxx</span></a></span>]
<b>On Behalf Of </b>Jerry Evans<br>
<b>Sent:</b> Wednesday, February 5, 2014 10:55 AM<br>
<b>To:</b> <span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev@xxxxxxxxxxxxx=
"><span lang=3D"EN-US">wdmaudiodev@xxxxxxxxxxxxx</span></a></span><br>
<b>Subject:</b> [wdmaudiodev] Re: USB Audio/WASAPI channel limits?<o:p></o:=
p></p>
</div>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Yes. It=
 is odd. The descriptors all appear valid.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Can I i=
nfer there are no explicit limitations in the stack? This is possibly not a=
 show stopper as 32&#43; channels is a large number in most practical conte=
xts. However, and annoyingly, the audio system
 for another well-known proprietary OS seems happy to allow us to stream 80=
 channels &#8230;<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D">Thanks =
and any other suggestions welcomed.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB" style=3D"color:#1F497D"><o:p>&n=
bsp;</o:p></span></p>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style=3D"font-s=
ize:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">
</span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev-bounce@freelists.=
org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tahom=
a&quot;,&quot;sans-serif&quot;">wdmaudiodev-bounce@xxxxxxxxxxxxx</span></a>=
</span><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot=
;sans-serif&quot;">
 [</span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev-bounce@freelist=
s.org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;Tah=
oma&quot;,&quot;sans-serif&quot;">mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx</=
span></a></span><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&qu=
ot;,&quot;sans-serif&quot;">]
<b>On Behalf Of </b>Matthew van Eerde<br>
<b>Sent:</b> 05 February 2014 18:36<br>
<b>To:</b> </span><span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev@freeli=
sts.org"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-family:&quot;T=
ahoma&quot;,&quot;sans-serif&quot;">wdmaudiodev@xxxxxxxxxxxxx</span></a></s=
pan><span style=3D"font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sa=
ns-serif&quot;"><br>
<b>Subject:</b> [wdmaudiodev] Re: USB Audio/WASAPI channel limits?<o:p></o:=
p></span></p>
</div>
</div>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D">The &#8220;channel mas=
k&#8221; section of a WAVEFORMATEXTENSIBLE is a 32-bit number. Perhaps you&=
#8217;re tripping some wave format validation that assumes a valid WAVEFORM=
ATEX only ever has fewer than 32 channels. (This sounds
 like a bug to me, since a channel mask of zero is always valid.)<o:p></o:p=
></span></p>
<p class=3D"MsoNormal"><span style=3D"color:#1F497D"><o:p>&nbsp;</o:p></spa=
n></p>
<div>
<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in =
0in 0in">
<p class=3D"MsoNormal"><b>From:</b> <span lang=3D"EN-GB"><a href=3D"mailto:=
wdmaudiodev-bounce@xxxxxxxxxxxxx"><span lang=3D"EN-US">wdmaudiodev-bounce@f=
reelists.org</span></a></span> [<span lang=3D"EN-GB"><a href=3D"mailto:wdma=
udiodev-bounce@xxxxxxxxxxxxx"><span lang=3D"EN-US">mailto:wdmaudiodev-bounc=
e@xxxxxxxxxxxxx</span></a></span>]
<b>On Behalf Of </b>Jerry Evans<br>
<b>Sent:</b> Wednesday, February 5, 2014 10:27 AM<br>
<b>To:</b> <span lang=3D"EN-GB"><a href=3D"mailto:wdmaudiodev@xxxxxxxxxxxxx=
"><span lang=3D"EN-US">wdmaudiodev@xxxxxxxxxxxxx</span></a></span><br>
<b>Subject:</b> [wdmaudiodev] USB Audio/WASAPI channel limits?<o:p></o:p></=
p>
</div>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB">Greetings.<o:p></o:p></span></p=
>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB">I&#8217;m developing a USB2 inp=
ut only audio device that exposes a large (N &gt;=3D 24) number of channels=
.
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB">The device is recognized and st=
reams correctly on W7x64 at up to 32 channels, 48K sample rate and both 16 =
and 24 bit sample sizes. Data is recorded accurately using various commerci=
al WASAPI hosts (Sonar/Tracktion)<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB">Windows, however, appears to ba=
ulk at any larger channel count. The various USB tracers (both stack and wi=
re) show Windows sending a QUERY_CAPABILITIES every second or so when devic=
e is configured with 32 channels. Anything
 above that and zero action.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB">Is there some hard limit or hav=
e I missed something?<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB">Cheers.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-GB">Jerry<o:p></o:p></span></p>
</div>
</body>
</html>

--_000_29fd5b6aa166408ebc9f23ea1a603408BLUPR03MB033namprd03pro_--

--_004_29fd5b6aa166408ebc9f23ea1a603408BLUPR03MB033namprd03pro_
Content-Type: image/png; name="image001.png"
Content-Description: image001.png
Content-Disposition: inline; filename="image001.png"; size=50801;
        creation-date="Thu, 13 Feb 2014 17:45:00 GMT";
        modification-date="Thu, 13 Feb 2014 17:45:00 GMT"
Content-ID: <image001.png@01CF289F.EC79F380>
Content-Transfer-Encoding: base64

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
7bsAAAAASUVORK5CYII=

--_004_29fd5b6aa166408ebc9f23ea1a603408BLUPR03MB033namprd03pro_--
******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/

Other related posts: