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/