[wdmaudiodev] Re: USB Audio Class 2.0

  • From: Børge Strand-Bergesen <borge.strand@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Thu, 13 Feb 2014 20:00:27 +0100

Hi Frank and Kevin,

I'm the HW guy on the Audio Widget project, see www.qnktc.com. We have an
open source Windows UAC2 ASIO driver. Ideally, we'd have a Windows UAC2
driver like the one on Mac and Linux. But since we don't, what I wish to do
next is gather enough force to make a fully fledgetd UAC2 driver and
release it under GPL. One centrally distributed device driver with the
potential of supporting all UAC2 hardware.

The 30-60 demographic has a lot of users who still prefer a PC over a
tablet, and who love their music.

My doctor is the perfect fit. He loves classical music. After trying a
couple different DACs he's ended up with quite the driver collection and
resulting dll version inconsistencies. Now he's in the market for a Mac to
play his music, even though he has no other use for one.

I have watched the HiEnd audio scene and built DACs for some years now.
People borrow and test each other's DACs the whole time. The lack of native
UAC2 drivers on Windows is the _single_ _largest_ _inhibitor_ of growth for
high resolution audio. Having to install a driver scares away a large chunk
of _today's_ customer base, and it prevents that customer base from
growing. DLL conflicts and crappy user interfaces push even more users into
the Mac camp, where things work out of the box. Getting the promised sample
rate in real life is important. ksps sells just like megapixles.

The hardware brand owners also have to struggle with the costly licensing
terms of commercial drivers. Those are actually among the largest
inhibitors of growth among those who supply to the early adopter users in
the DAC market.

The demand for UAC2 support on Win7 and onwards does not yet come from
Logitec and Sony. It comes from the little guy like me who sells a couple
hundred DACs to early adopters. Satisfy those, and HiFi brands like NAD and
Rotel will start selling to larger groups. Satisfy those, and the Logitecs
will follow. UAC2 support can easily be made a winning sales pitch for
Windows PCs.

I voluntare as a tester for any effort Microsoft decides to put into UAC2
support. And in the meantime I'll lend out DACs to people who wish to help
out with a GPL driver.


Best regards,
Borge



On Thu, Feb 13, 2014 at 6:08 PM, Kevin Halverson <kevin@xxxxxxxxxxxxx>wrote:

> As Mr. Yerrace made the open request for comments on why Microsoft should
> offer native USB Audio Class 2.0 support, I am responding here.
>
> USB Audio Class 2.0 support is important for a number of reasons.  First,
> the ability to run HS USB is becoming a more important issue as the number
> of new platforms shipped with USB controllers and root hubs which properly
> support FS USB devices properly diminishes on a nearly daily basis.
>  Second, USB Audio Class 1.0 precludes higher sample rate, high channel
> count audio which for many companies like ours, means that we have to
> provide our own USB Audio Class 2.0 drivers.  Third, the amount of
> maintenance necessary to keep custom drivers patched and working well
> across many different versions of Windows is a considerable challenge.  The
> final point is, we constantly hear from customer's that are looking to
> other host platforms running other operating systems just in order to get
> native USB Audio Class 2.0 support (and hence why we went to the time and
> expense of developing our own).
>
> While support of Audio Class 1.0 is important to support legacy hardware,
> it is fairly absurd that all these years later Microsoft still hasn't done
> what nearly every other operating system supplier has in terms of keeping
> current with audio requirements.  Certainly if a small company such as ours
> can accomplish this the task should be rather trivial for an industry power
> house such as Microsoft.
>
> I would love to read other's opinions on this subject.
>
> Kevin Halverson
> CTO
> High Resolution Technologies, LLC
>
>   ------------------------------
>  *From:* Frank Yerrace <Frank.Yerrace@xxxxxxxxxxxxx>
> *To:* "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
> *Sent:* Thursday, February 13, 2014 8:49 AM
> *Subject:* [wdmaudiodev] Re: USB Audio/WASAPI channel limits?
>
>  >Now. What about USB Audio 2 class support?
>
>  I had asked this list several years ago about level of interest in USB
> Audio 2 and reasons for the interest. I received some private responses as
> well as responses to this public list. Even though in-box support
> ultimately was not included in Windows 8, those responses were greatly
> appreciated and very helpful.
>
>  As you can imagine, we are constantly evaluating where to invest for
> future versions of Windows. I assume the interest in in-box USB Audio
> 2 support is still quite high. If interest has further increased or perhaps
> decreased for any reason, please don't hesitate to speak out (on this list
> or directly to me or Matthew).
>
>  Regards,
> Frank Yerrace
> Microsoft
>
>  Sent from Windows Mail
>
>   *From:* Jerry Evans <jerry@xxxxxxxxxxx>
> *Sent:* Thursday, February 13, 2014 2:03 AM
> *To:* wdmaudiodev@xxxxxxxxxxxxx
>
>   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
> audio 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
> WAVEFORMATEXTENSIBLE used to query the supported formats.
> The WASAPI app is querying the property store with
> PKEY_AudioEngine_DeviceFormat to check for the 'native' format. This entry
> appears to not be created 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@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx>]
> *On Behalf Of *Matthew van Eerde
> *Sent:* 07 February 2014 21:48
> *To:* 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
> does 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@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx>]
> *On Behalf Of *Jerry Evans
> *Sent:* Friday, February 7, 2014 1:38 PM
> *To:* 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 used in any meaningful way (?)
>
>
>  *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [
> mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx>]
> *On Behalf Of *Matthew van Eerde
> *Sent:* 07 February 2014 21:07
> *To:* wdmaudiodev@xxxxxxxxxxxxx
> *Subject:* [wdmaudiodev] Re: USB Audio/WASAPI channel limits?
>
> It's probably possible to set a breakpoint in
> IAudioClient::IsFormatSupported, but let's not go there yet.
>
> If you set the channel mask to 0x60f in firmware, I would expect both 0x0
> and 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 = 0, 6-channel w/ channel mask
> = 0x3f, 6-channel w/ channel mask = 0x60f }
>
>  *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [
> mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx>]
> *On Behalf Of *Jerry Evans
> *Sent:* Friday, February 7, 2014 12:02 PM
> *To:* 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
> WASAPI exclusive mode via the Portaudio libraries. I am getting data as
> expected, 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 **not** match that of the device, will this return a 'format not
> supported' error?
>
> 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 (and what) channel mask it uses when checking in with the audi engine?
> Is there any ETW style log data? Or a KS spy?
>
> Thanks.
>
>  *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [
> mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx>]
> *On Behalf Of *Matthew van Eerde
> *Sent:* 06 February 2014 19:35
> *To:* wdmaudiodev@xxxxxxxxxxxxx
> *Subject:* [wdmaudiodev] Re: USB Audio/WASAPI channel limits?
>
> Nitpick: you probably want 0x60f instead of 0x3f or 0; that is, you want
> side 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 then be able to enter all the parameters to KsCreatePin.
>
> [image: 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
> KsCreatePin.
>
>  *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [
> mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx>]
> *On Behalf Of *Jerry Evans
> *Sent:* Thursday, February 6, 2014 11:22 AM
> *To:* wdmaudiodev@xxxxxxxxxxxxx
> *Subject:* [wdmaudiodev] Re: USB Audio/WASAPI channel limits?
>
> Matthew, a little more exploration and things get more puzzling. For
> reference I'm using the cross paltform Portaudio library with exclusive
> WASAPI mode as we also have to test this stuff on a Mac.
>
> 1.       Configure as 2 channel device, all is good. Device is enumerated
> correctly, stream precisely the sample pattern we have loaded into
> firmware. Channel mask is 0
> 2.       Configure as 6 channel device, WASAPI baulks claiming sample
> format 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
> editor) the device does not appear if WASAPI mode is selected. It **does**
> appear 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
> channelmask is set to 0x00 or to 0x3F.
>
> ( I'm unsure if the failed queries are an issue. Precisely the same is
> reported 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#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\global"
>
> 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-274e-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-5324-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-274e-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-5324-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-274e-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_GENERAL_COMPONENTID: 0x00000001 { KSPROPERTY_TYPE_GET}
>           Getting property KSPROPERTY_GENERAL_COMPONENTID
>                  KSStudio does not recognize PropertySet GUID
> {a60d8368-5324-4893-b020-c431a50bcbe3} supported by the filter
>                                                 This is not a driver bug.
>
>
>  *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [
> mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx>]
> *On Behalf Of *Matthew van Eerde
> *Sent:* 05 February 2014 19:11
> *To:* 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
> how to downmix 40 channels without a channel mask to, e.g., mono. Whether
> exclusive-mode capture should work in this situation is less clear.
>
> If you advertise both a (say) 2-channel format and a 40-channel format,
> then I would expect shared-mode capture to work (in 2-channel mode) and I
> would 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
> open 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 specific HRESULT that was being returned.
>
>  *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [
> mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx>]
> *On Behalf Of *Jerry Evans
> *Sent:* Wednesday, February 5, 2014 10:55 AM
> *To:* 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
> possibly not a show stopper as 32+ channels is a large number in most
> practical contexts. However, and annoyingly, the audio system for another
> well-known proprietary OS seems happy to allow us to stream 80 channels ...
>
> Thanks and any other suggestions welcomed.
>
>  *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [
> mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx>]
> *On Behalf Of *Matthew van Eerde
> *Sent:* 05 February 2014 18:36
> *To:* wdmaudiodev@xxxxxxxxxxxxx
> *Subject:* [wdmaudiodev] Re: USB Audio/WASAPI channel limits?
>
> The "channel mask" section of a WAVEFORMATEXTENSIBLE is a 32-bit number.
> Perhaps you're tripping some wave format validation that assumes a valid
> WAVEFORMATEX only ever has fewer than 32 channels. (This sounds like a bug
> to me, since a channel mask of zero is always valid.)
>
>  *From:* wdmaudiodev-bounce@xxxxxxxxxxxxx [
> mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx>]
> *On Behalf Of *Jerry Evans
> *Sent:* Wednesday, February 5, 2014 10:27 AM
> *To:* wdmaudiodev@xxxxxxxxxxxxx
> *Subject:* [wdmaudiodev] USB Audio/WASAPI channel limits?
>
> Greetings.
>
> I'm developing a USB2 input only audio device that exposes a large (N >=
> 24) number of channels.
>
> The device is recognized and streams 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 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_CAPABILITIES every second or so when device is configured with 32
> channels. Anything above that and zero action.
>
> Is there some hard limit or have I missed something?
>
> Cheers.
>
> Jerry
>
>
>

PNG image

Other related posts: