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

  • From: Tim Roberts <timr@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Wed, 20 Feb 2008 10:39:43 -0800

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/

Other related posts: