[wdmaudiodev] Re: USB2.0 High speed audio device for windows XP

  • From: DJ Sisolak <dsisolak@xxxxxxxxxxxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 20 Feb 2008 13:07:19 -0800

Hello Tim, Carsten, et al,

There is no arbitrary limitation on the bandwidth of the Isoch pipes in the 
usbaudio.sys driver. The bandwidth restriction that Hakon mentioned previously 
in this thread is a bit misleading. In order for a USB Audio 1.0 device to run 
High Speed it must set the interval to 4 which is the 1ms distribution that the 
USB 1.1 bus (for which UAC 1.0 was written) depends on. Another limitation of 
UAC 1.0 on High Speed is that Async Endpoint Isoch Render will not work due to 
the redefinition of the interval value for the feedback pipe (Capture should be 
fine). The Interface descriptors themselves should be the USB 2.0 format, but 
those descriptors that are UAC specific should be UAC 1.0 compliant.

If you have any questions about this please feel free to contact me,
DJ Sisolak
Microsoft Corp.

This posting is provided "as is" with no warrantees, and confers no rights.

-----Original Message-----
From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Tim Roberts
Sent: Wednesday, February 20, 2008 10:40 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: USB2.0 High speed audio device for windows XP

carsten_30_@xxxxxx wrote:
>
> if you remember my first question, it was: "How can i make avssamp
> appear as a system audio device, because  I want to develop a kernel
> streaming driver (based on avssamp) wich deals with my USB2.0 audio
> device. But all trys to access this WDM KS driver as a system audio
> device fail. Waht must I do? Change topology, AddInterfaces in the
> inf, what is the way?" Your answer was(and sounds like an accusation):
> "May I ask why you are not using usbaudio.sys?  I  cannot imagine
> anyone in the last 5 years who would have designed a USB-based audio
> device that was not USB Audio Class compliant."

That was not an accusation.  When I asked that question, I did not
realize that usbaudio.sys contained a senseless, arbitrary, and
unjustified limitation on the bandwidth of the isochronous pipes.  There
is nothing in the USB Audio Class 1.0 spec that calls for such a
limitation, and it is astonishing to me that Microsoft would have
embedded it in the driver.

I have since learned that this limitation exists, which is why I have
now backed out of the conversation.


> What should I say? You can not imagine anyone in the last 5 years, who
> needs USB2.0 bandwidth with audio!!!

No, that's not the issue.  I can certainly imagine your bandwidth
requirements.  What I could not imagine was that the Microsoft
developers would intentionally limit a general-purpose driver like
usbaudio.sys without justification.


> And for me is usbaudio.sys useless!!!

Yes, now I see this.


> But, by the way, I have learned a lot about MS-Audio in the the last
> two weeks. But the more I know the more and more confusing became
> usbaudio.sys. here are some examples:
>
> If I report more than one sample rate in the Class Specific Audio
> Streaming Interface Descriptor,like this
>        ;; class specific Audio Streaming interface Descriptor
>         db   7               ;; length
>         db   CS_INTERFACE    ;; Type
>         db   GENERAL         ;; Sub type
>          db   2               ;; bTerminalLink (ID of Output Terminal)
>         db   1               ;; bDelay
>         dwi  1              ;; wFormat (PCM=0001)
>
>          ;; FormatDescriptor
>          db   0BH             ;; length
>         db   CS_INTERFACE    ;; Descriptor type
>         db   FORMAT_TYPE     ;; Sub Type (Format_Type)
>         db   FORMAT_TYPE_I   ;;
>         db   NumChannels     ;; # channels
>         db   2               ;; byte per subframe
>         db   16              ;; Bits per Sample
>         db   2               ;; #frequncies supportred
>         db  0x80,0xBB,0x00  ;; 48 khz
>         db  0xF0, 0x55, 0x00 ;; 22 Khz
>
> the device doesn't appear as a system audio device no more.

Do you remember the USB camera descriptor set I posted earlier in the
week?  It does this (in fact, it offers 7 options), and it appears as a
system audio device.  It includes the frequencies in increasing
numerical order, but I don't think that is required by the spec.

The length in your descriptor is incorrect.  The descriptor is 14 bytes
long, but you have the length as 11.  That will cause usbaudio.sys to
reject you.


> How will usbaudio.sys select one of the repoerted sample rates (i
> havn't found a request for this).

Ah, now THAT one I can answer, because I've just been monitoring an
exchange that does this.

The sampling frequency request is in 5.2.3.2.3.1 of the Audio Class
spec.  It's a class-specific endpoint request, with bRequest=SET_CUR,
wValue=SAMPLING_FREQ_CONTROL<<8 (which is 0x0100), wIndex set to the
streaming endpoint number, and a 3-byte data value containing the
sampling rate in Hz.

Oddly, we have one camera were this does get sent, and one where it does
not.  I'm not yet sure why.

--
Tim Roberts, timr@xxxxxxxxx
Providenza & Boekelheide, Inc.

******************

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/

******************

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: